第六章 函数作业
This commit is contained in:
parent
20d9330fe4
commit
ddb7f98b3f
54
06-1/1/README.md
Normal file
54
06-1/1/README.md
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
【问题描述】
|
||||||
|
|
||||||
|
输入两组正整数,每组整数不超过20个,并且每组整数中不存在重复数据,也不存在是另一个数据整数倍的数据。编写一个程序按下面要求合并两组整数并输出:
|
||||||
|
|
||||||
|
1. 合并时如果一个数据是另一个数据的整数倍,则剔除;若数据相同,则只保留一个;
|
||||||
|
|
||||||
|
2. 从小到大顺序输出合并后数据。
|
||||||
|
|
||||||
|
【输入形式】
|
||||||
|
|
||||||
|
先从控制台输入第一组整数的个数,然后在下一行输入第一组整数,各整数之间以一个空格分隔;然后按照同样的方式输入第二组整数。
|
||||||
|
|
||||||
|
【输出形式】
|
||||||
|
|
||||||
|
在标准输出上按从小到大顺序输出合并后的数据,各整数之间以一个空格分隔,最后一个整数后也可以有一个空格。
|
||||||
|
|
||||||
|
【输入样例】
|
||||||
|
|
||||||
|
```
|
||||||
|
4
|
||||||
|
25 93 61 2
|
||||||
|
6
|
||||||
|
5 22 3 67 13 61
|
||||||
|
```
|
||||||
|
|
||||||
|
【输出样例】
|
||||||
|
|
||||||
|
```
|
||||||
|
2 3 5 13 61 67
|
||||||
|
```
|
||||||
|
|
||||||
|
【样例说明】
|
||||||
|
|
||||||
|
第一组整数有4个,第二组有6个,其中第一组整数中的25是第二组中的5的倍数,所以丢弃掉不合并。同样第一组中的93和第二组中的22也不合并到最后的数据中。另外第一组的61和第二组的61重复,只保留一个。最后按照从小到大的顺序输出合并后的数据为:`2 3 5 13 61 67` 。
|
||||||
|
|
||||||
|
【评分标准】
|
||||||
|
|
||||||
|
该题要求按照从小到大的顺序输出合并后的数据,共有5个测试点,提交程序文件名为 `merge.c` 。
|
||||||
|
|
||||||
|
# 运行结果
|
||||||
|
|
||||||
|
成功通过编译, 且无编译警告
|
||||||
|
|
||||||
|
共有测试数据:5
|
||||||
|
平均占用内存:1.945K
|
||||||
|
平均CPU时间:0.00607S
|
||||||
|
平均墙钟时间:0.00609S
|
||||||
|
|
||||||
|
测试数据 评判结果
|
||||||
|
测试数据1 完全正确
|
||||||
|
测试数据2 完全正确
|
||||||
|
测试数据3 完全正确
|
||||||
|
测试数据4 完全正确
|
||||||
|
测试数据5 完全正确
|
58
06-1/1/merge.c
Normal file
58
06-1/1/merge.c
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int test_if_have_value(int a[100],int n,int value) {
|
||||||
|
for (int i = 0; i < n; i++) {
|
||||||
|
if (a[i] == value)return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
int a[100],b[100],c[100],n1,n2,n_=0,temp;
|
||||||
|
scanf("%d",&n1);
|
||||||
|
for(int i=0;i<n1;i++){
|
||||||
|
scanf("%d",&a[i]);
|
||||||
|
}
|
||||||
|
scanf("%d",&n2);
|
||||||
|
for(int i=0;i<n2;i++){
|
||||||
|
scanf("%d",&b[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int i=0;i<n1;i++){
|
||||||
|
temp = 1;
|
||||||
|
for(int j=0;j<n2;j++){
|
||||||
|
if(!(a[i]%b[j])) temp = 0;
|
||||||
|
if(a[i]==b[j]) temp = 1;
|
||||||
|
}
|
||||||
|
if(temp&&(!test_if_have_value(c,n_,a[i]))){
|
||||||
|
c[n_]=a[i];
|
||||||
|
n_++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for(int i=0;i<n2;i++){
|
||||||
|
temp = 1;
|
||||||
|
for(int j=0;j<n1;j++){
|
||||||
|
if(!(b[i]%a[j])) temp = 0;
|
||||||
|
if(b[i]==a[j]) temp = 1;
|
||||||
|
}
|
||||||
|
if(temp&&(!test_if_have_value(c,n_,b[i]))){
|
||||||
|
c[n_]=b[i];
|
||||||
|
n_++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int i=0;i<n_;i++){
|
||||||
|
for(int j=i;j<n_;j++){
|
||||||
|
if(c[i]>c[j]){
|
||||||
|
temp=c[i];
|
||||||
|
c[i]=c[j];
|
||||||
|
c[j]=temp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int i=0;i<n_;i++) {
|
||||||
|
printf("%d ", c[i]);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
64
06-1/2/README.md
Normal file
64
06-1/2/README.md
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
【问题描述】
|
||||||
|
|
||||||
|
所谓“回文数”是指具有如下性质的整数:一个整数,当它的各位数字逆序排列,形成的整数与原整数相同,这样的数称为回文数。例如,素数11,373,其各位数字对换位置后仍然为11,373,因此这两个整数均为回文数。编写函数int loop(int x),判断一个整数是否为回文数,如果x是回文数则返回1,否则返回0。编写程序loop.c,接收控制台输入的两个整数a,b。调用loop函数输出a到b之间(包括a和b)的所有回文数
|
||||||
|
|
||||||
|
【输入形式】
|
||||||
|
|
||||||
|
控制台输入两个整数a和b(必有`a<b`),以空格分隔。
|
||||||
|
|
||||||
|
【输出形式】
|
||||||
|
|
||||||
|
输出有若干行,每行有一个a和b之间的回文数。输出各行上的数字不重复,且从小至大依次按序输出。
|
||||||
|
|
||||||
|
【样例输入】
|
||||||
|
|
||||||
|
```
|
||||||
|
3 120
|
||||||
|
```
|
||||||
|
|
||||||
|
【样例输出】
|
||||||
|
|
||||||
|
```
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
||||||
|
6
|
||||||
|
7
|
||||||
|
8
|
||||||
|
9
|
||||||
|
11
|
||||||
|
22
|
||||||
|
33
|
||||||
|
44
|
||||||
|
55
|
||||||
|
66
|
||||||
|
77
|
||||||
|
88
|
||||||
|
99
|
||||||
|
101
|
||||||
|
111
|
||||||
|
```
|
||||||
|
|
||||||
|
【样例说明】
|
||||||
|
|
||||||
|
输入整数a=3,b=120,要求输出所有[3, 120]之间的回文数。按升序分行输出所有符合题意的整数。
|
||||||
|
|
||||||
|
【评分标准】
|
||||||
|
|
||||||
|
结果完全正确得20分,每个测试点4分。提交程序名为:`loop.c` 。
|
||||||
|
|
||||||
|
# 运行结果
|
||||||
|
|
||||||
|
成功通过编译, 且无编译警告
|
||||||
|
|
||||||
|
共有测试数据:5
|
||||||
|
平均占用内存:1.945K
|
||||||
|
平均CPU时间:0.00541S
|
||||||
|
平均墙钟时间:0.00543S
|
||||||
|
|
||||||
|
测试数据 评判结果
|
||||||
|
测试数据1 完全正确
|
||||||
|
测试数据2 完全正确
|
||||||
|
测试数据3 完全正确
|
||||||
|
测试数据4 完全正确
|
||||||
|
测试数据5 完全正确
|
22
06-1/2/loop.c
Normal file
22
06-1/2/loop.c
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#include<stdio.h>
|
||||||
|
|
||||||
|
int isPalindrome(int n) {
|
||||||
|
int m = n;
|
||||||
|
int r = 0;
|
||||||
|
while (n > 0) {
|
||||||
|
r = r * 10 + n % 10;
|
||||||
|
n /= 10;
|
||||||
|
}
|
||||||
|
return r == m;
|
||||||
|
}
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
int a,b;
|
||||||
|
scanf("%d %d",&a,&b);
|
||||||
|
for(int i=a;i<=b;i++){
|
||||||
|
if(isPalindrome(i)){
|
||||||
|
printf("%d\n",i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
18
06-1/3/3.c
Normal file
18
06-1/3/3.c
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#include<stdio.h>
|
||||||
|
|
||||||
|
int main(){
|
||||||
|
int n;
|
||||||
|
|
||||||
|
scanf("%d",&n);
|
||||||
|
|
||||||
|
for(int i=1;i<=n;i++){
|
||||||
|
for(int j=1;j<=n-i;j++){
|
||||||
|
printf(" ");
|
||||||
|
}
|
||||||
|
for(int j=1;j<=i;j++){
|
||||||
|
printf("%d ",i);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
39
06-1/3/README.md
Normal file
39
06-1/3/README.md
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
【问题描述】
|
||||||
|
|
||||||
|
打印数字金字塔。输入层数,输出金字塔。
|
||||||
|
|
||||||
|
【输入形式】
|
||||||
|
|
||||||
|
【输出形式】
|
||||||
|
|
||||||
|
【样例输入】
|
||||||
|
|
||||||
|
```
|
||||||
|
3
|
||||||
|
```
|
||||||
|
|
||||||
|
【样例输出】
|
||||||
|
|
||||||
|
```
|
||||||
|
1
|
||||||
|
|
||||||
|
2 2
|
||||||
|
|
||||||
|
3 3 3
|
||||||
|
```
|
||||||
|
|
||||||
|
【样例说明】
|
||||||
|
|
||||||
|
【评分标准】
|
||||||
|
|
||||||
|
# 运行结果
|
||||||
|
|
||||||
|
成功通过编译, 且无编译警告
|
||||||
|
|
||||||
|
共有测试数据:1
|
||||||
|
平均占用内存:1.953K
|
||||||
|
平均CPU时间:0.00434S
|
||||||
|
平均墙钟时间:0.00434S
|
||||||
|
|
||||||
|
测试数据 评判结果
|
||||||
|
测试数据1 完全正确
|
13
06-1/4/4.c
Normal file
13
06-1/4/4.c
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#include<stdio.h>
|
||||||
|
#include<math.h>
|
||||||
|
|
||||||
|
float dist(float x1, float y1, float x2, float y2){
|
||||||
|
return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
|
||||||
|
}
|
||||||
|
int main(){
|
||||||
|
float x1,y1,x2,y2;
|
||||||
|
|
||||||
|
scanf("%f %f %f %f",&x1,&y1,&x2,&y2);
|
||||||
|
printf("%.2f\n", dist(x1,y1,x2,y2));
|
||||||
|
return 0;
|
||||||
|
}
|
43
06-1/4/README.md
Normal file
43
06-1/4/README.md
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
【问题描述】
|
||||||
|
|
||||||
|
给定平面任意两点坐标(x1,y1)和(x2,y2),设计dist(x1,y1,x2,y2),求这两点之间的距离(坐标值为实数,距离值保留2位小数)
|
||||||
|
|
||||||
|
【输入形式】
|
||||||
|
|
||||||
|
一行输入两点的坐标值,一共4个实数,实数间用空格间隔;
|
||||||
|
|
||||||
|
【输出形式】
|
||||||
|
|
||||||
|
一行输出距离值,保留2位小数
|
||||||
|
|
||||||
|
【样例输入】
|
||||||
|
|
||||||
|
```
|
||||||
|
1 0 0 2
|
||||||
|
```
|
||||||
|
|
||||||
|
【样例输出】
|
||||||
|
|
||||||
|
```
|
||||||
|
2.24
|
||||||
|
```
|
||||||
|
|
||||||
|
【样例说明】
|
||||||
|
|
||||||
|
【评分标准】
|
||||||
|
|
||||||
|
# 运行结果
|
||||||
|
|
||||||
|
成功通过编译, 且无编译警告
|
||||||
|
|
||||||
|
共有测试数据:5
|
||||||
|
平均占用内存:1.996K
|
||||||
|
平均CPU时间:0.00505S
|
||||||
|
平均墙钟时间:0.00506S
|
||||||
|
|
||||||
|
测试数据 评判结果
|
||||||
|
测试数据1 完全正确
|
||||||
|
测试数据2 完全正确
|
||||||
|
测试数据3 完全正确
|
||||||
|
测试数据4 完全正确
|
||||||
|
测试数据5 完全正确
|
3
06-1/README.md
Normal file
3
06-1/README.md
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# 第六章 函数作业
|
||||||
|
|
||||||
|
> 作业时间: 2021-11-21 10:01:00 至 2021-12-18 10:00:00
|
@ -4,10 +4,14 @@ add_executable(c0604 05/4/c0604.c)
|
|||||||
add_executable(c12 05-1/1/c12.c)
|
add_executable(c12 05-1/1/c12.c)
|
||||||
add_executable(example1b 05-1/2/example1b.c)
|
add_executable(example1b 05-1/2/example1b.c)
|
||||||
add_executable(example2b 05-1/3/example2b.c)
|
add_executable(example2b 05-1/3/example2b.c)
|
||||||
add_executable(4 05-1/4/4.c)
|
add_executable(4 06-1/4/4.c)
|
||||||
add_executable(5 05-1/5/5.c)
|
add_executable(5 05-1/5/5.c)
|
||||||
add_executable(exam1 05-1/6/exam1.c)
|
add_executable(exam1 05-1/6/exam1.c)
|
||||||
add_executable(1 06/1/1.c)
|
add_executable(1 06/1/1.c)
|
||||||
add_executable(2 06/2/2.c)
|
add_executable(2 06/2/2.c)
|
||||||
add_executable(isprime 06/3/isprime.c)
|
add_executable(isprime 06/3/isprime.c)
|
||||||
add_executable(c31 06/4/c31.c)
|
add_executable(c31 06/4/c31.c)
|
||||||
|
add_executable(merge 06-1/1/merge.c)
|
||||||
|
add_executable(loop 06-1/2/loop.c)
|
||||||
|
add_executable(3 06-1/3/3.c)
|
||||||
|
add_executable(4 06-1/4/4.c)
|
||||||
|
@ -61,3 +61,8 @@ A repo to record my study life.
|
|||||||
- [2. 统计学生成绩,再将成绩按照从大到小的顺序输出](https://github.com/xtaodada/C-study/tree/master/06/2)
|
- [2. 统计学生成绩,再将成绩按照从大到小的顺序输出](https://github.com/xtaodada/C-study/tree/master/06/2)
|
||||||
- [3. 素数判断](https://github.com/xtaodada/C-study/tree/master/06/3)
|
- [3. 素数判断](https://github.com/xtaodada/C-study/tree/master/06/3)
|
||||||
- [4. 整数各位数求和](https://github.com/xtaodada/C-study/tree/master/06/4)
|
- [4. 整数各位数求和](https://github.com/xtaodada/C-study/tree/master/06/4)
|
||||||
|
- [第六章 函数作业](https://github.com/xtaodada/C-study/tree/master/06-1)
|
||||||
|
- [1. 合并整数](https://github.com/xtaodada/C-study/tree/master/06-1/1)
|
||||||
|
- [2. 回文数](https://github.com/xtaodada/C-study/tree/master/06-1/2)
|
||||||
|
- [3. 打印数字金字塔。输入层数,输出金字塔](https://github.com/xtaodada/C-study/tree/master/06-1/3)
|
||||||
|
- [4. 实验9——函数基础——两点间的距离](https://github.com/xtaodada/C-study/tree/master/06-1/4)
|
||||||
|
Loading…
Reference in New Issue
Block a user