2012-2013学年二学期C语言期末考试试卷(A卷)
班级:___________学号:___________姓名:___________得分:___________ 题号 得分 阅卷 一 二 三 四 五 六 七 八 九 十 成绩 复核 题目部分,(卷面共有24题,100分,各大题标有题量和总分) 一、填空题(24小题,共100分)
1.
以下程序的功能是计算下面函数的值。请填空。 #include
float x,y,z,sum;
printf(“\\ninput x,y,z:\\n”);
scanf(“%f %f %f”,&x,&y,&z); sum=【1】;
printf(“sum=%f\\n”,sum); }
float f(float a,float b,float c) {
float value; value=【2】; return(value); } 2.
下面程序的功能是【1】,运行结果是【2】。 long fib(int g) {
switch(g) {
case 0: return 0; case 1:
case 2: return 1; }
return(fib(g-1)+fib(g-2)); }
main() {
long k; k=fib(7);
printf(“k=%d\\n”,k); }
3.
已定义一个含有30个元素的数组s,函数fav1的功能是按顺序分别赋予各元素从2开始的偶数,函数fav2则按顺序每五个元素求一个平均值,并将该值存放在数组w中。请填空。 #define SIZE 30 fav1(float s[]) {
int k,i;
for(k=2,i=0;i 【1】; k+=2; } } fav2(float s[],float w[]) { float sum; int k,i; sum=0.0; for(k=0,i=0;i sum+=s[i]; if((i+1)%5==0) { w[k]=sum/5; 【2】; k++; } } } main() { float s[SIZE],w[SIZE/5],sum; int i,k; fav1(s); fav2(s,w); } 4. 若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为:_____________。 (假设a[0][0]位于数组的第一个位置上。) 5. 下面程序可求出矩阵a的两条对角线上的元素之和。请填空。 main() { int a[3][3]={1,3,6,7,9,11,14,15,17},sum1=0,sum2=0,i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) if(i==j) sum1=sum1+a[i][j]; for(i=0;i<3;i++) for(【1】;【2】;j--) if((i+j)==2) sum2=sum2+a[i][j]; printf(“sum1=%d,sum2=%d\\n”,sum1,sum2); } 6. 下面程序以每行4个数据的形式输出a数组,请填空。 #define N 20 main() { int a[N],i; for(i=0;i if(【2】) 【3】 printf(“=”,a[i]); } printf(“\\n”); } 7. 有十个字符串。下面程序的功能是在每个字符串中,找出最大字符按一一对应的顺序放入一维数组a中,即第i个字符串中的最大字符放入a[i]中,输出每个字符串中的最大字符。请填空。 #include char s[10][20]; int a[10],i,j; for(i=0;i<10;i++) gets(s[i]); for(i=0;i<10;i++) { 【1】; for(j=1;s[i][j]!=?\\0?;j++) if(a[i] for(i=0;i<10;i++) printf(“%d %c”,i,a[i]); } 8. 假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为 。 9. 若s是int型变量,且s=6,则下面表达式的值为 . s%2+(s+1)%2 10. 设有以下结构体类型说明和变量定义,则变量a在内存中所占的字节数是________,变量p在内存中所占的字节数是___________。 struct stud {char num[6]; int s[4]; double ave; }a, *p; 11. printf函数的“格式控制”包括两部分,他们是______和______。 12. 在printf格式字符中,只能输出一个字符的格式字符是_________;用于输出字符串的格式字符是_________;以小数形式输出实数的格式字符是_________;以标准指数形式输出实数的格式字符是_________。 13. 以下程序实现输出x,y,z三个数中最大者,请在[ ]内填入正确的内容。 main() {int x=4,y=6,z=7; int[1]; if([2]) u=x; else u=y; if([3]) v=u; else v=z; printf(“v=%d”,v); } 14. 设y为int 型变量,请写出描述“y是奇数”的表达式 . 15. 若a=2,b=4,则表达式!(x=A、//(y=B、&&0的值是 . 16. C系统给整形变量分配的地址空间是___字节? 17. 有 int x=3, y=4, z=5; 则 A、表达式 !(x>y)+(y!=z) || (x+y) && (y-z) 的值为 。 B、表达式 x+y>z&&y==z 的值为 C、表达式 x||y+z&&y-z 的值为 D、表达式 !(x>y)&&!z||1 的值为 E、表达式 !(x==y)&&!(y==z)||0的值为 F、表达式 !(x+y)+z-1&&y+z/2的值为 18. 根据下式填空,将程序补充完整。 y=-1.0(x<0.0) 2.0/(x-1.0)(0.0 scanf(\if(【 】) y=-1.0; else if((【 】)&&(x!=1)) y=2.0/(x-1.0); else if(【 】) y=3.0/x; else y=4.0; printf(\19. 以下函数的功能是将一个字符串S的内容颠倒过来。 void reserve ( ___________ ) { int i, j, t; for (i=0,j=strlen(s)-1; ___________ ;i++,j--) { t=s[i]; s[i]=s[j]; s[j]=t;} } 20. 实常数123.457的规范化指数表示形式是_______。 21. 请填空完成以下程序: 计算 sum=1/1 + 1/2 + 1/3 + 1/4 + … +1/n ,其中n=1,2,3,…20。 main() {float sum , temp; int n , i ; n=20; sum=0.0; for( i =1 ;i < n ; i ++) {temp=1.0/ i ; _______________________________; } printf(“\\nsum的结果为:%f ”,sum); } 22. 表达式4>3 && 7<5-!0的值为_______。 23. char *p[10];这条语句的含义是:_________________________。 24. 假定x=10,则表达式x<=10?20:30的值为___________。 2012-2013学年二学期C语言期末考试试卷(A卷) 答案部分,(卷面共有24题,100.0分,各大题标有题量和总分) 一、填空题(24小题,共100分) 1.【1】f(x,x-y,x-z)+f(y,y-z,y-x)+f(z,z-x,z-y) 【2】sin(a)/((sin(b)*sin(c)) 2.【1】计算斐波拉契级数第7项的值 【2】k=13