专业班级 姓名 学号
题 号 | 一 | 二 | 三 | 四 | 五 | 六 | 七 | 八 | 合计 |
得 分 | |||||||||
评卷人 |
一、单项选择题(每小题2分,共40分)
1.在一个C语言程序中,有并且只能有一个( )函数。
A. main函数 B.自定义函数 C.外部函数 D.内部函数
2.一个C语言程序,总是从( )函数开始执行。
A. main函数 B.自定义函数 C.外部函数 D.内部函数
3.下列标识符中,不能用作变量名的是( )。
A. _1234_ B. _1_2 C. int_2_ D. 2_int_
4.下列字符常量不合法的是( )。
A. ‘2’ B. ‘\t’ C. ‘ab’ D. ‘ \\n’
5.执行以下语句后的输出结果为( )。
int x; float y; y=3.6; x=(int)y+10; printf(“x=%d,y=%f”,x,y);
A. x=13.6,y=3.600000 B. x=13,y=3.600000 C. x=13,y=3 D. x=13,y=3.6
6.以下哪种变量类型在C语言中不存在 ( )。
A. 整型变量 B.实型变量 C. 字符串变量 D.字符变量
7.设m=10,n=4,则赋值运算m%=n+1执行后m的值是( )。
A. 1 B. 2 C. 3 D. 0
8.下面语句执行后输出结果为( )。
int x=10,y=3,z; printf(“%d\\n”,z=(x%y,x/y));}
A. 0 B.1 C. 3 D. 4
9. 下面语句执行后输出结果为( )。
int x=10,y=10,z=10; printf(“%d,%d,%d ”,x++,--y,++z);}
A. 10,10,10 B. 10,9,11 C. 9,10,11 D. 11,10,9
10.以下选项中不是C语句的是( )。
A. {int i; i++; printf("%d\\n", i); } B. ;
C. a=5,c=10 D. { ; }
11.以下程序的输出结果是( )。
main( )
{ int x=2,y=-1,z=2;
if( x else z=z+1; printf(“%d”,z); } A. 0 B. 1 C. 2 D. 3 12.不能表达:x为奇数时表达式为“真”,偶数时表达式为“假”的表达式是( )。 A. x%2= =1 B. !(x%2= =0) C. !(x%2) D. x%2 13.以下程序段中while语句的循环次数是( )。 int i=0;while(i=1) {i++;} A.无限次 B. 有语法错误,不能执行 C. 一次也不执行 D. 执行一次 14.假设a,b均为字符数组以下正确的输入语句是( )。 A.gets(a,b); B. scanf(“%s%s”,a,b); C. scanf(“%s%s”,&a,&b);D.gets(“a”); gets(“b”); 15.若有定义:int a,*p; 则以下正确的赋值表达式是 ( )。 A. p=&a B. p=a C. *p=&a D. *p=*a 16.以下函数调用语句中,func(a+b,c-d+100);含有的实参个数是( )。 A. 1 B. 2 C. 4 D. 5 17.有以下定义:struct person{char name[9]; int age;} struct person class[10]={“Johu”,17,“Paul”,19,“Mary”,18,“Adam”,16,}; 则下面能输出字母M的语句是( )。 A. printf(“%c\\n”,class[3].name); B. printf(“%c\\n”,class[3].name[1]); C. printf(“%c\\n”,class[2].name[1]); D. printf(“%c\\n”,class[2].name[0]); 18.下列关于break和continue语句的叙述正确的是( )。 A.都可以出现在程序的任何位置 B.break语句可以出现在循环体或switch语句中C. continue语句可以出现在循环体或switch语句中 D.两者必须配对使用 19.用作累加器和累乘器的变量应该赋初始值为( )和( )。 A.0 0 B.0 1 C.1 0 D.1 1 20.下列语句( )可以实现变量a与b的数值交换。 A.{a=b;b=a;} B.{t=a;b=a;a=t;} C{t=a;a=b;b=t;}. D.以上都正确 二、填空(每空1分,共20分) 1. C语言源程序文件的后缀是_____,经过编译后,生成文件的后缀是_____,经过连接后,生成文件的后缀是_____。 2. 表达式3.5+1/2+56%10的结果为_____。 3. C语言中的三种逻辑运算符分别是_____、_____、_____。 4. 填空完成以下计算s=1+1/2+1/3+……+1/10的程序 main( ) { int n; float s=1.0; for(n=10; _____; _____ ) s=s+_____; printf(“%f”,s);} 5. 以下程序的功能是用选择法对数组a中的整数由小到大进行排序。 void sort(int b[],int n) { int i,j,t; for(i = 0;i {t = b[i];_______;b[ j]=t;}} main() { int a[]={5,8,6,2,7,4,1,3}; int i; sort(a,8); for(i = 0;i<8;i ++ ) printf(“﹪5d”,a[i]); printf(“\\ n”);} 6. printf("%5.3f\\n",123456.12345);输出为_____。 7. 存储字符串“program”的字符数组至少需要____个元素。 8指针变量可以加减一个整数,例如:_______________;指针变量可以有空值,例 如_____________________________________________________。 9以下程序从键盘输入10个学生的有关数据,然后把它们转存到磁盘文件上去。 #include #define SIZE 10 struct Student_type <------------------- { char name[10]; 程 int num; 序 int age; 段 char addr[15]; 1 }stud[SIZE]; <----------------- void save( ) <------------------- { FILE *fp; int i; if((fp=fopen("stu.dat 程 { printf("cannot open file\\n"); 序 return; 段 } 2 for(i=0;i printf("file write error\\n"); fclose(fp); } <------------------- int main() <------------------- { int i; printf(“enter data of students:\\n"); 程 for(i=0;i save( ); 3 return 0; } <------------------- 请回答问题:程序段1完成的功能是___________________________________; 程序段2完成的功能是___________________________________; 程序段3完成的功能是___________________________________。 三、程序阅读(每小题5分,共30分) 1. 执行以下程序: main( ) { int i,j,k,t; scanf(“%d”,&t); i=t%10; t=t/10; j=t%10; k=t/10; printf(“%d”,i*100+j*10+k); } 当输入123时,输出结果为____。 2. 以下程序的输出结果是____。 main( ) { int i=0,j=0,a=6; if((++i>0)||(++j>0)) a++; printf(“i=%d,j=%d,a=%d”,i,j,a); } 3. 以下程序的输出结果是____。 main( ) { int n=10; while(n>7) { printf(“%d,”n); n-- ;} 4. 以下程序的输出结果是____。 fun1(int a,int b) { int c; a+=a; b+=b; c=fun2(a,b); return c; } fun2(int a,int b) { int c; c=a*b%3; return c; } main( ) { int x=2,y=4; printf("%d\\n",fun1(x,y)); } 5. 若有以下程序段,执行后的输出结果是____。 int a=0,b=0,c=0; c=(a-=a-5),(a=b,b+3); printf(“%d,%d,%d\\n”,a,b,c); 6. 若有以下程序段,执行后的输出结果是____。 main() { int i; for(i=3;i<10;i++) {if(i%4= =0)continue; else printf("%d,",i);} } 四、编程题(每小题5分,共10分) 1. 编程实现计算1到100之间的奇数之和,偶数之和。 2. 编写程序求e的值,当通项小于10-7停止计算。e≈1+ 五、附加题(不计入总分) 1.请完整写出用递归方法求n!的C语言程序; 2.请完整写出用递归方法实现汉诺塔问题的C语言程序; 3.编写一个找出所有“水仙花”数的C语言程序。 参及评分标准 一、单项选择题(每小题2分,共40分) 1~5 AADCB 6~10CDCBC 11~15CCABA 16~20BDBBC 二、填空(每空1分,共20分) 1. .c .obj .exe 2. 9.5 3. && || ! 4.n>1,n--,1.0/n 或者n>=2,--n,1.0/(12-n)等类似形式。 5. j=i+1,>,b[i]=b[j] 6. 123456.123 7. 8 8.P++ P=NULL 9.定义一个结构体类型的数组变量,用来存放学生信息; 自定义函数save用来在磁盘上建立文件并把学生信息通过frwrite函数写到磁盘文件; 主函数完成从键盘输入学生信息,然后调用save函数。 三、程序阅读(每小题5分,共30分) 1.321 2.i=1,j=0 ,a=7 3. 10,9,8, 4. 2 5.0,0,5 6.3,5,6,7,9, 四、编程题(每小题5分,共10分) 1. 编程实现计算1到100之间的奇数之和,偶数之和。 答案(略),评分标准,首先实现功能,其次看设计规范,酌情扣减。 2. 编写程序求e的值,当通项小于10-7停止计算。e≈1+ 答案(略),评分标准,首先实现功能,其次看设计规范,酌情扣减。 五、附加题(不计入总分) 答案(略)