77范文网 - 专业文章范例文档资料分享平台

C语言程序设计综合练习题

来源:网络收集 时间:1970-01-01 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

}

3.main()

{ int p=30;

printf(\}

4.main()

{ int x,y=0;

printf(“%c\\n”, x=99) ;

printf(“%d\\n”, (x++ , ++y , x+y)) ;

}

第5章 选择结构程序设计 一、读程序,写出程序执行结果

1.void main() { int x= - 9, y ;

if(x>0) y=10 ; else if(x= =0) y=0; else if(x<-5) y= -3; else y= -2; printf(“%d\\n”,y);

}

2.void main() { int a, b, c,x ; a=b=c=1; x=3 ; if ( !a) x-- ; else if (b) if (c) x=3; else x=4;

printf(“%d\\n”, x); } 3.void main()

{ int a=12, b=5, c=-3 ;

if(a>b) if(b<0) c=0; else c++;

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

4. main()

{ int x=100,a=20,b=10; int v1=5; if(a

第6页(共23页)

if(!v1) x=1; else x=10; x=-1;

printf(“%d”,x); } 5.main()

{ int a=4,b=3,c=5,t=0; if (a

printf(\ }

6. main()

{ int i=2; switch(i)

{ case 1: printf(“%d”,i++); break;

case 2: printf(“%d”,i++); case 3: printf(“%d”,i++); break;

case 4: printf(“%d”,i++); } }

7. void main() { int s=?3?;

switch(s-'2') { case 0 ;

case 1 : putchar(s+4);

case 2 : putchar(s+4); break; case 3 : putchar(s+3); default : putchar(s+2); }

}

8.void main()

{ int x=2;

switch(1+x) { case 0 ;

case 1 : printf(“apple”); break ; case 2 : printf(“hello”); break; case 3 : printf(“world”);

default : printf(“thank you”); }

}

第7页(共23页)

第6章 循环控制 一、选择题

1.对于循环 for (k=16; k>0; k-=3) putchar(?*?); 输出是

A)***** B)****** C)******* D)无限循环

2.若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)

s=a; for(b=1;b<=c;b++) s=s+1;

则与上述程序段功能等价的赋值语句是

A)s=a+b; B)s=a+c; C)s=s+c; D)s=b+c;

3.设有int i ,x ; 则循环语句: for(i=0,x=0;i<=9&&x!=876;i++) scanf(“%d”,&x);

A)最多执行10次 B)最多执行9次 C)是无限循环 D)循环体一次也不执行

二、读程序,写出程序执行结果

1. main()

{ int n=4 ;

while(n- -) printf(\

2.main() { int i;

for (i=0; i<3; i++) switch ( i )

{ case 1: printf(\ case 2: printf(\ default : printf(\

} } 3.main()

{ int i,m=0,n=0,k=0; for(i=9; i<=11;i++) switch(i/10)

{ case 0: m++; n++; break; case 10: n++; break; default: k++; n++; }

printf(\}

4.main()

{ int i,j;

for(i=5; i>1; i- -)

{ for(j=0;j<11-2*i;j++)putchar(? ?); for(j=0;j<2*i-1;j++) putchar('9');

第8页(共23页)

}

}

5. main()

{ int a;

for(a=1;a<6;a++) { if(a%2)

printf(“%”); else

continue; printf(“@”); } }

6.void main() { int x=2,y=3; int j;

for(j=1 ; y>0 ; y - - ) j=j*x; printf(“j=%d\\n”,j); } 7.void main() { int n= -5 ; while(++n)

printf(\

} 8. main()

{ int x=15;

while(x>10 && x<50) { x++;

if(x/3){x++;break;} else continue; } printf(“%d\\n”,x); }

9.void main()

{ int x,y;

for(x=1,y=1; y<=50; y++) { if(x>=10) break;

if(x%2==1) {x+=5; continue ;} x-=3; }

printf(\ %d\\n\ } 10.main()

{ int k=4,n=0; for( ; n

if(n%3!=0) continue;

第9页(共23页)

k--; }

printf(\

}

11.void main()

{ int i=1;

while (i<10)

if(++i%5!=3) continue ; else printf(\}

12. main()

{ int k=0,m=0; int i,j;

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

{ for(j=0;j<3;j++) k++; k-=j; } m=i+j;

printf(“k=%d, m=%d”,k,m); }

13.void main() { int t, n=15;

t=0; do { t+=n;

n-=2; } while (n>0); printf(“%d\\n”, t); }

14.void main()

{ int n1,n2; n2=5678; while(n2!=0) { n1=n2;

n2=n2/10; printf(\ } }

第7章 数组 一、选择题

1.在执行int a[ ][3]={{1,2},{3,4}}; 语句后a[1][2]的值是

第10页(共23页)

《C语言程序设计》综合练习题

要求掌握的章节:第1章、第3章~第8章、

第10章(前4节)、第11章(前6节)

重点章节:第3章~第8章、第10章(前4节) 难点章节:第8章、第10章(前4节) 考试题型:①选择题(填空题)(20%)

②读程序题(40%) ③编程序题(40%)

第1章 C语言概述 一、选择题

1.能将高级语言编写的源程序转换为目标程序的软件是

A)汇编程序 B)编辑程序 C)解释程序 D)编译程序 2.在一个C程序中

A)main函数必须出现在所有函数之前 B)main函数可以在任何地方出现 C)main函数必须出现在所有函数之后 D)main函数必须出现在固定位置 3.C语言中用于结构化程序设计的三种基本结构是

A)顺序结构、选择结构、循环结构 B)if、switch、break C)for、while、do-while D)if、for、continue 4.C语言程序的基本单位是

A) 函数 B) 过程 C) 子例程 D) 子程序

二、填空题

1.C语言程序总是从 函数开始执行。

2.C语言是种面向_____的程序设计语言,其程序的基本单位是 。. 3.C语言中的函数由 、 两部分组成。

4.结构化程序设计中所规定的三种基本控制结构是 、 和 。

第1页(共23页)

第3章 数据类型、运算符与表达式 一、选择题

1.下列关于C语言用户标识符的叙述中正确的是

A)用户标识符中可以出现下划线和中划线(减号) B)用户标识符中不可以出现中划线,但可以出现下划线

C)用户标识符中可以出现下划线,但不可以放在用户标识符的开头

D)用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头 2.C语言中基本数据类型有

A) 整型、实型、逻辑型 B)整型、字符型、逻辑型 C) 整型、实型、字符型 D)整型、实型、字符型、逻辑型 3.在计算机中,一个字节所包含二进制位的个数是

A)2 B)4 C)8 D)16

4.用8位无符号二进制数能表示的最大十进制数为 A)127 B)128 C)255 D)256

5.在计算机系统中,存储一个汉字的国标码所需要的字节数为

A) 1 B) 2 C) 3 D) 4 6.在C语言中,char型数据在内存中的存储形式是

A)原码 B)补码 C)反码 D)ASCII码 7.十六进制数100转换为十进制数为

A)256 B)512 C)1024 D)64 8.十六进制数7A转化成八进制数是

A)123 B)122 C)173 D)172

9.十进制数32转化成十六进制数是

A)20 B)ff C)10 D)21 10.与十进制数511等值的十六进制数为

A) 1FF B) 2FF C) 1FE D) 2FE 11.以下选项中可作为C语言合法整数的是

A)10110B B)0386 C)0Xffa D)x2a2 12. 以下选项中合法的实型常数是

A) 5E2.0 B) E-3 C) .2E0 D) 1.3E

13.依据C语言的语法规则,下列( )是用户定义的合法标识符。 A)int B)INT C)jin#2 D)8f 14.依据C语言的语法规则,下列合法标识符是 A)Else B)else C)user$2 D)5_examp 15.以下不正确的字符常量是

A)'8' B)'\\xff ' C)'\\887' D)' ' 16.以下不正确的字符常量是

A) '\\0' B) '\\xgg ' C) '0' D) ' a' 17. 以下选项中不合法的八进制数是

A) 01 B) 077 C) 028 D) 00 18.下列运算符优先级最高的是

A) ? B) + C) && D) !=

第2页(共23页)

19.若有说明:char s1='\\067', s2='1' ; 则变量s1,s2在内存中各占的字节数是。 A)1 1 B)4 1 C)3 1 D)1 2 20.以下不能定义为用户标识符的是

A)scanf B)Void C)_3com_ D)inte 21. 在C语言中,可以作为用户标识符的一组标识符是

A) void define WORD B) as_b3 _224 Else C) Switch -wer case D) 4b DO SIG

22. 若有: int x=1,n=5; 则执行语句x%=(n%2)后,x的值为

A) 3 B) 2 C) 1 D) 0

23.设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值是

A) 10 B) 9 C) 8 D) 7

24.已知: char a=?a?; int b=0; float c= -1.2; double d=0; 执行语句:c=a+b+c+d; 后,变量c的类型是

A)char B)int C) double D)float 25.表示x≤0或x≥1的正确的表达式是

A) x>=1||x<=0 B) x>1 || x<=0 C) x>=1 or x<=0 D) x>=1 || x<0

26. 对于int x=12, y=8; printf (“%d%d%d”, !x, x || y, x&&y); 输出的结果是 A)0 1 1 B)0 1 0 C)0 0 0 D)1 1 1 27. 设有int x=11;则表达式(x++*1/3)的值是

A) 3 B) 4 C) 11 D) 12 28. 以下非法的赋值语句是

A) n=(i=2,++i); B)j++; C) ++(i+1); D)x=j>0; 29.已定义c为字符型变量,则下列语句中正确的是

A)c='97'; B)c=\ C)c=\ D)c=97; 30. 执行int j,i=1; j=-i++; 后j的值是

A) -1 B) -2 C) 1 D) 2 31.以下选项中非法的表达式是

A)(a+2)++ B)i=j==0 C)(char)(65+3) D)x+1=x+1

32.已知小写字母的ASCII码为97,对于int a=99, b='b'; printf(“%c,%d”, a , b);的结果是 A) 99, b B)c, 98 C)99, 98 D)c, b 33.以下选项中非法的表达式是

A)0<=x<100 B)i=j==0 C)(char)(65+3) D)x+1=x+1 34.下列错误的表达式是

A)-x++ B)(-x)++ C)x+++y D)++x+y

35.对于int x=12, y=8; printf (“%d%d%d”, !x, x || y, x&&y); 输出的结果是 A)0 1 1 B)0 1 0 C)0 0 0 D)1 1 1

36.设a,b,c均为int型变量,且a=3, b=4, c=5,则下面的表达式中,值为0的表达式是 A)'a' && 'b' B)0 | |1 C)a | | b + c && b-c D)! ( ( a

A) 1.4 B) 1 C) 2.0 D) 2

38. 以下选项中,与k=n++完全等价的表达式是

A) k=n,n=n+1 B) n=n+1,k=n C) k=++n D) k+=n+1 39. 设a=3,b=4,c=5,则逻辑表达式:a || b+c && b==c 的值是

第3页(共23页)

A)1 B)0 C)非0 D)语法错

40.若x为int型变量,则逗号表达式(x=4*5,x*5),x+25的结果是

A)20 B)45 C)100 D)表达式不合法 41.若有语句int i=﹣19, j=i%4;printf(\则输出结果是

A)3 B)-3 C)4.75 D)0

42.设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是

A)x=x*100+0.5/100.0; B)x=(x*100+0.5)/100.0; C)x=(int)(x*100+0.5)/100.0; D)x=(x/100+0.5)*100.0; 43.已知小写字母的ASCII码为97,对于int a=99, b='b'; printf(“%c,%d”, a , b);的结果是 A) 99, b B)c, 98 C)99, 98 D)c, b 44.若有语句int i=﹣19, j=i%4;printf(\则输出结果是。

A)3 B)-3 C)4.75 D)0

45.语句: printf(\的输出结果为

a) 无输出 b) 结果不确定 c) 1 d) 2

46.有定义语句:int x, y;,若要通过scanf(\语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是

A)11 12<回车> B)11, 12<回车>

C)11,12<回车> D)11,<回车>12<回车> 47.设a=3,b=4,c=5,则逻辑表达式:a || b+c && b==c 的值是 A)1 B)0 C)非0 D)语法错

48.已知 char ch='A'; 且表达式 ch=(ch>='A' && ch<='Z') ?(ch+32) ::ch 的值是( ) A) A B)a C) Z D)出错 49.如下程序段:

int x=2005, y=2006; printf(\则以下叙述中正确的是

A)输出语句中格式说明符的个数少于输出项的个数,不能正确输出 B)运行时产生出错信息 C)输出值为2005 D)输出值为2006 50.设有如下程序段:

int x=2, y=3;

printf(\则以下叙述中正确的是

A)输出语句中格式说明符的个数少于输出项的个数,不能正确输出 B)运行时产生出错信息 C)输出值为2 D)输出值为3

二、填空题

1.C语言中逻辑”真”用 表示 ,逻辑”假”用 表示。

第4页(共23页)

2.在C语言中,整数可用 进制、 进制和 进制3种数制表示。 3.十进制数52转化成八进制数是 。 4.十六进制数7A转化成八进制数是 。 5.十进制数47转化成八进制数是 。

6.在C语言中,?\\101?是种特殊的字符常量,它称为 ,其表示的字符为 。 7.在C语言程序中,整型数可用十进制、 进制和 进制3种数制表示。070是个合法的 整型数。

8.字符串 “ab\\034\\\\\\x79”的长度为 。 9.十六进制数7A转化成八进制数是 。

10.语句: printf(\的输出结果为 。

11.若w=1,x=2,y=3,z=4,则条件表达式w < x ? w : y < z ? y : z 的结果为 。

12.设a, b, c均为int型变量,且a = 3, b = 4, c = 5,则表达式: ?a?|| b + c && b-c 的值是 。 13.在C语言中,”a” 表示 常量,?a? 表示 常量。 14.表达式: 'a' – 0x20 – 'A' 的值是

16.若有说明语句,int i= -3,j; 则执行语句j=(++i)+(i++); 后j的值是 。 17.已知 int j, i=2; 执行语句 j= -i++ ; 后,j的值是 。 18.设int i=1; char c='1'; 则条件表达式 c= =1 的值是 。 19.语句: printf(\的输出结果为 。 20有:char c='A'; printf(\则输出的结果为 。 21有:int x= -3;则执行语句:x+=x-=x*x; 后x的值为 22语句 printf(“%%%%\\n”); 的输出为 。

23若有说明:char s1='\\xff', s2='f' ; 则变量s1,s2在内存中所占的字节数均为 。 24在C语言中,char型数据在内存中是以 形式存储,其存储的字节数是 。 25设x,y,,z均为int型变量,写出描述“x或y中至少有一个小于z”的表达式是

第4章 最简单的C程序设计——顺序程序设计 一、读程序,写出程序执行结果

1.void main() { int a=5, b=8;

printf(“a=%d b=%d\\n”, a,b) ; a=a+b; b=a-b; a=a-b; printf(“a=%d b=%d\\n”, a,b) ; } 2.main()

{ int x,y=1;

printf(“%c\\n”, x=99) ;

printf(“%d\\n”, (x++ , ++y , x+y)) ;

第5页(共23页)

A、3 B、4 C、0 D、2

2.已知:int a[ ][3]={1,2,3,4,5,6,7,8,9,0}; 则数组a的第一维的大小是 A)2 B)3 C) 4 D)无法确定; 3. 以下能正确定义数组并正确赋初值的语句是

A)int N=5,b[N][N]; B)int a[1][2]={{1},{3}}; C)int c[2][]= {{1,2},{3,4}}; D)int d[3][2]={{1,2},{34}}; 4.以下不能正确定义二维数组的选项是

A)int a[2][2]={{1},{2}}; B)int a[][2]={1,2,3,4};

C)int a[2][2]={{1},2,3}; D)int a[2][]={{1,2},{3,4}};

5.有语句:char s1[10],s2[10]={\则能将字符串books赋给数组s1的正确语句是 A)s1={\ B)strcpy(s1,s2);

C)s1=s2; D)strcpy(s2,s1);

6.C语言标准函数 strcpy(s3,strcat(s1,s2)) 的功能是

A)将字符串s1复制到s2中,再连接到s3之后 B)将字符串s2连接到s1之后,再将s1复制到s3中 C)将字符串s2复制到s1中,再将s1连接到s3之后 D)将字符串s2连接到s1之后,再将s3复制到s1中

二、读程序,写出程序执行结果

1. main()

{ int aa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}}; int i,s=0 ;

for(i=0;i<4;i++) s+=aa[i][3]; printf(“%d\\n”,s); } 2.main()

{ int a[4][4]={{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0}}; int i, j, s=0;

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

{ if (a[i][j] < 0) continue; if (a[i][j] == 0) break; s += a[i][j]; } }

printf(\ } 3.main()

{ int p[7]={11,13,14,15,16,17,18}, i=0,k=0; while(i<7 && p[i]%2) { k =k+ p[i]; i++; } printf(\ } 4.main()

{ int i,n[]={0,0,0,0,0};

第11页(共23页)

for(i=1;i<=4;i++) { n[i]=n[i-1]*2+1; printf(\} }

5.void main()

{ int str[3] [3]={1,2,3,4,5,6,7,8,9}, i,j,t; for(i=0;i<3;i++) for(j=0;j

{ t=str[i][j]; str[i][j]=str[j][i]; str[j][i]=t; } for(i=0;i<3;i++) {

for(j=0;j<3;j++) printf(“=”,str[i][j]) ; printf(\ } }

第8章 函数 一、选择题

1.在C语言中

A)函数的定义允许嵌套,但函数的调用不允许嵌套。 B)函数的定义不允许嵌套,但函数的调用允许嵌套。 C)函数的定义和调用都不允许嵌套。

D)函数的定义和调用都允许嵌套。

2.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是

A)函数调用可以作为独立的语句存在 B)函数调用可以作为一个函数的实参 C)函数调用可以出现在表达式中 D)函数调用可以作为一个函数的形参

3. C语言中,函数返回值的类型是由 A)return语句中的表达式类型决定 B)调用函数的主调函数类型决定 C)调用函数时的临时类型决定

D)定义函数时所指定的函数类型决定

4.已定义以下函数

fun(int *p) { return *p; }

该函数的返回值是

A)不确定的值 B)形参p中存放的值 C)形参p所指存储单元中的值 D)形参p的地址值

5. 在TC语言中,若对函数类型未加显式说明,则函数的隐含类型是

A)void B)double C)int D)char

6.用数组名作为函数调用时的实参,则实际传递给形参的是

第12页(共23页)

A)数组的第一个元素值 B)数组中全部元素值 C)数组的首地址 D)数组的元素个数

二、填空题

1.用数组名作为函数调用时的实参,则实参传递给形参的是 。 2.形参是 变量。

3.函数:float pp(int x,int y) {……},该函数pp的函数类型是____。

三、读程序,写出程序执行结果

1. int fib(int g)

{ switch(g)

{ case 0: return 0; case 1:

case 2: return 1; }

return -1; }

void main()

{ printf(“%d\\n”, fib(2)) ; }

2.int fun(int x)

{ return(x>0 ? x : -x); } void main() { int a=-5;

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

3. ex ( )

{ static int x=5 ; - -x ;

printf(“%d”,x) ; }

void main ( )

{ ex ( ); ex ( ); ex ( ); }

4. 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(\}

5.int f(int x)

第13页(共23页)

{ int y=0; static z=3; y++; z++; return(x+y+z) ; }

main()

{ int w=2,k;

for(k=1;k<3;k++) w=f(w); printf(\

}

6. void f(int x, int y) { int t;

if (x

}

main()

{ int a=4,b=3,c=5; f(a,b); f(a,c); f(b,c);

printf(\

}

7. int b=2;

fun(int *a)

{ b+=*a; return(b);} main()

{ int a=2, res=2; res+=fun(&a);

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

8.int d=1; void fun(int p)

{ int d=5; d+=p++;

printf(“%d”,d); }

main() { int a=3;

fun(a); d+=a++; printf(\

} 9.int d=2 ;

int fun(int p) { static int d=3 ; d+=p;

第14页(共23页)

printf(\ return(d) ;

}

void main( )

{ printf(\10. int f( )

{ int s=1; static int i=0; s+=i; i++;

return s ; }

void main() { int i,a=0;

for(i=0;i<5;i++) a+=f( ); printf(\

}

11. int f( )

{ int s=1; static int i=0; s+=i; i++; return s ; } main() { int i,a=0;

for(i=0;i<5;i++) a+=f( ); printf(\}

12. int a=5;

fun(int b)

{ static int a=10; a+=b++;

printf(\}

main() { int c=20; fun(c); a+=c++;

printf(\}

13.fun(int a, int b)

{ if(a>b) return(a); else return(b);

第15页(共23页)

} main()

{ int x=3, y=8, z=6, r; r=fun(fun(x,y), 2*z); printf(\}

14. int a=100,b=200;

void f( )

{ printf(“%d,%d\\n”,a,b); a=1;b=2; }

void main()

{ int a=5,b=7 ; f( );

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

15. fun( int x)

{ static int a=3;

a+=x ; return a ; }

void main ( ) { int k=2,m=1,n; n=fun(k) ; n=fun(m);

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

第10章 指针 一、选择题

1.设有定义 int a[ ]={1,5,7,9,11,13}, *p=a+3; 则*(p-2) , *(a+4) 的值是

A)5 11 B)1 9 C)5 9 D)有错误

2. 设有定义 int a[ ]={1,5,7,9,11,13}, *p=a+3; 则*(p-3) , *(a+2) 的值是

A)5 11 B)1 7 C)5 9 D)有错误

3.对于int a[ ] = {1,2,3,4,5,6}, p; p=a; *(p+3)+ = 2; 则*p, *(p+3)的值为

A) 1 5 B) 1 3 C) 1 4 D) 1 6

4. 设有定义 char *p=“abcde\\Ofghjik\\0”; 则printf(“%d\\n”,strlen(p));输出结果是

A) 12 B) 15 C) 6 D) 5

5.下程序段: char s[20 ]=\的输出结果是 A) abcdABCD B) ABCDabcd C) ABCD D) abcd 6. 设有定义语句:char str[][20]={\

第16页(共23页)

则printf(\输出结果是

A)0 B) 5 C)7 D)20 7.能正确运用指针变量的程序段是

A)int *i=NULL; B) float *f=NULL;

scanf(\ *f=10.5; C)char t='m', *c=&t; D) long *L;

*c=&t; L='\\0';

8.以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。 #define N 10

void arrin(int x[N]) { int i=0; while(i

scanf(\ } 在下划线处应填入的是

A)x+i B)&x[i+1] C)x+(i++) D)&x[++i]

9.若有以下定义和语句:int a=4,b=3,*p,*q, *w; p=&a; q=&b; w=q; q=NULL; 则以下选项中错误的语句是

A)*q=0; B)w=p; C)*p=a; D)*p=*w; 10.下列选项中正确的语句组是

A)char s[8]; s={\ B)char *s; s={\C)char s[8]={\ D)char *s; s=\11.若有: int a[10],*p=&a[0];,关于数组名a的不正确的说法是

A)a是个数组指针 B)数组名a表示数组的首地址 C)数组名a与a[0]等价 D)a和p都指向同一个存储单元 12.已定义以下函数

fun(int *p) { return *p; } 该函数的返回值是

A)不确定的值 B)形参p中存放的值 C)形参p所指存储单元中的值 D)形参p的地址值

二、填空题

1.char str1[10],str2[10]={\,则能将字符串books赋给数组str1的标准函数是 。 2.若有说明:char s1[4]=\则我们称指针变量 ptr指向数组s1的 ,而

*(ptr+1)的值是 3.对于char str[ ] = “1234”, *p = str; 则 *(p + 2)的结果是 。 4.已知:int a[5]={1,2,3,4,5}, *p=a+2; 则*P的值是 。

5.若有说明:char *s=\则我们称指针变量S指向字符串的 ,而S[2]的值是

三、读程序,写出程序执行结果

第17页(共23页)

1.void main()

{ char *p, str[20]=\ p=\ strcpy(str+1 , p+1) ; printf(\} 2.void main()

{ char *p=”abcdba”,*q; int flag=1; q=p+strlen(p)-1;

while(p

}

3. void fun(char *a, char *b)

{ a=b; (*a)++; }

main()

{ char c1='A',c2='a',*p1,*p2; p1=&c1; p2=&c2; fun(p1,p2); printf(\} 4.void f(int *s , int n1 , int n2)

{ int i , j , t ; i=n1; j=n2; while(i

{ t=*(s+i) ; *(s+i)=*(s+j) ; *(s+j)= t ; i++ ; j- - ; }

} main()

{ int a[]={11,55,66,77,88,99},i; f(a,1,5);

for(i=0;i<6;i++)printf(“=”,a[i]); }

5. f(int *x,int n) { int *p, *s;

for(p=x,s=x;p-x

}

main()

{ int a[5]={1,12,10,16,8}; printf(“%d\\n”,f(a,5));

第18页(共23页)

}

6.void main ( )

{ char a[20]=”very lucky”, c ; int i, j;

j= strlen(a)-1 ;

for (i=0; j>i; i++,j--)

{ c=*(a+i); *(a+i)=*(a+j); *(a+j)=c; }

puts(a);

}

7. main()

{ int a,k,*p=&a; a=6;

for(k=1;k<=(*p);k++)

if((*p)%k!=0)printf(“]”,k); }

8. void main()

{ char x[]=\char *ptr;

for(ptr=&x[2];ptr

9.void main()

{ char a[]=\

int k=0; while(*p)

{ if(*p

10. void main()

{ int k,a[10],*p=a ;

for(k=1;k<10;k++) *(p+k-1)=k; for(k=0;k<5;k++) *(p+9-k)=*(p+k); for(k=0;k<10;k++) printf(“=”,*p++); }

11.void main()

{ char *p=”China University of Petroleum!”, *p1; int n=1; p1=p;

while(*++p)n++;

printf(%s ,%d\\n”,p1+20,n); }

12.void fun(char *c,int d)

{ *c=*c+1;d=d+1;

第19页(共23页)

printf(“%c,%c,”,*c ,d);

}

main()

{ char a='A',b='a';

fun(&b,a); printf(\}

13. fun(char *w, int n)

{ char t, *s1, *s2; s1=w; s2=w+n-1;

while(s1

main()

{ char *p=\fun(p, strlen(p)); puts(p); }

14.int fun(char *s1,char *s2) { int i=0;

while(s1[i]==s2[i] && s2[i]!='\\0') i++;

return (s1[i]=='\\0' && s2[i]=='\\0'); }

main()

{ char p[10]=”abcdef”, q[10]=”ABCDEF” printf(“%d\\n”,fun(p,q)); } 15.main()

{ int a[10],*p,*s,i; for(i=0;i<10;i++) scanf(%d”,a+i);

for(p=a,s=a;p-a<10;p++) if(*p>*s)s=p;

printf(“max=%d,index=%d\\n”,*s, s-a);

}

简述上列程序完成的功能: 16.fun(char *p2, char *p1)

{ while((*p2=*p1)!='\\0'){ p1++;p2++; } } 简述此函数完成的功能:

第11章 结构体 一、选择题

1.若有以下说明,则对结构体变量stu1中成员age的不正确的引用方式是

struct student

第20页(共23页)

{ int age; int num; }stu1, *p; p=&stu1;

A)stu1.age B)student.age C)(*p).age D)p->age 2.设有如下定义 struct ss

{ char name[10]; int age; char sex; } std[3],*p=std;

下面各输入语句中错误的是

A)scanf(\ B)scanf(\ C)scanf(\ D)scanf(\3.若有以下说明,能正确的引用“Li Ming”的方式是

struct stu { int name; int num;

}stu1[2]={{\ struct stu *p=stu1;

A)stu1.name B)stu1[1].name C)(*p++).name

综 合 练 习 题

一、 编写程序

第21页(共23页)

p->name

D)1.求下列分段函数的值。

?1?1?XX??1? Y??0X??1

?X2X??1??2.求下列分段函数的值。(a、b由键盘输入 )

?a?ba?b? Y??0a?b

?a?ba?b?3.求分段函数的值

z?logxx?0x1 x?0

x?01?x2X?0X?0 X?0?1?ex?4.求分段函数的值 Y??1?lnx2?5.计算:s=1+1/1+1/2+?? +1/n ,其中n由键盘输入。 6.用台劳级数求e的近似值,直到最后一项小于10-6

e=1+1/1!+1/2!+1/3!+ ??

7.求s=1-2+3-4+5??+99-100

8.输出200~1000之间能被7整除的数,并统计其个数。

9.任意输入100个整数,分别统计其中的正数、负数和零的个数。 10.任意输入N个数,统计其中的正数个数和负数个数。

11.任意输入a[N][N]个数,找出并输出其中的最大数和最小数,以及它们的下标。 12. 求数组a[8][8]中,主对角线和次对角线上各元素之和。 13.任意输入N个数,将它们由大到小排序输出。 14.编程打印下列的杨辉三角形。(设10行) 1 1 1 1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1 ??

15.以“#”为字符,打印一个正三角形。

16.以“@”为字符,打印一个6行的倒正三角形。

17. 打印10~1000之间满足下列条件的所有数: 正序读和反序读都相同,例如:55、232等。

18.从键盘任意输入一个大于0且小于1000的整数,然后输出此整数的所有整数因子。

例如:输入12,输出1,2,3,4,6,12。

第22页(共23页)

19.编写一个函数,将字符串中的元音字母输出。例如字符串为“boy and girl”, 则输出为: oai 20.从键盘上任意输入一个字符串S,输出其中的数字字符。例如输入为:sd12we$*55abc8,则输出结果为:12558

21.编写一个函数,将两个字符串连接起来。(不能用strcat函数)。

22.编写一个函数:完成判断方阵a[N][N]是否关于主对角线对称(相等),若对称则返回1,否则返回0。

23.输入10个学生(包括姓名和成绩)的信息,找出成绩最高的,然后输出该学生的姓名和成绩。

24.输入10个学生(包括姓名、计算机、英语)的信息,找出二门课的平均成绩最高的学生,然后输出该学生的姓名和成绩。

25.函数int add(int a[N][N] , int b[N])的功能是将a数组中每行的最小元素放入b数组中,编写该函数实现之。

26.函数int add(int a[N][N] , int b[N])的功能是将a数组中每行的最大元素放入b数组中,编写该函数实现之。

27.函数int add(int a[N][N] , int b[N])的功能是将a数组中每列的最小元素放入b数组中,编写该函数实现之。

28.编写一函数: int substring(char *str, char *sub), 判断字符串sub是否是字符串str的子串,若是子串,则返回子串的位置,否则返回 -1。

29.函数void comp(char *s1, *s2)的功能是比较字符串s1和字符串s2,若字符串s1大于字符串s2,则函数返回1,若字符串s1等于字符串s2,则函数返回0,若字符串s1小于字符串s2,则函数返回-1。(要求:不能调用库函数strcmp)

30.函数void dele(char *s)的功能是删除字符串s中的所有数字字符和非字母字符,并将字符串压缩。例如原字符串为:abc12ef5ghij8#%%yz,处理后的字符串为:abcefghijyz。

第23页(共23页)

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C语言程序设计综合练习题在线全文阅读。

C语言程序设计综合练习题.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/237870.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: