注意:1.命题时请适当留答题位置。请用深蓝墨水书写,字、图清晰,书写不出边框。 2.答题演草时不许使用附加纸,试卷背面可用于演草。试卷不得拆开。
填空(12分,每空1分): 1. C语言的函数可分为主函数main、标准库函数和__自定义函数_______。 2. 表达式53%8/2+4.0*(8/3) 的值是_10.000000_____。 3. C语言规定,变量的标识符只能由字母、数字和下划线组成,且不能以_数字_开头。 4. 若定义int m=7,n=18; 则表达式n%=m-m%4的值是___2___。 5. 已知 int a[5] = { 1, 3, 5, 7, 9}; int *p = a+2; 则表达式 *p*a[3] 的值是____35______。 6. 语句printf("\142");的结果为:___b_______________ 。 7. 若有int a,b,c; a=36; b=036; c=0x36;,则printf("%d %d %d\n",a,b,c); 的输出结果是____36 30 54_______。 8. 若函数头部定义为 int *foo(),则该函数中return 语句返回的数据类型是_int *___。 9. 已知:int a[2][3]={20,40,60,80,100,120},*p; p=&a[1][0]; p=p+2; 则*p的值为________120________。 10. 若int b = 4; 则表达式 (b > 1)&& ! ('B'< 67) 的值为____0_______。 | ||||||
教务处印制 共 8 页 (第 1 页)
11. 假设int型变量占两个字节的存储单元,若有定义:int x[5]={10,20,30}; 则数组x在内存中所占字节数为__6_________。 12. 设有定义 struct date { int day ; char month ; int year ; } dd , *pd = &dd ; 请写出使用指针变量pd引用结构体成员 dd .day 的表示形式_pd->day或(*pd).day___。
阅读程序写结果(32分,每小题4分): 1. #include <stdio.h> int main() { int a,b,c,m; printf("Enter three integers:"); 1. m=50 scanf("%d%d%d",&a,&b,&c); if(a<=b) m=a; else m=b; if(c<m) m=c; printf("m=%d\n",m); return 0; } 输入:60 70 50<回车> 2. #include <stdio.h> int main( ) { char k; int i; 2. second first second for(i=1;i<3;i++) { scanf("%c",&k); switch(k) { case '5': printf("first\n"); case '8': printf("second\n"); } } return 0; } 输入:85<回车> | ||||||
教务处印制 共 8 页 (第 2 页)
3. #include <stdio.h> void fun(int n) { if(n==1) printf("@\n"); else 3. @ #@ ##@ ###@ GOOD LUCK! { printf("#"); fun(n-1); } } int main() { int i,j=0; for(i=1;i<5;i++) fun(i); printf("GOOD LUCK!"); return 0; } 4. #include <stdio.h> void add(int x, int y, int z) { z = x + y; x = x * x; y = y * y; 4.(1)x=10 y=20 z=30 (2)x=100,y=400,z=30 (3)x=10,y=20,z=30 printf("(2) x = %d y = %d z = %d\n", x, y, z); } int main() { int x = 10, y = 20, z = 30; printf("(1) x = %d y = %d z = %d\n", x, y, z); add(x, y, z); printf("(3) x = %d y = %d z = %d\n", x, y, z); return 0; } 5.Xi’an University 16 5. #include <stdio.h> #include<string.h> int main() { char str1[30], str2[] = “Xi’an University”; scanf(“%s”, str1); strcpy(str1, str2); printf(“\n %s\n %d\n”, str1, strlen(str2)); return 0; } 输入:you are a student<回车> |
教务处印制 共 8 页 (第 3 页)
6.m=0 6. #include <stdio.h> int main() { int a[3][3]={{9,10},{2,5,8},{4,7}}; int i=0,j=0,m; m=a[0][0]; for(i=0;i<3;i++) for(j=0;j<3;j++) if(a[i][j]<m) m=a[i][j]; printf("m=%d\n",m); return 0; } 7. #include <stdio.h> struct stri_type { char ch1; 7. 163, a char ch2; struct { int a; int b; }ins; }; int main() { struct stri_type ci; ci.ch1='B'; ci.ch2='a'; ci.ins.a=ci.ch1+ci.ch2; ci.ins.b=ci.ins.a-ci.ch1; 8. 125 22 printf("%d,%c\n",ci.ins.a,ci.ins.b); return 0; } 8. #include <stdio.h> void f(int x, int *y) { x=x%10; *y=*y/10+x; } int main() { int a=125,b=176,*c; c=&b; f(a,c); printf("%d,%d\n",a,b); return 0; } |
教务处印制 共 8 页 (第 4 页)
补充程序(24分,每空2分): 1. 主函数调fun计算1+1/2!+1/3!+...+1/30!的和。 #include <stdio.h> _float fun()_______________________ int main() { int n; float s; __s = fun()______________________ printf("1+1/2!+1/3!...+1/30!=%f\n",s); return 0; } float fun( ) { int n; float t=1; __float a = 0;______________________ for(n=1;n<=30;n++) { _t = t/i;_______________________ a+=t; } return a ; } 2. 输出1000以内的素数。素数是只能被1 和本身整除的数。为减少循环次数,只需对数n用2~去除来判断该数是否素数。 #include<stdio.h> __#include<math.h>______________________ int main() { int n,i,k; for(n=2; _n<1000________________; n++) { k=sqrt(n); for(i=2;i<=k;i++) ___if( n%i==0)________________________________ break; if(i>k) _printf(”是素数”);__________________________________ return 0; } | ||||||
教务处印制 共 8 页 (第 5 页)
3. 将十进制整数base转换成二进制。 #include <stdio.h> int main ( ) { int i=0,base,j,num[20] ; scanf(“%d”,&base) ; do { num[i]= _base%2_______________________; base=_____base/2___________________; i++; } while (base!=0); for (__j=i-1______________________;_j>=0_______________________ ;j--) printf(“%d”,num[j]) ; return 0; }
改错题(共10分,每个错误2分): 以下程序的功能:从filename1中将内容读出,显示在屏幕上。其中文件名由键盘输入。(共5个错误点,请在错误的位置处划线,并且题后的表格里改正这些错误) #include <stdio.h> int main() { FILE fp1; FILE *fp int ch; char fname1[30]; printf("Input the file name :"); scanf("%c",fname1); %c to %s if ((fp1=fopen(fname1,”w”))==NULL) “w” to “r” { printf("Can't open source file:%s \n",fname1); return 1; } while((ch=getchar())!=EOF) while( ( ch=fgetc(fp) ) != EOF ) put(ch); putchar(ch) fclose(fp1); return 0; } | ||||||
教务处印制 共 8 页 (第 6 页)
编程一(7分): 1. 编程实现:输入一元二次方程的三个系数,求解一元二次方程的实根,无实根时不用求虚根,给出相应提示信息即可。 | ||||||
教务处印制 共 8 页 (第 7 页)
编程二(15分): 1. 编程实现:从键盘输入10名学生的信息,包括学号、姓名、成绩,用一个排序函数sort完成学生成绩降序排列,并输出学生排序后的结果。 | ||||||||||||||||||||||||||
答案1 | ||||||||||||||||||||||||||
注意:1.命题时请适当留答题位置。请用深蓝墨水书写,字、图清晰,书写不出边框。 2.答题演草时不许使用附加纸,试卷背面可用于演草。试卷不得拆开。
填空题(18分,一空一分,请将答案写在对应横线上) (1)设有如下定义int x = 6; 执行语句; 后x = 0 。 (2)三种基本的程序结构是顺序结构, 循环 结构和 分支 结构。 (3)C语言的基本数据类型包括整型、浮点型和 字符型 。 (4)表达式!(2<4)||(5<3?0:10)的值是_1_c十十程序设计语言_ _;表达式 (int)5.5/(float)2 的值是 2.500000 。 (5)试写出数学式的C语言表达式。 sqrt(b*b – 4*a*c) (6)break语句和continue语句是C语言中提供的用来处理循环的非正常出口情况的语句。其中,提前结束循环的执行,使流程转到循环的下一条语句是 break 语句;提前结束本次循环,开始下一次循环的语句是 continue 语句。 (7)函数的参数分为两种,其中当一个函数被调用时,需要在调用处给出相应的参数,这些参数称为 实际参数 。 (8)for ( i = 3; i <= 99; i+=5 ) 的循环次数是 20 次。 (9)已知变量 float x=1.2, y=-23.41;要使输出为 x=1.20,y=-23.4(中间无空格),则应使用语句 printf( “ x=%.2f,y=%.1f ”, x, y)。 (10)已知 int n; FILE *fp; fp已以文本方式打开文件读,试写出语句表示:从文件fp中读出一个 | ||||||||||||||||||||||||||
教务处印制 共 9 页 (第 1 页)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论