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);

}