第六章 函数作业

This commit is contained in:
xtaodada 2021-11-25 14:24:57 +08:00
parent 20d9330fe4
commit ddb7f98b3f
No known key found for this signature in database
GPG Key ID: EE4DC37B55E24736
11 changed files with 325 additions and 2 deletions

54
06-1/1/README.md Normal file
View 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
View 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
View File

@ -0,0 +1,64 @@
【问题描述】
所谓“回文数”是指具有如下性质的整数一个整数当它的各位数字逆序排列形成的整数与原整数相同这样的数称为回文数。例如素数11373其各位数字对换位置后仍然为11373因此这两个整数均为回文数。编写函数int loop(int x)判断一个整数是否为回文数如果x是回文数则返回1否则返回0。编写程序loop.c接收控制台输入的两个整数ab。调用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=3b=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
View 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
View 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
View 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
View 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
View File

@ -0,0 +1,43 @@
【问题描述】
给定平面任意两点坐标x1y1x2y2设计distx1y1x2y2求这两点之间的距离坐标值为实数距离值保留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
View File

@ -0,0 +1,3 @@
# 第六章 函数作业
> 作业时间: 2021-11-21 10:01:00 至 2021-12-18 10:00:00

View File

@ -4,10 +4,14 @@ add_executable(c0604 05/4/c0604.c)
add_executable(c12 05-1/1/c12.c)
add_executable(example1b 05-1/2/example1b.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(exam1 05-1/6/exam1.c)
add_executable(1 06/1/1.c)
add_executable(2 06/2/2.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)

View File

@ -61,3 +61,8 @@ A repo to record my study life.
- [2. 统计学生成绩,再将成绩按照从大到小的顺序输出](https://github.com/xtaodada/C-study/tree/master/06/2)
- [3. 素数判断](https://github.com/xtaodada/C-study/tree/master/06/3)
- [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)