C语言实验9-11参考答案
- 格式:doc
- 大小:41.50 KB
- 文档页数:4
数组
上机题9.编写程序:从键盘输入一串整数保存到数组中,调用函数antitone()将数组反序输出。自定义函数void antitone(int a[],int n)实现将数组中的n个数据按逆序存放。
#include
#include
#define M 100
void antitone(int a[],int n)
{
int i,j;
int k;
i=0;
j=n-1;
while(i { k=a[i]; a[i]=a[j]; a[j]=k; i++; j--; } } void main() { int array[100]; int n,i,m; printf("请输入要输入整数的个数:"); scanf("%d",&n); memset(array,0,sizeof(array)); //数组初始化语句 printf("请输入整数:"); for(i=0;i scanf("%d",&array[i]); antitone(array,n); for(m=0;m { printf("%d\n",array[m]); } } 上机题10.已知某数列的前两项为2和3,其后每一项为其前两项之积。编程实现:从键盘输入一个整数x,判断并输出x最接近数列的第几项? #include int num(int n) { if (n==1) return 2; if (n==2) return 3; if (n>2) return (num(n-2)*num(n-1)); } int main() { int i,x; scanf("%d",&x); for (i=1;;++i) if(x-num(i)<=0) break; if (abs(x-num(i)) printf("%d",i); else printf("%d",i-1); return 0; } 上机题11.分别用函数和数组实现,输入10个学生5门课的成绩并完成如下功能: ⑴求每个学生的平均分。 ⑵求没门课程的平均分。 ⑶输出一张包括10个学生成绩的成绩单。 ⑷找出最高分数所对应的学生(学号)和课程。 ⑸分别统计5门课程都高于90分的学生人数。 #include void main() { int i,j,a[10][10]; float s1[10]={0}; float s2[10]={0}; int m=1; for(i=0;i<10;i++) { printf("请输入第%d个人的成绩\n",i+1); for(j=0;j<5;j++) { scanf("%d",&a[i][j]); } } for(i=0;i<10;i++) { for(j=0;j<5;j++) { s1[i]+=a[i][j]; if(i<5) { s2[i]+=(a[j][i]+a[9-j][i]); } } } printf("*\n"); for(i=0;i<10;i++) printf("第%d个人的平均成绩是%f\n",i+1,s1[i]/5); for(i=0;i<5;i++) printf("第%门课程的平均成绩是%f\n",i+1,s2[i]/10); for(i=0;i<40;i++) printf("**"); printf("\n"); printf("学号\t英语\t高数\tC语言\tVFP\tC++\n"); for(i=0;i<10;i++) { printf("%d\t",i); for(j=0;j<5;j++) { printf("%d\t",a[i][j]); } printf("\n"); } for(i=0;i<40;i++) printf("**"); float max=0; int k,l; for(i=0;i<10;i++) { for(j=0;j<5;j++) { if(a[i][j]>max) { max=a[i][j]; k=i; l=j; } } } printf("\n学号为%d的同学的第%d门课程的成绩%f分,最高\n",k,l+1,max); int n=0; for(i=0;i<10;i++) { m=0; for(j=0;j<5;j++) { if(a[i][j]>90) m++; } if(m==5) n++; } printf(" \n5门课程都高于90分的共有%d个\n",n); }