C语言入门题精选五题答案(有问题可以发表评论,博主可解答)

xiaoxiao2022-07-06  37

C语言入门题精选五题答案(有问题可以发表评论,博主可解答)

1.水仙花数2.打印杨辉三角3.找书本4.学生成绩排序5.交换数组中最大值和最小值

`1.水仙花数`` Problem Description 春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=13+53+3^3。 现在要求输出所有在m和n范围内的水仙花数。 Input 输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)。 Output 对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,每个数据后面均有空格; 如果给定的范围内不存在水仙花数,则输出no; 每个测试实例的输出占一行。 Sample Input 100 120 300 380 Sample Output no 370 371

#include<stdio.h> int main() { int m,n,f,i,a,b,c; while(~scanf("%d%d",&m,&n)) { f=0; for(i=m;i<=n;i++) { a=i;//个位 b=i/100;//百位 c=(i0-a)/10;//十位 if(iaaa+bbb+ccc) { f=1; printf("%d ",i); } } if(f0) printf(“no”);

printf("\n"); } return 0;

} `2.打印杨辉三角`` Problem Description 还记得中学时候学过的杨辉三角吗?具体的定义这里不再描述,你可以参考以下的图形: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 Input 输入数据包含多个测试实例,每个测试实例的输入只包含一个正整数n(1<=n<=30),表示将要输出的杨辉三角的层数。 Output 对应于每一个输入,请输出相应层数的杨辉三角,每一层的整数后带一个空格,每一个杨辉三角后面加一个空行。 Sample Input 2 3 Sample Output 1 1 1

1 1 1 1 2 1

#include<stdio.h> int main() { int n,i,j,a[30][30]; while(~scanf("%d",&n)) {

for(i=0;i<n;i++) { a[i][0]=1; a[i][i]=1; } for(i=2;i<n;i++) for(j=1;j<i;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=0;i<n;i++) { for(j=0;j<=i;j++) printf("%d ",a[i][j]); printf("\n"); } printf("\n"); } return 0; }

`3 找书本`` Problem Description 新学期开学了,学校发了很多新书,请你帮忙找一下,给定的某本书是否已经发了。 Input 输入数据第一行是整数n(表示有n本书,n<10),接下来的n行是n个书名,接下来是要找的书名。n=0时输入结束,不作处理。 Output 如果找到该书,输出“Yes”,否则输出“No”。 Sample Input 4 Java Program C Program College English Network C Program 0 Sample Output Yes

#include<stdio.h> #include<string.h> void main() { char a[10][100],b[100]; int n,i,f; while(~scanf("%d%*c",&n)) { if(n==0) break; for(i=0;i<n;i++) gets(a[i]); f=0; gets(b); for(i=0;i<n;i++) { if(strcmp(a[i],b)0) { f=1; printf(“Yes\n”); break; } } if(f0) printf(“No\n”); } } 4.学生成绩排序``` Problem Description 使用结构数组存储学生信息,信息包括了姓名name和成绩score,按学生成绩从高到低排序,并输出。 Input 输入文件首先包含一个整数n(n<10),表示有n个学生,然后是n行学生记录,一行代表一个学生,每个学生的name的长度小于15,且score为int型。

Output 输出按成绩排序后学生的相关记录,每个信息之间用两个空格分隔,一个学生信息输出一行,如下。 Sample Input 6 GongJing 80 LiuNa 90 ZhouLi 86 ChenHai 95 SunYan 76 WangHong 98 Sample Output name:WangHong score:98 name:ChenHai score:95 name:LiuNa score:90 name:ZhouLi score:86 name:GongJing score:80 name:SunYan score:76

#include<stdio.h> struct student { char name[16]; int s; }; void main() { int n,i,j; struct student a[100]; struct student t; scanf("%d",&n); for(i=0;i<n;i++) scanf("%s%d",&a[i].name,&a[i].s); for(i=1;i<n;i++) { for(j=0;j<n-i;j++) { if(a[j].s<a[j+1].s) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } for(i=0;i<n;i++) printf(“name:%s score:%d\n”,a[i].name,a[i].s); }

`5``交换数组中最大值和最小值

Problem Description 找出一个一维数组中的最大值,最小值,并交换其位置。 Input 输入整数N,代表下面有N行测试数据 接下来的N行,每行的第一个整数代表该数组的长度M,接下来的M个整数代表该数组中的值。每个数组的数值用空格分隔。 数组的长度不会超过100 Output 交换每一个数组中最大值与最小值后,输出每一行的数组值,用空格分隔。即:每行最后一个数值后面没有空格 Sample Input 2 4 3 4 5 7 7 565 78 342 56 -878 33 5 Sample Output 7 4 5 3 -878 78 342 56 565 33 5

#include int main() { int n,m,i,a[100],max,min,mini,maxi; scanf("%d",&n); while(n–) { maxi=mini=0; scanf("%d",&m); for(i=0;i<m;i++) scanf("%d",&a[i]); max=min=a[0]; for(i=0;i<m;i++) { if(a[i]>max) { max=a[i]; maxi=i; } if(a[i]<min) { min=a[i]; mini=i; } } a[maxi]=min; a[mini]=max; printf("%d",a[0]); for(i=1;i<m;i++) printf(" %d",a[i]); printf("\n");

} return 0;

}

转载请注明原文地址: https://www.6miu.com/read-4968531.html

最新回复(0)