1、学生所在学院 专业、班级 学号 姓名 任课教师 共 页第1 页 江 苏 大 学 试 题 课程名称 计算机基础及程序设计(C)-II 开课学院 计算机 使用班级 考试日期 题 号一二三总分核查人签名 得 分阅卷教师一、 选择题(30分,1分/空)说明:(1)请将所有答案涂在答题卡上,写在试卷上无效; (2)请使用铅笔在答题卡上正确涂写班级、姓名、学号、任课教师,并请仔细检查学号涂写是否正确,学号涂写错误则没有成绩。1. 若变量均已正确定义并赋值,以下合法的C语言赋值语句是 (1) 。(1) A)x=y=5; B)x=n%2.5; C)x+n=i; D)x=5=4+1;2. 以下数据类型选择中,全
2、是基本类型的是 (2) 。(2) A)整数、实数和指针 B)整数、字符和枚举 C)整数、数组和枚举 D)字符、数组和联合3. 以下运算中,优先级最低的运算是 (3) 。(3) A) ! B) &C) 算术 D) 赋值4已知int a=1,b=2,c=3;执行如下程序段后,c的值是 (4) 。 if(a3)if(b5) c+;else c+=2; c+=3(4) A) 5 B) 6 C) 7 D) 8 5. 对于一个正常运行的C程序,以下叙述中正确的是 (5) 。(5) A)程序的执行总是从main函数开始,在main函数结束 B)程序的执行总是从程序的第一个函数开始,在main函数结束 C)程
3、序的执行总是从main函数开始,在程序的最后一个函数中结束 D)程序的执行总是从程序中的第一个函数开始,在程序的最后一个函数中结束6. 若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是 (6) 。(6) A) x=x+10=x+y B)x+1=y C) +x,y=x- D)double(x)/107. 以下不合法的字符常量是 (7) 。(7) A) B) 018 C) D)xcc8. 下列选项中,不能用作标识符的是 (8) 。(8) A)_1234_ B)_1_2 C)int_2_ D)2_int_9. 有以下定义语句 double a,b;int w;long c;若各变量已正确赋
4、值,则下列选项中正确的表达式是 (9) 。(9) A)a=a+b=b+ B)w%(int)a+b) C)(c+w)%(int)a D)w=a=b;10. 若x和y代表整型数,以下表达式中不能正确表示数学关系 |x-y|10 的是 (10) 。(10) A)abs(x-y)-10&x-y10 C)!(x-y)lO D)(x-y)*(x-y)10011. 若整型变量a、b、c、d中的值依次为 :1、4、3、2。 则条件表达式 ab?a:c3;j-)if(j%3)j-;-j;-j;printf(%d,j);(13) A)6 3 B)7 4 C)6 2 D)7 314. 若有以下说明: int w34
5、=0,1,2,4,5,8; int(*p)4=w; 则数值为4的表达式是 (14) 。(14) A) *w1+1 B) p+,*(p+1)C) w22 D) p1115. 执行以下程序后,y的值是 (15) 。main ( ) int a=2,4,6,8,10;int y=1,x,*p;p=&a1;for(x=0;x3;x+) y + = * (p + x);printf(%dn,y); (15) A) 17 B) 18 C) 19 D) 2016. 有以下程序main()char a=programming,b=language;char *p1,*p2;int i;p1=a;p2=b;fo
6、r(i=0;i7;i+)if(*(p1+i)=*(p2+i)printf(c,*(p1+i);输出结果是 (16) 。(16) A)gm B)rg C)or D)ga17. 若变量己正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是 (17) 。(17) A) for(i=1,p=1;i=5;i+) p*=i; B) for(i=1;i=5;i+)p=1;p*=i; C) i=1;p=1;while(i=5)p*=i;i+; D) i=1;p=1;dop*=i;i+;while(i=5);18. 若有以下说明和语句int c45,(*p)5;p=c;能够正确引用c数组元素的是 (1
7、8) 。(18) A)p+1 B)*(p+3) C)*(p+1)+3 D)*(p0+2)19. 以下程序运行后的输出结果是 (19) 。 #define S(x) 4*x*x+1 main() int i=6,j=8; printf(%dn,S(i+j); (19) A) 65 B) 73 C)81 D)9720. 已定义以下函数 int fun(int *p) return *p; fun函数返回值是 (20) 。(20) A)不确定的值 B)一个整数 C)形参p中存放的值 D)形参p的地址值21. 已知有声明语句“int a5=1,2,3,4,5,*p,i;”,以下语句中 (21) 不能正
8、确输出a数组全部元素的值。(21) A) for(p=a,i=0;i5;i+) printf(%d,*(p+i);B) for(p=a;pa+5;p+) printf(%d,*p);C) for(p=a,i=0;pa+5;p+,i+) printf(%d,pi);D) for(p=a;pa+5;p+) printf(%d,p0);22. 已知有声明语句“char s110=12345,s210=abcdes310;”以下语句中能将s1中存储的字符串和s2中存储的字符串正确交换的是: (22) 。(22) A) s3=s1,s1=s2,s2=s3;B) s30= s10,s10=s20,s20=
9、s30;C) strcpy(s30,s10), strcpy(s10,s20), strcpy(s20,s30),D) strcpy(s3,s1), strcpy(s1,s2), strcpy(s2,s3),23. 设有下列程序段: static char b=2; void Y() static float d=4;int a=l; void X() int c=3; 关于程序段中各变量的属性,以下叙述中错误的是 (23) 。(23) A) a是全局变量,函数X可以访问,函数Y不能访问 B) b是全局变量,函数X和函数Y都可以访问 C) c是动态变量,函数X可访问,函数Y不可访问 D) d是
10、静态变量,函数X和函数Y都可以访问24. 有以下程序 void fun1(char *p) char *q; q=p; while(*q!=0) (*q)+;q+; main() char a=Program,*p; p=&a3; fun1(p); printf%sn,a); 程序执行后的输出结果是 (24) 。(24) A) Prohsbn B) Prphsbn C) Progsbn D) Program25有以下程序 fun(int x, int y) static int m=0, i=2; i+=m+1;m=i+x+y;return m; main() int j=1, m=1, k;
11、 k=fun(j,m);printf(%d,k); k=fun(j,m);printf(%dn,k); 执行后的输出结果是 (25) 。(25) A)5, 5 B)5, 11 C)11, 11 D)11, 5 26. 有以下程序 int add( int a,int b) return (a+b); main() int k, (*f)(), a=5,b=10; f=add; 则以下函数调用语句错误的是 (26) 。(26) A)k=(*f)(a,b); B)k=add(a,b); C)k= *f(a,b); D)k=f(a,b); 27. 有以下程序 main() union char ch
12、2; int d; s; s.d=0x4321; printf(%d,%dn,s.ch0,s.ch1); 程序执行后的输出结果是 (27) 。(27) A) 33,67 B) 43,21 C) 21,43 D) 67,33 28. 有以下程序 #include void WriteStr(char *fn, char *str) FILE *fp; fp=fopen(fn,w); fprintf(fp,”%s”,str); fclose(fp); main() WriteStr(t1.dat,start); WriteStr(t1.dat,end); 程序运行后, 文件t1.dat中的内容是
13、(28) 。(28) A) start B) end C) startend D) endrt 29. 有以下程序 main() char s= aeiou ,*ps; ps=s;printf(%cn,*ps+4); 程序运行后的输出结果是 (29) 。(29) A) a B)e C) u D)元素s4的地址 30. 以下叙述中正确的是 (30) 。(30) A) break语句只能用于switch语句体中 B) continue语句的作用是:使程序的执行流程跳出包含它的所有循环 C) break语句只能用在循环体内和switch语句体内 D) 在循环体内使用break语句和continue语
14、句的作用相同二、 阅读程序(共40分,2分/空,请涂在答题卡上)1. 以下程序运行后,第一行输出结果是 (31) 、第二行输出结果是 (32) 。main( ) int y=18,i=0,j,a8;do ai=y%2;i+;y=y/2; while(y=1);for(j=i-1;j=0;j-)printf(%d,aj);printf(n) ;printf(“%d,%dn”,i,j);(31) A)10000 B)10010 C)00110 D)10100(32) A) 5,-1 B) 0,1 C) 4,-1 D) 0,-12. 有以下程序 int fun(int n)int s; if(n=2
15、) s=2*n-1; else s=fun(n-2)+(n-1)+n; return s; main() printf(s=%dn,fun(5); 程序执行后的输出结果是 (33) 。(33) A)17 B)15 C)13 D)113. 以下程序中函数f的功能是:当flag为1时,进行由小到大排序;当flag为0时,进行由大到小排序。 void f(int b, int n, int flag) int i,j,t; for (i=0; in-1; i+) for (j=i+1; jbj : bibj) t=bi; bi=bj; bj=t; main() int a10=5,4,3,2,1,6
16、,7,8,9,10, i; f(&a2, 5, 0);f(a, 5, 1);for (i=0; i10; i+) if(i=3) printf(“n”);printf(%d, ai); 程序运行的第一行输出结果是 (34) 、第二行输出结果是 (35) 、最后一行输出结果是 (36) 。(34) A) 1,2,3, B) 3,4,5, C) 5,4,3, D) 10,9,8,(35) A) 6,7,8, B) 5,4,3, C) 8,7,3, D) 6,7,2,(36) A) 10, B) 1, C) 5, D) 8,4. 有以下程序 #include void fun(char *t , c
17、har *s) while(*t!=0) t+; while( (*t+ = *s+ )!=0 ) ; main() char ss10=acc,aa10=bbxxyy; fun(ss, aa);printf(%sn %sn, ss,aa); 程序运行第一行结果是 (37) 、第二行结果是 (38) 。(37) A)accxyy B)acc C)accxxyy D)accbbxxyy(38) A) bbxxyy B) accbbxx C) ccbbxx D) bbxxac5. 若输入3个整数3,2,1,则下面程序的输出的第一行结果是是_(39)_、第二行结果是 (40) 、最后一行结果是 (4
18、1) 。#includevoid sub( n,uu)int n, uu ; int t;t=uun-; t+=3*uun;n=n+;if(t=10) uun+=t/10; uun=t%10;else uun=t;main( ) int i, n, aa10=0,0,0,0,0,0;scanf( %d%d%d,&n,&aa0,&aa1);for(i=1; in; i+) sub(i,aa);for(i=0; i=n; i+) printf(%dn,aai);printf(n);(39) A) 1 B) 2 C) 3 D) 4 (40) A) 5 B) 6 C)7 D) 8 (41) A) 9
19、B) 0 C) 1 D) 26. 执行以下程序后,输出的第一行结果是 (42) 、第二行结果是 (43) 、最后一行结果是 (44) 。#include stdio.hvoid ctod(char a,int b)int i=0; while(ai!=0) bi=ai-0; i+; void adp(int a,int n,int b,int c) int i; for(i=0;i=10) ci+1+=ci/10; ci=ci%10; main() char a20=26183; int b30,c30=0,i; ctod(a,b); adp(b,5,9,c); for(i=0;i5;i+)
20、printf(%dn,ci); (42) A) 8 B) 7 C) 6 D) 5 (43) A) 3 B) 4 C) 5 D) 6 (44) A) 1 B) 2 C) 3 D) 47. 执行以下程序之后,程序输出的第一行结果是 (45) ,第二行输出结果是 (46) ,最后一行输出结果是 (47) 。#include stdio.hint pm(int n)int i; for(i=2;i=n) return 1; else return 0;main()int i,s=0; for(i=2;i20;i+) if(pm(i) if(i%3=1) printf(%dn,i);s+=i; prin
21、tf(s=%dn,s); (45) A) 5 B) 6 C) 7 D) 8 (46) A) 11 B) 13 C) 15 D) 17 (47) A) 19 B)23 C) 39 D) 438. 执行以下程序之后,程序输出的第一行结果是 (48) ,第二行输出结果是 (49) ,最后一行输出结果是 (50) 。#include stdio.hvoid fun(int n,int *p)int i; *p=0; for(i=1;i=n;i+) if(i%2=1) *p=*p+i; main()int n,s; for(n=3;n999) (52) ; a=n/100; b= (53) ; c=n%
22、10; if(!(a-b)*(b-c)*(c-a)printf(n%d,%d,n,k); (51) A) k B) k*k C) k*k/100 D) k%10(52) A) break B) continue C) stop D) n=k(53) A) n/10 B) n%10 C) (n/10)%10 D) (n%100)%102. 以下程序中函数maxmin的功能是:对于x中存储的任意一个四位整数,求出:(1)组成以这个整数的四个数字由大到小排列后构成的最大的四位数;(2)组成以这个整数的四个数字由小到大排列后构成的最小的四位数;。 #include”stdio.h”void maxmi
23、n(int x,int *pmax,int *pmin) int num4,i,j,k,t;*pmax=0; *pmin=0;for(i=0;i4;i+) numi=x%10; x= (54) ;for(i=0;i3;i+) k=i; for(j=i+1;j4;j+) if(numknumj)k=j;if( (55) )t=numi;numi=numk;numk=t;for(i=0;inumi B) numknumj D) numkx3) (60) ; else y=y*100+x3*10+x2; (61) ;main()int a,b,c; scanf(“%d%d”,&a,&b); c=fu
24、n(a,b); printf(“%dn”,c);(58) A) x1=x3 B) x1x3 D) x1x4(59) A) y=x1*10+x3 B) y=x3*10+x1C) y=x4*10+x1 D) y=x1*10+x4(60) A) y=y*100+x2*10+x3 B) y=x2*10+x3 C) y=y*100+x3*10+x2 D) y=x3*10+x2(61) A) y=x1*100+x4*100+x2*10+x3B) y=x4*100+x1*100+x2*10+x3C) y=x1*100+x4*100+x3*10+x2D) return y4. 设链表上的结点的数据结构定义如下
25、:struct node int x; struct node *next;假设已经建立了一个链表,h为链首指针。函数deladd的功能是:若链表上能找到结点的x值为value,则从链表上删除该结点(假定链表上的各个结点的值是不同的);否则构造一个新结点,其值为value,并将新结点插入链尾。该函数要求返回新链表的首指针。struct node *deladd(struct node *h,int value) struct node *p1, *p2;int flag=0;p1=p2=h;while(p1&flag=0)if(p1-x=value) flag=1;if(p1=h) h= (6
26、2) ;free(p1); else p2-next= (63) ; free(p1); else p2=p1;p1= (64) ; if(flag=0) p1=(struct node *)malloc(sizeof(struct node);p1-x=value; (65) ; if(h=0)h=p1; else p2-next=p1;return h;(62) A) h-next B) p1 C) p2 D) NULL(63) A) p1 B) p1-next C) p2-next D) p2(64) A) p1 B) p2 C) p1-next D) p2-next(65) A) p1-next=p1 B) p2-next=p1 C) p2-next=NULL D) p1-next=NULL 江 苏 大 学 试 题 第 页 第 12 页 共 12 页