您好,欢迎来到筏尚旅游网。
搜索
您的当前位置:首页2014《C语言程序设计》专升本练习题

2014《C语言程序设计》专升本练习题

来源:筏尚旅游网


《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 #define N 11 main() {int i,j,a[N][N]; for(i=1;ifor(i=3;ia[i][j]= ;

第 26 页

for(i=1;i2.以下程序的功能是利用函数求100-200间素数(质数)的个数,请在下划线处填上正确的语句,使程序能正确运行。 #include int isprime(int n) { int i,f; f=1;

for(i=2;iif( )n++; printf(\"Numbers of prime:%d\}

四、 写出以下程序运行结果(每题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 int z; int p(int x)

{ 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{ t=a;a=a[j];a[j]=t; i++; j--; fun(a,i,j); } } main()

{ 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 int f(int m) { static int k=2; k++; return k+m; }

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 *f(char *str) { return str=”fun”; } void main( )

{ char *str=”one”;

printf(“%s,%cn”, f(str)+1,*f(str)+1); }

10. 下列程序的输出结果是 1,3 。 #include void p(int *x,int y) { ++*x; y--; } void main( ) { int x=0,y=3; p(&x,y);

printf(“%d,%d”x,y); }

11. 下列程序的输出结果是 1 0 0 1 。 #include { int j,k,a[2][2]; for(k=1;k<3;k++) for(j=1;j<3;j++)

第 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 void main() { int i,j,m=55; for(i=1;i<=3;i++)

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 void main()

{ 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&&a5. 有以下程序执行后的结果是________。 void main()

{ 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、 D、 _isw 2. 若变量已正确定义并赋值,表达式___B___不符合C语言语法。 A、a*b/c; B、3.14%2 C、2, b D、a/b/c 3. ___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;

for(i=j;iif(a[i]在下划线处应填入的是 (D)

A) i=p B) a[p]=a[i] C) p=j D) p=i 二、填空题

1. 表示“x≥y≥z”的C表达式是___ x>=y && y>=z ____。 2. 下列程序段的输出是__1____。 printf(\"%on\

3. 下列程序段的输出是__6,90____。 int k; float s;

for (k=0, s=0; k < 7; k ++) s += k/2;

printf(\"%d, %fn\

4. 下列程序段的输出是__5,25_____。 #define f(a, b, x) a*x+b

printf(\"%d, %dn\ 5. 下列程序段的输出是_*#*#____。 main() { int k;

for(k=1; k<5; k++) { if(k % 2) printf(\"*\"); else continue; printf(\"#\"); } }

6. 下列程序段的输出是__5 8___。 # include int f(int x) { static y=1; y++; x += y; return x; }

void main() { int k; k=f(3);

printf(\"%d %dn\ }

7. 下列程序段的输出是___5__。

第 51 页

int *p, *q, k = 5 , j = 6 ; q = &k ; p = q ; q = &j ; printf(\"%d\ 8. 函数

void f(char s[ ], char t[ ]) { int k=0;

while (s[k]=t[k]) k++; }

等价于

void f(char *s, char *t)

{ while (_*s++=*t++____); }

9. 下列程序段的输出是_ ne,s ____。 char *a[2]={\"one\ printf(\"%s,\ printf(\"%cn\

10. 下列程序编译后生成 t.exe, 运行 t input output zoo oil 的输出结果是_zoo___。

void main(int argc, char * argv[ ]) { int k;

char *p=argv[1];

for(k=2; kif(strcmp(argv[k], p)>0) p=argv[k]; printf(\"%sn\ }

11. 下列程序调用swap函数交换a和b的值,并输出交换后的a和b的值。程序的输出结果是:After swap 5, 3。 void main( )

{ int a=3, b=5; swap( &a, &b ) ;

printf(\"After swap %d, %d\ }

swap( int *p, int *q ) { int t; t=*p; ; *p=*q ; *q=t ; }

三、填空题

1.若a是int型变量,且a=5,则下面表达式的值为:__________________。 2.C语言程序中引用标准输入输出库函数,必须在每个源文件的首部写下#include

<__stdio.h_____stdlib.h______> 。 3.若int型变量占内存2个字节、double型变量占内存8个字节,有如下定义:

第 52 页

union data {

int i; double d;

}a;则变量a在内存中所占字节数为:__8____。

4.当文件关闭成功后,fclose函数的返回值为:__0 _。 四、阅读程序题

1.下面程序的运行结果是___8,_3, 5___。 #include main()

{ int i=2,j=3,k;

k=i+j; {

int k=8;

if(i=3) printf(“%d”,k); else printf(“%d”,j);

}

printf(“%d%d”,i,k); }

2.下面程序的运行结果是__ABCDEFG___。 #include #define SIZE 8 void main()

{ char s[]=“GDBFHACE”; int i,j,t; for(i=0;ifor(j=i+1;j<=SIZE;j++)

if(s[i]> s[j]) { t= s[i]; s[i] = s[j]; s[j] =t; }

for(i=0;i3.下面程序的运行结果是__4, 3, 25, 7__。 #include

int fun(int a,int b,int *cn,int *dn,)

{ *cn=a*a + b*b; *dn= a*a - b*b; a=5;b=6;} main() {

int a=4,b=3,c=5,d=6; fun(a,b,&c,&d); printf(“a=%d,b=%d,c=%d,d=%d\\n”,a,b,c,d);

}

4.下面程序的运行结果是: 6, 10 #include

第 53 页

} int fun(int x) { static y=2; y++; x+=y; return x;

}

void main() { int k; k=fun(3); printf(“%d”,%d\\n”, k, fun(k));

}

5.下面程序的运行结果是____15___。 #include main()

{ int s=0,m;

for(m=7;m>=3;m-- ) switch(m) {

case 1: case 4:

case 7:s++;break; case 2:

case 3:

case 6:s+=2; case 0:

case 5:s+=3;break;

}

printf(“s=%d\\n”,s); }

五、完善程序题

1.下面程序的功能是找出100至200之间不能被3整除但能被5整除的数。 #include main() {

int m;

for(m=100;m<=200;m++) if( m%3!=0 && m%5==0 ) printf(“%d\”,m); } 2.下面程序通过指向整型变量的指针将数组m[4][3]d的内容按4行3列的格式输出,请给printf()填入适当的参数,使之通过指针p将数组元素按要求输出。

#include main()

第 页

{

int m[4][3]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}; int i,j,*p=m;

for(i=0;i<4;i++) {

for(j=0;j<3;j++) printf(“%4d”,__*((p+i)+j)___); } }

3.下面程序能够完成交换数组a和数组b中的对应元素的功能。 #include

swap(int *p1,int *p2) {

int temp;

__________________________ }

main() {

int a[5]={1,3,5,7,9}; int b[5]={2,4,6,8,10}; int i;

for(i=0;i<5;i++) swap(&a[i],&b[i]);

for(i=0;i<5;i++)

printf(“a[%d]=% —4d”,i,a[i])

printf(“\\n”); for(i=0;i<5;i++)

printf(“b[%d]=% —4d”,i,b[i])

printf(“\\n”);

}

4.在某大学举行的演讲比赛中,有十个评委为参赛的选手打分,分数为0~100分。选手最后得分为:去掉一个最高分和一个最低分后其余八个分数的平均值 #include main() {

int max,min,score,i; int sum=0;

max=0;min=100;

for(i=0;i<10;i++) {

printf(“Input number %d=”,i+1); scanf(“%d”,&score); sum+=score;

if(max第 55 页

if(min>score) min=score; } printf(“Canceled max score:%d\\nCanceled min score:%d\\n”,max,min);printf(“Average score:%.1f\\n”,______________________); }

5.把指针str所指的字符串按相反的顺序赋给rev[ ]。 #include main() {

char *str=“abcdefg”; char rev[10]; int i; printf(“\\n”);

for(i=0;i<7;i++)

_________________________ rev[i]=‘\\0’; printf(“%s\\n”,rev); }

六、编程改错题 1.

#include char a=“Beijing” main( ) {

printf(“%s is one city in China.\\n”,a); p1( ); p2( ); } p1( ) {

printf(“%s is one of the biggest city”,a); return; }

p2( ) {

printf(“in the world.\\n”); return; }

错误的行是:___________________________________ 改为:_________________________________________

2.求k1kk2k1100501k1k

10⑴ #include

第 56 页

⑵ main() ⑶ {

⑷ int n1=100,n2=50,n3=10; ⑸ int k;

⑹ float s1=0,s2=0,s3=0; ⑺ for(k=1;k<=n1;k++) ⑻ s1=s1+k;

⑼ for(k=1;k<=n2;k++) ⑽ s2=s2+k*k;

⑾ for(k=1;k<=n3;k++) ⑿ s3=s3+k/10; ⒀ printf(“total=%8.2f\\n”,s1+s2+s3); ⒁ }

错误的行是:___________________________________ 改为:_________________________________________ 3.本程序能够在屏幕显示出如下图形。 ####### ##### ### #

⑴ #include ⑵ void main() ⑶ {

⑷ int i,j,k;

⑸ for(i=1;i<=4;i++) ⑹ {

⑺ for(k=1;k<=36+i;k++) ⑻ printf(“”);

⑼ for(j=1;j<=i;j++) ⑽ printf(“#”); ⑾ printf(“\\n”); ⑿ } ⒀ }

错误的行是:___________________________________ 改为:_________________________________________

第 57 页

专升本《C语言》练习题八

一、 填空題(每空1分,共20分)

1.C程序是由 构成的,一个C源程序至少且仅包含一个 。 2.C语言规定标识符只能由 、 和下划线3种字符组成,且第一个字符必须为 或下划线。

3.著名计算机科学家沃思提出的一个公式:数据结构+算法= 。 4.Turbo C++中,若有语句:int a;则a的范围是-32768~ 。 5.C中的转义符“\\n”表示: 。 6.表达式 21 % 4 的值为 。

7.C语言中没有专门的 变量,如果想将一个字符串存放在变量中以便保存,必须使用字符数组。

8.已知a=79.345,则表达式 (int)a 的值为 。 9.表达式 3 & 2 的值是 。 10. 若a=5,经a+=3;后a= 。

11.已知ch='B',则表达式【(ch>='A ' && ch<='Z')? (ch+32):ch 】的值为 。 12.C中定义符号常量PI为3.14159的宏命令是 。

13.函数形参和调用的实参是普通变量时,参数按 方式进行传递。 14.C中逻辑运算符的优先次序是:   。

15.定义一个共用体变量,共三个成员分别是字符型、整形和浮点型,则该共用体变量所占内存长度为 个字节。 二、 单项选择题(每题2分,共40分) 1.下列C语言标识符中,合法的是( )

A. if

B. return

C. 23a D. a23

2.欲从键盘给整型变量a赋值3,b赋值2,则对应语句 scanf(\"%d,%d\ 的输入格式是)

A. 3 2 B. 2,3

C. 2 3 D. 3,2

3. C语言源程序文件经过C编译程序编译连接之后生成的文件后缀名是( )

第 58 页

A. .exe B. .obj C. .bat D. .c

4.结构化程序设计的三种基本结构是( ) A. 顺序结构、复杂结构、循环结构 B. 顺序结构、复杂结构、分支结构 C. 顺序结构、分支结构、选择结构

D. 顺序结构、选择结构、循环结构

5.以下表达式中,值为0的是()

A. 4%5 B. 4/5.0 C. 4/5

D. 4<5

6.设下列表达式中所涉及的变量均已正确定义,则不符合C语言语法的是(

A. 4&&3

B. a++

C. a=b=5

D. int(3.14159)

7.设变量定义为【int a[3]={1,3,5}, *p=&a[0]+1; 】,则*p的值是( )

A. 2 B. 3

C. 4

D. &a[0]+1

8. 在C 语言程序中,在函数内部定义的变量称为( )

A. 全局变量

B. 外部变量

C. 全程变量

D. 内部变量

9.对于以下的变量定义,正确的表达式是( )

struct node {

char s[10]; int k; } p[4];

A. p->k=2 B. p[0]->k=2

C. p(0)->k=2

D. p->s='a'

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]; 】,则p的值是( ) A. 数组a的首地址 B. 数组a的第1个元素的地址

C. 数组a的第“1”行的首地址 D. 数组a的第“1”列的首地址

13.用链表表示线性表的优点是( )

第 59 页

A. 便于随机存取 B. 便于插入和删除操作

C. 花费的存储空间较顺序存储少D. 数据元素的物理顺序与逻辑顺序相同

14. 结构化程序设计主要强调的是( )

A. 程序的规模 C. 程序的效率

B. 程序设计语言的先进性 D. 程序清晰的结构

15.以下表达式中,不正确的字符常量是( )

A. 'n’ B. \"a\" C. '2’ D. '\\101’

16. 若【int x=12,*p=x;】,则正确的赋值表达式是( )

A. p=x

B. p=*x C. *p=x

D. *p=*x

17.设有如下程序段:int i=5; for(;i<=10;)i++;执行完这段程序后,i的值是( )

A. 5 B. 6

C. 10 D. 11

18.设有如下程序段:int i=15; while(i<15)i++; 则以下描述中正确的是( )

A. 循环体语句执行15次

B. 这是一个死循环 D. 循环体语句只执行一次

C. 循环体语句一次也不执行

19.设有如下程序段:char a[2][6]={\"abcde\ printf(\"\\n%s\这段程序执行后,屏幕输出的结果是( ) A. abced B. uvwxy C. b D. v 20.设有如下程序段:

union{int i; char c;}a; a.i=12; a.c='A'; printf(\"\\n%d\这段程序执行后,屏幕输出的结果是( )

A. 12 B. 97 C. 65 D. A

三、 程序填空(每空3分,共15分)

1.已知fibonacci数列:1,1,2,3,5,8,......,它可由下面公式表述: F(1)=1 n=1 F(2)=1 n=2 F(n)=F(n-1)+F(n-2) n>2

以下程序的功能是求F(49)的值,请在下划线处填上正确内容,使程序能正确运行。

#include #include

第 60 页

#include main() { int i;

double f[50]; f[1]= ;f[2]= ; for(i=3;i<=49;i++)

f[i]= ; printf(\"f[49]=%12.0lf\}

2.以下程序的功能是用递归法求n!,请在下划线处填上正确的语句,使程序能正确运行。 #include long f(int n) {

if(n==1)return( ); else return ( ); } main() { int n; printf(\"n=\"); scanf(\"%d\ printf(\"%d!=%ld\}

四、 写出以下程序运行结果(每题4分,共12分) 1.以下程序输出的结果是: #include \"stdio.h\"

void main() {char s[]=\"hello\\nworld\";

printf(\"%s\}

第 61 页

2.以下程序输出的结果是: #include \"stdio.h\" void main() {int i,g,s,b,q;

for(i=1234;i<1236;i++)

{ g=i/1 %10; s=i/10 % 10; b=i/100 % 10; q=i/1000 % 10; printf(\"%d%d%d%d\\n\ } }

3. 以下程序输出的结果是: #include \"stdio.h\" void main(){

char ch[]=\"I-love-Great-Wall-of-China!\"; char *p=ch; printf(\"%c\}

五、 编程题(第1题5分,第2题8分,共13分)

1.将一张百元大钞对换成1元、5元、10元的小钞,要求每种小钞最少要一张,编程求共有多少种对换方法。

2.编程输出所有\"水仙花数\"。(一个三位数等于它每一位数字的立方和,那么我们称这个数为\"水仙花数\" )

一、 填空題(每空1分,共20分) 1 2 3 4 5 6 函数 字母 程序 32767 换行 1 数字 主函数 或 main函数 字母 第 62 页

7 8 9 10 11 12 13 14 15

字符串 79 2 8 b 或 98 #define PI 3.14159 值传递 或 传值 ! 4

&& || 二、 单项选择题(每题2分,共40分) 1 D 11 D 2 D 12 C 3 A 13 B 4 D 14 D 5 C 15 B 6 D 16 C 7 B 17 D 8 D 18 C 9 A 19 B 10 C 20 C 三、 程序填空(每空3分,共15分) 1 2

1 1

1 f[i-1]+f[i-2] n*f(n)

四、 写出以下程序运行结果(每题4分,共12分) 1. Hello world

评分标准:输出内容正确扣得分,格式正确得2分 2. 5321 3. e

五、 编程题(第1题5分,第2题8分,共13分) 1.参考程序:

第 63 页

#include \"stdio.h\" void main() {

int y,w,s,n=0; for(y=1;y<100;y++) for(w=1;w<20;w++) for(s=1;s<10;s++)

if(100==y+w*5+s*10)n++; printf(\"n=%d\}

评分标准:程序结构正确得3分,算法正确得2分 2.参考程序: #include \"stdio.h\" void main() {

int i,g,s,b,m;

for(i=100;i<=999;i++) {g=i%10; s=i/10%10; b=i/100%10;

m=g*g*g+s*s*s+b*b*b; if(i==m)printf(\"\\n%d\ } }

第 页

专升本《C语言》练习题九

一、单项选择题

1. ___D___是合法的用户自定义标识符。

A、 b-b B、float C、 D、 _isw 2.若变量已正确定义并赋值,表达式___B___不符合C语言语法。 A、a*b/c; B、3.14%2 C、2, b D、a/b/c 3. ___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、无法确定

第 65 页

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成为空指针。 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); }

第 66 页

main0

{ printf(“%d\\n”,fib(3)); 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++;

while 循环执行的次数是 (A)

A) 无限次 B) 有语法错,不能执行 C) 一次也不执行 D) 执行1次 22. 以下程序的输出结果是 (C)

A) 0 B) 29 C) 31 fun(int x, int y, int z) { z=x*x+y*y; } main() { int a=31; fun(5,2,a); printf(“%d”,a);

D) 无定值

该程序的输出结果是 (B)

第 67 页

}

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);

第 68 页

printf(“d\\n”,a); }

27. 以下函数返回a所指数组中最小的值所在的下标值

fun(int *a, int n) { int i,j=0,p; p=j;

for(i=j;i在下划线处应填入的是 (D)

A) i=p B) a[p]=a[i] C) p=j D) p=i 二、填空题

1.表示“x≥y≥z”的C表达式是___ x>=y && y>=z ____。 2.下列程序段的输出是__1____。 printf(\"%on\ 3.下列程序段的输出是__6,90____。 int k; float s; for (k=0, s=0; k < 7; k ++) s += k/2; printf(\"%d, %fn\ 4.下列程序段的输出是__5,25_____。 #define f(a, b, x) a*x+b

printf(\"%d, %dn\5.下列程序段的输出是_*#*#____。 main() { int k;

for(k=1; k<5; k++) {

if(k % 2) printf(\"*\"); else continue; printf(\"#\"); } }

第 69 页

6.下列程序段的输出是__5 8___。 # include int f(int x)

{ static y=1; y++; x += y; return x;} void main() { int k; k=f(3);

printf(\"%d %dn\}

7.下列程序段的输出是___5__。 int *p, *q, k = 5 , j = 6 ; q = &k ; p = q ; q = &j ; printf(\"%d\8.函数

void f(char s[ ], char t[ ])

{ int k=0; while (s[k]=t[k]) k++; } 等价于 void f(char *s, char *t)

{ while (_*s++=*t++____); } 9. 下列程序段的输出是_ ne,s ____。 char *a[2]={\"one\ printf(\"%s,\printf(\"%cn\

10. 下列程序编译后生成 t.exe, 运行 t input __zoo___。

void main(int argc, char * argv[ ] ) { int k; char *p=argv[1]; for(k=2; kif(strcmp(argv[k], p)>0) p=argv[k]; printf(\"%sn\}

第 70 页

output zoo oil 的输出结果是 11.下列程序调用swap函数交换a和b的值,并输出交换后的a和b的值。程序的输出结果是:After swap 5, 3。 void main( ) { int a=3, b=5;

swap( &a, &b ) ;

printf(\"After swap %d, %d\ }

swap( int *p, int *q )

{ int t; t=*p;

; *p=*q ; 第 71 页*q=t ; }

专升本《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. 有以下程序

main() { int i; for(i=0;i<3;i++) switch(i) {

case 0:printf(\"%d\

case 2:printf(\"%d\ default:printf(\"%d\ }

}

程序运行后的输出结果是 (C)

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) 。

第 72 页

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) 。

A. char str[ ]=”string”; B. char str[10]; str=”string”; C. char *p=”string”; D. char *p; p=”string”;

10. 设程序中不再定义新的变量,写出在函数main中可以使用的所有变量为:(B)

#include int z; int p(int x)

{ 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.有以下程序

main() { int i=0,x=0; for (;;) {

if(i==3||i==5) continue; if (i==6) break; i++; s+=i; };

printf(\"%d\\n\ }

程序运行后的输出结果是 (D)

A)10 B)13 C)21 D)程序进入死循环 12.有以下程序

main()

第 73 页

{ char a,b,c,d;

scanf(\"%c,%c,%d,%d\ printf(\"c,%c,%c,%c\\n\

} 若运行时从键盘上输入:6,5,65,66<回车>。则输出结果是(A) A)6,5,A,B B)6,5,65,66 C)6,5,6,5 D)6,5,6,6

13.s12和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]+1)所代表的数组元素是 (C)

A)a[0][1] B)a[1][0] C)a[1][1] D)a[1][2]

15.程序中对fun函数有如下说明 void *fun(); 此说明的含义是:(C) A)fun了数无返回值

B)fun函数的返回值可以是任意的数据类型 C)fun函数的返回值是无值型的指针类型 D)指针fun指向一个函数,该函数无返回值 16.有以下程序

void fun(int *a,int i,int j) { int t; if(i{ t=a;a=a[j];a[j]=t; i++; j--; fun(a,i,j); } } main()

{ int x[]={2,6,18},i; fun(x,0,3);

p[0]=a[1];

第 74 页

for(i=0;i<4;i++) printf(\"%2d\ printf(\"\\n\");

} 程序运行后的输出结果是 (C)

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'; 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);

第 75 页

} 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;

……

}

程序在执行了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语句退出。

第 76 页

C) 用do-while语句构成的循环,在while后的表达式为非零时结束循环。 D) 用do-while语句构成的循环,在while后的表达式为零时结束循环。 27. 下列程序执行后的输出结果是(A)

A) G B) H C) I D) J

main() { 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 C) a=d, b=d D) a=%d,b=%d #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)

第 77 页

A) void fun(int m, int x[]) B) void fun(int s, int h[41]) 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

第 78 页

{ char st[4]; struct A { int c;二、填空题

int i; long l; };

union U u; }a;

1. 表达式1<0<5的值是 1 。

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 int f(int m)

{ static int k=2; k++; return k+m; } void main( )

{ int s; s=f(2); printf(“%d,%dn”,s,f(s)); }

第 79 页

6. 对于以下递归函数f,条用f(3)的返回值是 -2 。 f(int n)

{ 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 *f(char *str) { return str=”fun”; }

void main( )

{ char *str=”one”; printf(“%s,%cn”, f(str)+1,*f(str)+1); 10. 下列程序的输出结果是 1,3 。 #include void p(int *x,int y) { ++*x; y--; } void main( )

{ int x=0,y=3; p(&x,y); printf(“%d,%d”x,y); } 11. 下列程序的输出结果是 1 0 0 1 。 #include { int j,k,a[2][2]; for(k=1;k<3;k++) for(j=1;j<3;j++) 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]); }

第 80 页

} 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 ; 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\ } }

c+=b; }

第 81 页

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务