二级C语言模拟题2018年(17) (总分100,考试时间90分钟)
一、程序填空题
1. 程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。函数fun的功能是将形参a中的数据进行修改,把修改后的数据作为函数值返回主函数进行输出。 例如:传给形参a的数据中,学号、姓名和三门课的成绩依次是:10001、\"ZhangSan\"、95、80、88,修改后的数据应为:10002、\"LiSi\"、96、81、89。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 不得增行或删行,也不得更改程序的结构! 给定源程序:
#include<stdio.h> #include<string.h> struet student{ long sno;
char name[10]; float score[3]; };
/**********found**********/ ______fun(struct student a) {int i;
a.sno=10002;
/**********found**********/ strcpy(______,\"LiSi\");
/**********found**********/ for(i=0;i<3;i++)______+=1; return a; }
main()
{struct student s={10001,\"ZhangSan\",95,80,88},t; int i;
printf(\"\\nThe original data:\\n\");
printf(\"\\nNo:%ld Name:%sinScores:\ for(i=0;i<3;i++)printf(\"%6.2f\ printf(\"\\n\"); t=fun(s);
printf(\"\\nThe data after modified:\\n\");
printf(\"\\nNo:%ld Name:%s\\nSeores:\ for(i=0;i<3;i++)printf(\"%6.2f\ printf(\"\\n\"); }
二、程序改错题
1. 假定整数数列中的数不重复,并存放在数组中。给定程序中函数fun的功能是:删除数列中值为x的元素。n中存放的是数列中元素的个数。 请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 给定源程序:
#include<stdio.h> #define N 20
int fun(int*a,int n,int x) {int p=0,i; a[n]=x;
while(x!=a[p]) p=p+1;
/**********found**********/ if(P==n)return-1; else
{for(i=p;i<n-1;i++)
/**********found**********/ a[i+1]=a[i]; return n-1; } }
main()
{int w[N]={-3,0,1,5,7,99,10,15,30,90},x,n,i; n=10;
printf(\"The original data:\\n\");
for(i=0;i<n;i++)printf(\"%5d\
printf(\"\\nInput x(to delete):\");scanf(\"%d\ printf(\"Delete:%d\\n\ n=fun(w,n,x);
if(n==-1)printf(\"***Not be found!***\\n\\n\"); else
{printf(\"The data after deleted:\\n\"); for(i=0;i<n;i++)
printf(\"%5d\ } }
三、程序设计题
1. 函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。
例如,当a=45,b=12时,调用该函数后,c=1524。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
给定源程序:
#include<stdio.h>
void fun(int a,int b,long*c) { }
main()
{int a,b;long c; printf(\"Input a b:\"); scanf(\"%d%d\ fun(a,b,&c);
printf(\"The result is:%ld\\n\ }
因篇幅问题不能全部显示,请点此查看更多更全内容