《C语言程序设计》 专升本练习题
(学习资料仅供练习)
目 录
专升本《C语言》练习题一 .................................................................................................... 1 专升本《C语言》练习题二 .................................................................................................... 9 专升本《C语言》练习题三 .................................................................................................. 17 专升本《C语言》练习题四 .................................................................................................. 24 专升本《C语言》练习题五 .................................................................................................. 31 专升本《C语言》练习题六 .................................................................................................. 42 专升本《C语言》练习题七 .................................................................................................. 48 专升本《C语言》练习题八 .................................................................................................. 58 专升本《C语言》练习题九 .................................................................................................. 65 专升本《C语言》练习题十 .................................................................................................. 72
专升本《C语言》练习题一
第 1 页
第 2 页
6 10
第 3 页
第 4 页
第 5 页
第 6 页
第 7 页
第 8 页
专升本《C语言》练习题二
第 9 页
第 10 页
第 11 页
第 12 页
第 13 页
第 14 页
第 15 页
第 16 页
专升本《C语言》练习题三
一、单项选择题
1. C语言源程序文件经过编译连接之后生成一个后缀为__C__的文件。 A.”.c” B.“.obj” C.“.exe” D.“.bas” 2. 以下选项中不正确的整型常量是_C____。
A. 12L B. -10 C. 1,900 D. 123U 3. 表达式___C___的值是0。
A.3%5 B.3/5.0 C.3/5 D.3<5 4. 表达式 !(x>0||y>0) 等价于__D___。
A.!x>0||!y>0 B.!(x>0)||!(y>0) C.!x>0&&!y>0 D.!(x>0)&&!(y>0) 5. 若变量已正确定义并赋值,表达式__D____不符合C语言语法。 A.4&&3 B.+a C.a=b=5 D.int(3.14)
6. 若变量已正确定义,执行语句scanf(\"%d%d%d \;时,___B___是正确的输入。
A.2030,40 B.20 30 40 C.20, 30 40 D.20, 30,40 7. 执行语句 printf(” __D____”, 2); 将得到出错信息。 A.%d B.%o C.%x D.%f
8. 设变量定义为“int s[ ]=\"hello\\nworld\\n\";”,则数组s中有__B__个元素。 A.12 B.13 C.14 D.15
9. 设变量定义为“int a[2]={1,3}, *p=&a[0]+1;”,则*p的值是___B__。 A.2 B.3 C.4 D.&a[0]+1 10. 若变量已正确定义并赋值,表达式 -k++ 等价于__A____。 A.-(k++) B.(-k)++ C.-(k+1) D.-(++k) 11. 在C 语言程序中,在函数内部定义的变量称为__D____。 A.全局变量 B.全程变量 C.外部变量 D.内部变量 12. 若x是整型变量,表达式 (x=10.0/4.0) 的值是__D___ 。 A.2.5 B. 2.0 C. 3 D.2
第 17 页
13. 对于以下的变量定义,表达式__A____是正确的。 struct node { char s[10]; int k; } p[4];
A.p->k=2 B.p[0].s=“abc” C.p[0]->k=2 D.p->s=‘a’ 14. 下列运算符中,优先级从高到低依次为__D___。
A.&&,!,|| B.||,&&,! C.&&,||,! D. !,&&,|| 15. 下列程序段的输出结果是__B___。
int *p, *q, k = 1, j=10 ; p=&j; q = &k ; p = q ; (*p)++; printf(\"%d\
A.1 B.2 C.10 D.11
16.以下各选项企图说明一种新的类型名,其中正确的是水量 (C)
A. typedef v1 int; B. typedef v2=int; C. typedefv1 int v3; D. typedef v4: int; 17. 以下选项中,非法的字符常量是 (C)
A. ‘\’ B. ‘\\17’ C)“n” D. ‘\\xaa’ 18. 以下程序的输出结果是 (C)
main() { int i, a[10];
for(i=9;i>=0;i--) a[i]=10-i;
printf(“%d%d%d”,a[2],a[5],a[8]); }
A. 258 B. 741 C. 852 D. 369 19. 以下程序的输出结果是(B)
main()
{ char st[20]= “hello\\0\\\\\\\”; printf(%d %d \\n”,strlen(st),sizeof(st)); }
A. 9 9 B. 5 20 C. 13 20 D. 20 20 20. 以下程序的输出结果是 (D)
main()
第 18 页
{ int a, b;
for(a=1, b=1; a<=100; a++) { if(b>=10) break; if (b%3= =1) { b+=3; continue; } }
printf(“%d\\n”,a); }
A. 101 B. 6 C. 5 D. 4 21. 以下程序的输出结果是 (D)
union myun { struct
{ int x, y, z; } u; int k; } a; main()
{ a.u.x=4; a.u.y=5; a.u.z=6; a.k=0;
printf(%d\\n”,a.u.x); }
A. 4 B. 5 C. 6 D. 0 22. 以下程序段的输出结果是 (A)
char s[]=\"\\\\141\\141abc\\";
printf (\"%d\\n\
A. 9 B. 12 C. 13 D. 14 23. 以下程序的输出结果是 (B)
main()
{ char ch[3][5]={\"AAAA\printf(\"\\\"%s\\\"\\n\}
A. \"AAAA\" B. \"BBB\" C. \"BBBCC\" D. \"CC\" 24. 不合法的main函数命令行参数表示形式是 (C)
第 19 页
A. main(int a,char *c[]) B. main(int arc,char **arv) C. main(int argc,char *argv) D. main(int argv,char *argc[]) 25. 有以下程序执行后输出结果是 (C)
main()
{ char *s[]={\"one\ p=s[1]; printf(\"%c,%s\\n\}
A. n,two B. t,one C.w,one D. o,two 26. 设有如下说明
typedef struct
{ int n; char c; double x;}STD;
则以下选项中,能正确定义结构体数组并赋初值的语句是 (A) A. STD tt[2]={{1,'A',62},{2, 'B',75}}; B. STD tt[2]={1,\"A\C. struct tt[2]={{1,'A'},{2, 'B'}};
D. structtt[2]={{1,\"A\
27. 若变量c为char类型,则能正确判断出c为小写字母的表达式是( D A. 'a'<=c<= 'z' B. (c>= 'a')||(c<= 'z') C. ('a'<=c)and ('z'>=c) D. (c>= 'a')&&(c<= 'z') 二.填空题
1. 设ch是字符型变量,判断ch为英文字母的表达式是: (ch>=’A’&&ch,=’Z’)||(ch>=’a’&&ch<=’z’) __。
2. 计算下列分段函数的 if 语句是_ if(x>0)y=1;else if(x=0)y=0;else y=-1;___。 1 x>0 y= 0 x=0 -1 x<0
3.表达式 !!5的值是__1____。 4.下列程序段的输出结果是___12___。 printf(\"%xn\
第 20 页
。 )
5.下列程序段的输出结果是__ k=4 s=6___。 int k, s;
for(k=0, s=0; k<10; k++) if (s>k) break ; else s += k; printf(\"k=%d s=%d\
6.下列程序段的输出结果是__15___。 #define MIN(x,y) (x)<(y)?(x) : (y) printf(\"%d\
7.下列程序在运行时可能会出错,原因是__指针变量s未赋初值____。 # include void main( )
{ char *s; gets(s); puts(s); } 8.下列程序段的输出是___6 0__。 # include
int f(int m) { static int k=0; int s=0; for(; k<=m; k++) s++; return s; }
void main( ) { int s1, s2; s1=f(5); s2=f(3);
printf(\"%d %d\\n\}
9. 下列程序段的输出结果是__ fgh ___。 char *st[ ]={\"abcd\printf(\"%s\
第 21 页
10. 用typedef定义一个含10个元素的整型数组ARR。 typedef int ARR[10];
11.以下程序调用findmax函数返回数组中的最大值,请填空。
findmax(int *a,int n) { int *p,*s; for(p=a,s=a; p-a if ( *p>*s ) s=p; return(*s); }
void main()
{ int x[5]={12,21,13,6,18}; printf(\"%d\\n\}
三.程序(段)填空题
1.设变量x, y, z已正确定义和赋值,请仔细阅读程序段A,然后在程序段B中填入正确的内容,使程序段A和程序段B有相同的功能。 程序段A 程序段B x=x+y; y=x-y; x=x-y; z=x+y; z=x ; x=y ; y=z; z=x+y;
2.请仔细阅读函数f1,然后在函数f2中填入正确的内容,使函数f1和函数f2有相同的功能。 char *f1(char s[ ], char t[]) { int k;
for(k=0; t[k]!=' '; k++) s[k]=t[k]; s[k]=' '; return s; }
第 22 页
第 23 页
专升本《C语言》练习题四
一、 填空題(每空1分,共20分)
1. 是C程序的基本单位,一个C程序总是从 开始执行。
2.C语言规定标识符只能由字母、 和 3种字符组成,且第一个字符必须为字母或 。
3.著名计算机科学家沃思提出的一个公式:数据结构+ =程序 4.Turbo C++中,若有语句:unsigned int a;则a的范围是0~ 5.C中的转义符“\\r”表示: 。 6.表达式 21 / 4 的值为 。
7.C语言中没有专门的字符串变量,如果想将一个字符串存放在变量中以便保存,必须使用 。
8.已知a=12.7,则表达式 (int)a 的值为 。 9.表达式 3 | 2 的值是 。 10.若a=5,经a-=3;后a= 。
11.已知ch='a',则表达式【(ch>='A ' && ch<='Z')? (ch+32):ch 】的值为 。 12.C中定义符号常量E为2.71828的宏命令是 。 13.函数形参和调用的实参是数组名时,参数按 方式进行传递。 14.C中按位与运算符是 、按位异或运算符是 、按位或运算符是 。 15.定义一个结构变量,共三个成员分别是字符型、整形和浮点型,则该结构体变量所占内存长度为 个字节。 二、 单项选择题(每题2分,共40分) 1.下列C语言标识符中,不合法的是( )
A. myname B. Wend C. sum
D. student
2.欲从键盘给整型变量a赋值3,b赋值2,则对应语句 scanf(\"a=%d,b=%d\的输入格式是()
A. 3 2 B. a=3 b=2 C. a=3,b=2
D.a=b=3,2
3.C语言源程序文件后缀名是( )
A. .exe B. .obj C. .bat D. .c
第 24 页
4.结构化程序设计的三种基本结构是( B )
A. 顺序结构、复杂结构、循环结构 B. 顺序结构、分支结构、循环结构 C. 顺序结构、分支结构、选择结构 D. 顺序结构、复杂结构、分支结构
5.以下表达式中,值为0的是( )
A.15%5 B.15/5.0 C.15/5 D.15>5
6.设下列表达式中所涉及的变量均已正确定义,则不符合C语言语法的是( )
A.4||3 B.a+=4 C.a=3,b=5 D.char(65)
7.设变量定义为【int a[3]={1,3,5}, *p=a+1; 】,则*p的值是( )
A. 2 B. 3 C. 4 D. a+1
8.在C 语言程序中,在函数内部定义的变量称为( )
A. 全局变量 B. 外部变量 C. 全程变量 D. 局部变量
9.经过以下的变量定义后,正确的表达式是(A ) struct node { char s[10]; int k; } p[4];
A. p->k=21 B. p[0]->k=21 C. p(0)->k=21
D. p->s=\"Mary\"
10.若变量c为char类型,则能正确判断出c为大写字母的表达式是( )
A. (c>= 'A')||(c<= 'Z') B. 'A'<=c<= 'Z'
C. (c>= 'A')&&(c<= 'Z') D. ('A'<=c)and ('Z'>=c)
11.C语言中以“只写”方式打开文件,应选择的参数是( )
A. o B. w C. a D. r
12.变量定义为【int a[2][3]={1,2,3,4,5,6}, *p=&a[1][0]; 】,则p的值是 ) A. 数组a的首地址 B. 数组a的第1个元素的地址 C. 数组a的第“1”行第“0”列的地址 D. 数组a的第“1”列的首地址 13.用链表表示线性表的优点是( )
A. 便于插入和删除操作 B. 花费的存储空间较顺序存储少 C. 便于随机存取
D. 数据元素的物理顺序与逻辑顺序相同
14.结构化程序设计主要强调的是( C )
A. 程序的规模 B. 程序设计语言的先进性
第 25 页
C. 程序结构的规范化 D. 程序的效率 15.以下表达式中,不正确的浮点数常量是( C )
A. 2e2 B. 2.2 C. 2c2 D. 2E2
16. 若int x=12,*p=x;则正确的赋值表达式是( )
A. p=*&x B. *p=&x
C. &p=x
D. *p=x
17.设有如下程序段:int i=15; for(;i>=10;)i--; 执行完这段程序后,i的值是( D)
A. 5 B. 4 C. 10
D. 9
18.设有如下程序段:int i=15; while(i<15)i--; 则以下描述中正确的是( C )
A. 循环体语句执行15次
B. 这是一个死循环 D. 循环体语句只执行一次
C. 循环体语句一次也不执行
19.设有如下程序段:{char a[2][6]={\"abcde\ printf(\"\\n%s\这段程序执行后,屏幕输出的结果是( B ) A. wxy
B. cde C. w D. c
20.设有如下程序段:union{ int i; char c; }a; a.c='A'; a.i=12; printf(\"\\n%d\这段程序执行后,屏幕输出的结果是(C ) A. A B. 97 C. 12 D. 65 三、 程序填空(每空3分,共15分)
1.以下程序的功能是输出杨辉三角形前10行,请在下划线处填上正确的内容,使程序能正确运行。 #include 第 26 页 for(i=1;i for(i=2;i 四、 写出以下程序运行结果(每题4分,共12分) 1.以下程序输出的结果是: #include \"stdio.h\" void main() { char s[]=\"\\\"hello\\\"\"; printf(\"%s\ } 第 27 页 2.以下程序输出的结果是: #include \"stdio.h\" void main() {int a=12,b=13; a=a+b; b=a-b; a=a-b; printf(\"%d,%d\ } 3.以下程序输出的结果是: #include \"stdio.h\" void main() { char ch[]=\"I love Great Wall of China!\"; printf(\"%c\ } 五、 编程题(第1题5分,第2题8分,共13分) 1.百钱百鸡问题:公元前5世纪,我国古代数学家张丘建在《算经》一书中提出了百鸡问题:鸡翁一值钱五、鸡母一值钱三、鸡雏三值钱一,百钱买百鸡,问鸡翁、母、雏各几何? 试编程输出所有的买法。注意:每一种鸡至少要一只。 2.编程输出所有\"玫瑰花数\"。(一个四位数等于它每一位数字的4次方之和.那么我们称这个四位数为\"玫瑰花数\") 专升本《C语言》练习题四参 一、 填空題(每空1分,共20分) 1 2 3 4 5 6 7 8 9 10 11 函数 数字 算法 65535 回车 5 字符数组 12 3 2 a 或 97 主函数 或 main函数 下划线 下划线 第 28 页 12 13 14 15 #define E 2.71828 地址传递 或 传址 & 7 ^ | 二、 单项选择题(每题2分,共40分) 1 B 11 B 2 C 12 C 3 D 13 A 4 B 14 C 5 A 15 C 6 D 16 D 7 B 17 D 8 D 18 C 9 A 19 B 10 C 20 C 三、 程序填空(每空3分,共15分) 1 1 2 n%i==0 1 a[i-1][j-1]+a[i-1][j] isprime(i)==1 四、 写出以下程序运行结果(每题4分,共12分) 1.运行结果:\"hello\" 2.运行结果:13,12 3. 运行结果: e 五、 编程题(第1题5分,第2题8分,共13分) 1.参考程序: #include \"stdio.h\" void main() {int cock,hen,chick; for(cock=1;cock<20;cock++) for(hen=1;hen<33;hen++) {chick=100-cock-hen; if(cock*5+hen*3+chick/3==100) printf(\"cock:%d hen:%d chick:%d\\n\ }} 评分标准:程序结构正确得3分,算法正确得2分 第 29 页 2. 参考程序: #include \"stdio.h\" void main() { int i,g,s,b,q,m; for(i=1000;i<=9999;i++) {g=i%10; s=i/10%10; b=i/100%10; q=i/1000; m=g*g*g*g+s*s*s*s+b*b*b*b+q*q*q*q; if(i==m)printf(\"\\n%d\ } } 第 30 页 专升本《C语言》练习题五 一.单项选择题 1.以下定义语句中正确的是 (C) A. char a='A'b='B'; B. float a=b=10.0; C. int a=10,*b=&a; D. float *a,b=&a; 2.下列运算符中,优先级最高的是 (A) 。 A. -> B. ++ C. && D. = 3.表达式!(x>0&&y>0)等价于 (A) 。 A. ! (x>0) || ! (y>0) B. !x>0 || !y>0 C. !x>0 && !y>0 D. !(x>0) && ! (y>0) 4. 有以下程序运行后的输出结果是(B) main() { int a=666,b=888; printf(\"%d\\n\ } A.错误信息 B.666 C.888 D.666,888 5. 有以下程序运行后的输出结果是(C) main() { int i; for(i=0;i<3;i++) switch(i) { case 0:printf(\"%d\ case 2:printf(\"%d\ default:printf(\"%d\} A.022111 B.021021 C.000122 D.012 6. 若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是 (C) A.abs(x-y)<10 B.x-y>-10&& x-y<10 C.!(x-y)<-10||!(y-x)>10 D.(x-y)*(x-y)<100 7. 数组定义为,int a[11][11]; 则数组a 的元素个数为 ( D ) A. 12 B. 144 C. 100 D. 121 8. 对于以下的变量定义,不正确的表达式是(D)。 struct node { int j , k ; }x,*p=&x; A. p->k=2; B. (*p).k=2; C. x . k=2 D. x->k=2 9. 不正确的赋值或赋初值的方式是 (B) 。 第 31 页 A. char str[ ]=”string”; B.char str[10]; str=”string”; C. char *p=”string”; D.char *p; p=”string”; 10. 设程序中不再定义新的变量,写出以下程序中可以使用的所有变量( B ) #include { static int y; return (x+y); } void main( ) { int a,b; printf(“%dn”, p(a)); ……… } A. a,b B. a,b,z C. a,b,y,z D. a,b,x,y,z 11.有以下程序运行后的输出结果是(D) main() { int i=0,x=0; for (;;) { if(i==3||i==5) continue; if (i==6) break; i++; s+=i; }; printf(\"%d\\n\ } A.10 B.13 C.21 D.程序进入死循环 12.以下程序若运行时从键盘上输入:6,5,65,66<回车>。则输出结果是( A ) main() { char a,b,c,d; scanf(\"%c,%c,%d,%d\ printf(\"c,%c,%c,%c\\n\ } A.6,5,A,B B.6,5,65,66 C.6,5,6,5 D.6,5,6,6 13.s1和s2已正确定义并分别指向两个字符串。若要求:当s1所指串大于s2所指串时,执行语句S;则以下选项中正确的是(D) A. if(s1>s2)S; B. if(strcmp(s1,s2))S; C. if(strcmp(s2,s1)>0)S; D. if(strcmp(s1,s2)>0)S; 14.有以下定义和语句 int a[3][2]={1,2,3,4,5,6,},*p[3]; p[0]=a[1];则*(p[0]+1) 所代表的数组元素是 (C) A. a[0][1] B. a[1][0] C. a[1][1] D. a[1][2] 第 32 页 15.程序中对fun函数有如下说明void *fun();此说明的含义是:(C) A. fun了数无返回值 B. fun函数的返回值可以是任意的数据类型 C. fun函数的返回值是无值型的指针类型 D.针fun指向一个函数,该函数无返回值 16.有以下程序运行后的输出结果是 ( C ) void fun(int *a,int i,int j) { int t; if(i { int x[]={2,6,18},i; fun(x,0,3); for(i=0;i<4;i++) printf(\"%2d\ printf(\"\\n\"); } A. 1 2 6 8 B. 8 6 2 1 C. 8 1 6 2 D.8 6 1 2 17.有以下说明和定义语句 struct student { int age; char num[8];}; struct student stu[3]={{20,\"200401\ struct student *p=stu; 以下选项中引用结构体变量成员的表达式错误的是 ( D ) A. (p++)->num B.p->num C.(*p).num D.stu[3].age 18.已定义ch为字符型变量,以下赋值语句中错误的是 (A) A.ch='\\'; B.ch=62+3; C.ch=NULL; D.ch='\\xaa'; 第 33 页 19.以下选项中不能正确把cl定义成结构体变量的是 (B) A)typedef struct B)struct color cl { int red; { int red; int green; int green; int blue; int blue; } COLOR; }; COLOR cl; C)struct color D)struct { int red; { int red; int green; int green; int blue; int blue; } cl; } cl; 20.有以下程序 fun(int a, int b) { if(a>b) return(a); else return(b); } main() { int x=3, y=8, z=6, r; r=fun(fun(x,y), 2*z); printf(\"%d\\n\} 程序运行后的输出结果是 (D) A.3 B.6 C.8 D.12 21.有以下程序段 main() { int a=5,*b,**c; c=&b; b=&a; …… 第 34 页 } 程序在执行了c=&b;b=&a;语句后,表达式:**c的值是 (C) A.变量a的地址 B.变量b中的值 C.变量a中的值 D.变量b的地址 22. 设有 int x=11; 则表达式 (x++ * 1/3) 的值是 (A) A. 3 B. 4 C. 11 D. 12 23. 下列程序的输出结果是 (C) A. 3 B. 3.2 C. 0 D. 3.07 main() { double d=3.2; int x,y; x=1.2; y=(x+3.8)/5.0; printf(\"%d \\n\ } 24. 下列变量定义中合法的是 (A) A. short _a=1-.le-1; B. double b=1+5e2.5; C. long do=0xfdaL; D. float 2_and=1-e-3; 25. 以下循环体的执行次数是 (C) A. 3 B. 2 C. 1 D. 0 main() { int i,j; for(i=0,j=1; i<=j+1; i+=2, j--)printf(\"%d \\n\ } 26. 以下叙述正确的是 (D) A. do-while语句构成的循环不能用其它语句构成的循环来代替。 B. do-while语句构成的循环只能用break语句退出。 C. 用do-while语句构成的循环,在while后的表达式为非零时结束循环。 D. 用do-while语句构成的循环,在while后的表达式为零时结束循环。 27. 下列程序执行后的输出结果是(A) A. G B. H C. I D. J main() 第 35 页 { int x='f'; printf(\"%c \\n\28. 下列程序执行后的输出结果是 (A) A. 6 B. 7 C. 8 D. 9 void func(int *a,int b[]) { b[0]=*a+6; } main() { int a,b[5]; a=0; b[0]=3; func(&a,b); printf(\"%d \\n,b[0]); } 29. 下列程序的运行结果是 (B) A. a=%2,b=%5 B. a=2,b=5 #include main() { int a=2,c=5; printf(\"a=%d,b=%d\\n\ 30. 设有数组定义: char array [ ]=\"China\"; 则数组 array所占的空间为 (C) A.4个字节 B. 5个字节 C.6个字节 D. 7个字节 31. 下列程序的输出结果是 (B) A. 5 B. 6 C. 7 D. 8 struct abc { int a, b, c; }; main() { struct abc s[2]={{1,2,3},{4,5,6}}; int t; t=s[0],a+s[1],b; printf(\"%d \\n\ } 32. 若有以下调用语句,则不正确的fun函数的首部是 (C) A. void fun(int m, int x[]) B. void fun(int s, int h[41]) C. a=d, b=d D. a=%d,b=%d 第 36 页 C. void fun(int p, int *s) D. void fun(int n, int a) main() { … int a[50],n; … fun(n, &a[9]); … } 33. 设已有定义: char *st=\"how are you\"; 下列程序段中正确的是 (A) A. char a[11], *p; strcpy(p=a+1,&st[4]); B. char a[11]; strcpy(++a, st); C. char a[11]; strcpy(a, st); D. char a[], *p; strcpy(p=&a[1],st+2); 34. 下列程序执行后的输出结果是 (A) A. you&ne B. you C. me D. err mai() { char arr[2][4]; strcpy(arr,\"you\"); strcpy(arr[1],\"me\"); arr[0][3]='&'; printf(\"%s \\n\ } 35. 下列程序执行后的输出结果是 (B) A. 6 B. 8 C. 10 D. 12 #define MA(x) x*(x-1) main() { int a=1,b=2; printf(\"%d \\n\36. 变量a所占内存字节数是 (C) A. 4 B. 5 C. 6 D. 8 union U { char st[4]; int i; struct A { int c;二、填空题 1. 表达式1<0<5的值是 1 。 union U u; }a; long l; }; 第 37 页 3. 表达式 ~(10>>1^~5) 的值是 0 。 2. 设变量已正确定义,在程序段B中填入正确的内容,使程序段 A 和程序段B等价。 程序段 A for(k=s=0;k<=10;s+=a[k++]) if(a[k]<0) break; 程序段B for(k=0,s=0; ; s+=a[k++]) if( a[k]<0 || k>10 ) break; 3. 下列程序的输出结果是 100 。 #define T 10 #define MD 3*T printf(“%d”,30/MD); 4. 下列程序的输出结果是 k=5, s=15 。 int k,s; for(k=s=0;k<10&&s<=10;s+=k) k++; printf(“k=%d,s=%d”,k,s); 5. 下列程序的输出结果是 5,9 。 #include void main( ) { int s; s=f(2); printf(“%d,%dn”,s,f(s)); } 6. 对于以下递归函数f,条用f(3)的返回值是 -2。 f(int n) 第 38 页 { return((n<=0)?n:f(n-1)+f(n-2)); } 7. 下列程序的输出结果是 -10 。 int c[ ]={10,0,-10}; int *k=c+2; printf(“%d”,*k--); 8. 下列程序的输出结果是 2 1 。 int k=1,j=2,*p=&k,*q=p; p=&j; printf(“%d %d”,*p,*q); 9. 下列程序的输出结果是 un, g 。 #include { char *str=”one”; printf(“%s,%cn”, f(str)+1,*f(str)+1); } 10. 下列程序的输出结果是 1,3 。 #include printf(“%d,%d”x,y); } 11. 下列程序的输出结果是 1 0 0 1 。 #include 第 39 页 a[k-1][j-1]=(k/j)*(j/k); for(k=0;k<2;k++) for(j=0;j<2;j++) printf(”%d”,a[k][j]); } 12. 下面程序的功能是:计算1到10之间奇数之和及偶数之和,请填空。 #include main() { int a, b, c, i; a=c=0; for(i=0;i<10;i+=2) { a+=i; b = i + 1 ; c+=b; } printf(\"偶数之和=%d\\n\ printf(\"奇数之和=%d\\n\ } 13. 下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请填空。 #include main() { int i, j; for(i=0; i<10 ; i++) { j=i*10+6; if( i % 3 != 0 ) continue; printf(\"%d\ } } 第 40 页 第 41 页 专升本《C语言》练习题六 评卷人 得 分 一、选择题(本题共20小题,每题2分,共40分) 1.以下不合法的用户标识符是( )。A)S2_KEY B)Int C) 4s D)_char 2.设有 int x=11; 则表达式 (++x)%3 的值是( )。A)0 B)1 C)2 D)3 3.C语言源程序名的后缀是( )。 A).exe B).cp C).obj D).c 4.若在定义语句:int a,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是( )。 A)scanf(\"%d\); B)scanf(\"%d%d%d\); C)scanf(\"%d\); D)scanf(\"%d\); 5.C语言中运算对象必须是整型的运算符是 ( )。 A) %= B)/ C) = D) 〈= 6.若有定义语句:int a[3][6]; ,按在内存中的存放顺序,a数组的第10个元素是( )。 A)a[0][4] B)a[0][3] C)a[1][4] D)a[1][3] 7.若要求定义具有10个int型元素的一维数组a,则以下定义语句中错误的是 A)#define N 10 Int a[N] B)#define n 5 Int a[2*n] C)int a[5+5] D)int n=10,a[n] 8.语句printf(\"a\\bre\\'hi\\'y\\\\\\bou\\n\");的输出结果是( )。(说明:'\\b'是退格符) A)re'hi'you B)abre'hi'y\\bou C)a\\bre\\'hi\\'y\\bou D)a\\bre\\'hi\\'y\\\\\\bou 9.下列程序执行后的输出结果是( )。 A)A B) B C) F D) G void main() { int x='f'; printf(\"%c \\n\ 第 42 页 10.若变量已正确定义,有以下程序段 i=0; do {printf(\"%d,\);}while(i++); printf(\"%d\\n\) 其输出结果是( )。 A)0,0 B)0,1 C)1,1 D)程序进入无限循环 11. 有以下程序 #include for(j=3;j<=i;j++) m=m%j; printf(\"%d\\n\); }程序的运行结果是( )。 A)0 B)1 C)2 12. 已定义以下函数 fun(int *p) { return *p; } 该函数的返回值是( )。 A)不确定的值 B)形参p所指存储单元中的值 C)形参p中存放的值 D)形参p的地址值 13. 执行下面的程序段后,变量k中的值为( )。 A)10 B) 3 C) 不定值 D) 0 int k=3, s[2]; s[0]=k; k=s[1]*10; 14. 有以下函数 int aaa(char *s) { char *t=s; while(*t++); t--; return(t-s); } 第 43 页 )3 D以下关于aaa函数的功能叙述正确的是( )。 A)求字符串s的长度 B)比较两个串的大小 C)将串s复制到串t D)求字符串s所占字节数 15. 有以下程序 void main() { char s[ ]={ \"aeiou\ ps=s; printf(\"%c\\n\ } 程序运行后的输出结果是________。 A)a B)o C)u D)e 16. 有以下程序 #include #define F(X,Y) X*Y main() { int a=3, b=4; printf(\"%d\\n\ } 程序运行后的输出结果是( )。 A)12 B)7 C)-7 D)11 17. 有以下程序 main() { int m[][3]={1,4,7,2,5,8,3,6,9}; int i,j,k=2; for(i=0;i<3;i++) { printf(\"%d\ } 执行后输出结果是( )。 A) 2 5 8 B) 3 6 9 C) 4 5 6 D) 7 8 9 18. 以下关于typedef的叙述错误的是 A)用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名 B)用typedef为类型说明一个新名,通常可以增加程序的可读性 C)typedef只是将已存在的类型用一个新的名字来代表 D)用typedef可以增加新类型 19. 有以下程序 #include { FILE *fp; int i; char ch[]=”abcd”,t; fp=fopen(“abc.dat”,”wb+”); 第 44 页 for(i=0;i<4;i++) fwrite(&ch[i],1,1,fp); fseek(fp,-2L,SEEK_END);// 说明:SEEK_END为文件尾 fread(&t,1,1,fp); fclose(fp); printf(“%c\\n”,t); } 程序执行后的输出结果是________。 A)c B)d C)a D)b 20.已知指针p的指向如下图所示,则执行语句 *--p;后*p的值是( )。 A) 20 B)30 C) 19 D) 29 a[0] a[1] a[2] a[3] a[4] 10 20 30 40 50 P 评卷人 得 分 二、填空题(本题共10小题,每题1分,共10分) 1.已知大写字母A的ASCII码是65,小写字母a的ASCII码是97,将变量c 中大写字母转换为对应小写字母的语句是 _____ 。 2.C语言中用于结构化程序设计的三种基本结构是顺序结构、选择结构、__________ 。 3.设有数组定义: char array [ ]=\"Student.\"; 则数组 array所占的空间为________ 。 4.若输入字符串:abcde<回车>,则以下while循环体将执行______次。 while((ch=getchar())==’b’) printf(“*”); 5.若有定义:int *p[4];请说明它含义:定义了一个________。 6.表示“整数x的绝对值不大于10”的C语言表达式是 _________。 7.已知字符A的ACSII码值为65,以下语句的输出结果是_________。 char ch=’B’;printf(“%c%d\\n”,ch,ch); 8.若指针s指向存储单元a[8],p指向存储单元a[0],表达式s-p的值是 _________。 9.用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间,请填空。st=(char*) __________ ; 10. 设 int b=2;表达式(b<<1)&5的值是__________。 评卷人 得 分 三、程序阅读题(本题共6小题,每小题5分,共30分) 1.有下列程序执行后的结果是________。 void main() { int n=0,m=1,x=0; if (!n) x=1; 第 45 页 if (m) x=2; if (x) x=3; printf(“%d\\n”,x); } 2. 有以下程序执行后的结果是________。 void main() { int i; for(i=1;i<=40;i++) { if(i++%5=0) if (++i%8=0) printf(\"%d\ } printf(\"\\n\") } 3. 以下程序执行后的结果是________。 void main() { char s[]=\"67\"; s[1]=‘\\0'; printf(\"%s\\n\ } 4. 有以下程序执行后的结果是________。 void main() { int a=4,b=3,c=2,t=0; if(b>a&&a { char s[ ]= \"abcde\"; s+=2; printf(\"%d\\n\",s[0]); } 6. 有以下程序执行后的结果是________。 void main() { int a=1,b=3,c=5; int *p1=&a,*p2=&b,*p=&c; *p=*p1*(*p2); printf(\"%d\\n\} 评卷人 得 分 四、编程题(本题共3小题,共20分) 1.求1+2+3+…+100的和。 2.求100—200间的全部素数。 第 46 页 3.有一3行4列的矩阵,编程求其中最大元素的值以及所在的行号和列号。 第 47 页 专升本《C语言》练习题七 一、单项选择题 1. ___D___是合法的用户自定义标识符。 A、 b-b B、float C、 A、'n' B、'1' C、\"a\" D、'101' 4. 在 C 程序中,用___B__表示逻辑值“真”。 A、1 B、非 0 的数 C、非 1 的数 D、 大于 0 的数 5. __C____把x、y定义成float类型变量,并赋同一初值3.14。 A、float x, y=3.14; B、float x, y=2*3.14; C、float x=3.14, y=x=3.14; D、float x=y=3.14; 6. 若变量已正确定义,表达式___C___的值是2。 A、2&3 B、1<<1 C、a==2 D、1^3 7. 若变量已正确定义,语句“if(a>b) k=0; else k=1;”和__C____等价。 A、k=(a>b)?1:0; B、k=a>b; C、k=a<=b; D、a<=b ? 0 : 1; 8. 设变量定义为“int a, b;”,执行下列语句时,输入_D____,则a和b的值都是10。 scanf(\"a=%d, b=%d\; A、10 10 B、10, 10 C、a=10 b=10 D、a=10, b=10 9. 下列程序的输出结果是__D___。 fun(int a, int b, int c) { c =a*b; } void main( ) { int c; fun(2,3,c); printf(”%dn”,c); } A、0 B、1 C、6 D、无法确定 10. 在C程序中,若对函数类型未加说明,则函数的隐含类型为__A___。 A、int B、double C、void D、char 11. 表达式 strlen(”hello”) 的值是___B____。 A、 4 B、 5 C、 6 D、 7 12. 设变量定义为“int a[4];”,则表达式__D____不符合C语言语法。 A、*a B、a[0] C、a D、a++ 13. 设变量定义为“int x, *p=&x;”,则&*p相当于__A___。 A、p B、*p C、x D、*&x 14. 若变量已正确定义,_A___不能使指针p成为空指针。 第 48 页 A、p=EOF B、p=0 C、p=’’ D、p=NULL 15. 对于以下的变量定义,表达式__D____不符合C语言语法。 struct node { int len; char *pk; } x = {2, \"right\ A、p->pk B、*p.pk C、*p->pk D、*x.pk 16. 有如下程序 int runc(int a,int b) { return(a+b);} main0 { int x=2,y=5,z=8,r; r=func(func(x,y),z); printf(“%\\d\\n”,r); } 该程序的输出的结果是 (D) A) 12 B) 13 C) 14 D) 15 17. 对于基类型相同的两个指针变量之间,不能进行的运算是 (C) A) < B) = C) + D) - 18. 有如下程序 long fib(int n) { if(n>2) return(fib(n-1)+fib(n-2)); else return(2); } main0 { printf(“%d\\n”,fib(3)); 该程序的输出结果是 (B) A} 2 B} 4 C} 6 D} 8 19. 有如下定义 struct person{char name[9]; int age;}; strict person class[10]={“Johu”, 17, “Paul”, 19 “Mary”, 18, “Adam 16,}; 根据上述定义,能输出字母M的语句是 (D) A) prinft(“%c\\n”,class[3].mane); B) pfintf(“%c\\n”,class[3].name[1]); C) prinft(“%c\\n”,class[2].name[1]); D) printf(“%^c\\n”,class[2].name[0]); 20. 以下所列的C语言常量中,错误的是 (B) A) 0xFF B) 1.2e0.5 C) 2L D) ‘\\72’ 21. 有以下程序段 int k=0 while(k=1)k++; 第 49 页 while 循环执行的次数是 (A) A) 无限次 B) 有语法错,不能执行 C) 一次也不执行 D) 执行1次 22. 以下程序的输出结果是 (C) A) 0 B) 29 C) 31 D) 无定值 fun(int x, int y, int z) { z=x*x+y*y; } main() { int a=31; fun(5,2,a); printf(“%d”,a); } 23. 下列程序段的输出结果是 (A) A) 2 1 4 3 B) 1 2 1 2 C) 1 2 3 4 D) 2 1 1 2 void fun(int *x, int *y) { printf(“%d %d”, *x, *y); *x=3; *y=4;} main() { int x=1,y=2; fun(&y,&x); printf(“%d %d”,x, y); } 24. 当调用函数时,实参是一个数组名,则向函数传送的是 (B) A) 数组的长度 B) 数组的首地址 C) 数组每一个元素的地址 D) 数组每个元素中的值 25. 以下程序的输出结果是 (A) A) 1 B) 2 C) 3 D) 4 long fun( int n) { long s; if(n= =1 || n= =2) s=2; else s=n-fun(n-1); return s; } main() { printf(“%ld\\n”, fun(3)); } 26. 以下程序的输出结果是 (B) A) 16 B) 2 C) 9 D) 1 #define SQR(X) X*X main() { int a=16, k=2, m=1; a/=SQR(k+m)/SQR(k+m); printf(“d\\n”,a); } 27. 以下函数返回a所指数组中最小的值所在的下标值 fun(int *a, int n) 第 50 页 { int i,j=0,p; p=j;
Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务