C_语言练习题.doc_第1页
C_语言练习题.doc_第2页
C_语言练习题.doc_第3页
C_语言练习题.doc_第4页
C_语言练习题.doc_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

洞庭软件园培训学校()C 语言练习题第一章 概论填空题1C程序是由函数构成的,一个C源程序至少包含一个 (1) 函数。2C语言规定:在一个源程序中,main()函数的位置 (2) 。3C程序的执行是从 (3) 函数开始,在 (4) 函数中结束。4一个函数由 (5) 和 (6) 两部分组成。5函数体一般包括 (7) 和 (8) 。6C程序书写格式规定 ,每行可写 (9) 语句,一个语句可以 (10) 。7用 (11) 对C程序中的任何部分作注释。8C源文件取名,后缀一般为 (12) 。9编译源代码,生成目标文件,其后缀名一般为 (13) 。10对目标文件进行连接,生成可执行文件,其后缀名一般为 (14) 。11C源程序的基本单位是(15) 。12一个C语言的语句至少应包含一个(16) 。第二章 数据类型、运算符与表达式一、选择题1下列各组中均为常量的是 (1) 。 A. 123 , -0x23 , -2.5 B. 1 , 1/2 , 6.8 C. 6,345.0 D. 3.5 , 6.9 , a 2下列各组中不全是字符常量的是(2) 。 A. a , “b” , 2 B. + , 101 , f C. 6 , n , x D. 3 , $ , x413下列各组中全是实数的是(3) 。 A. 0.5 , 1.4e2 , 6.9 B. 7.8 , e3 , -5.1 C. 1.5e3.5 , 0.9 , 6.0 D. 41.2 , 45 , 7.74下列各组中不全是合法的变量名的是(4) 。 A. day , lotus_1_2_3 , x1 B. Abc , _above , basic C. M . John , year , sum D. YEAR , MONTH , DAY5下列各组中全是字符串常量的是 (5) 。 A. “a+b” “1+2=5” , “china” B. abc , xyz , 5 C. 123 , “456” , “789” D. n , “1+2=3” , “aaa”二、填空题1char c ; c=a;则在内存中c的值为:(6) 。2在定义变量的同时给变量一个值,称为 (7) 。3#define PI 3.14 说明PI为 (8) 。4设有说明:char c1; 则 c1=a; 是否正确?(9) 5设有说明:char c2;则 c2=65; 是否正确?(10) 6表达式 10+x+2.5*7 的值为 (11) 型的量。7设 x=3.5 ; 则表达式 (int) x+x 的值为 (12) 。8设 i=5 ; 则语句 k= i+; 执行后,k=(13) , i= (14) 。9设 int a=6; 表达式 a/=a+a 运算后,a= (15) 。10表达式 a=3*5 , a+a , a+3 的值为 (16) 。11表达式 x= (2+3, 6*5) , x+5 运算后,x= (17) 。12设 a=5 ; 则表达式 a+=a*=a+a 运算后,a= (18) 。13设a=9;x=6.3;y=3.5;则表达式a%5*(int) (x+y)%7/4 的值为 (19) 。14int a=5,b=2 ; 表达式 b+= (float)(a+b)/2 运算后b= (20) 。15char c ; 表达式 c=a- A+B 运算后,c的值 (21) 。16表达式 a= (a=(2 , 3) , a+2) 运算后 a= (22) 。17表达式 a=3 , b=a , c=a*b , a+b+c 的值为 (23) 。18表达式 b= (b=(2, 3), b+2), 15+b) 运算后,b=(24) 。 19表达式 b+= b=(b=(2,3),b+2 ),15+b) 运算后, b= (25) 。20表达式 b+=b= (b=(2,3),b+2 ),15+b) 运算后, b= (26) 。21表达式 b=35/7*57%4*4 运算后 b= (27) 。22表达式 (int)(sqrt(0.25)+5.7) 运算后, 值为 (28) 。23 i =5, j=10 表达式 k= i +j运算后, k= (29) i = (30) j= (31) 。24 i =5, j=10 表达式 k= i +j 运算后, k= (32) i = (33) j= (34) 。25 i =5, j=10 表达式 k= i +j , 运算后, k= (35) i = (36) j = (37) 。第三章 最简单的C程序设计一、 选择题1. putchar ( ) 函数可以向终端输出一个(1) A. 整型变量或表达式的值 B. 实型变量的值C. 字符串 D. 字符或字符型变量值2. 已有如下定义和输入语句,若要给a1,a2,c1,c2分别赋值为10,20,A,B则正确的数据输入方式是(2) ( 表示空格,CR表示回车)int a1,a2; char c1,c2;scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);A. 10 A20BCR B. 10 A 20 BCRC. 10A20BCR D. 10A20 BCR3. 以下说法正确的是 (3 ) A. 输入项可以为一个实型常量,如scanf (“%f”,3.5);B. 只有格式控制,无输入项, 也能进行正确输入, 如 scanf (“a%d,b%d”);C. 当输入一个实型数据时,格式控制部分应规定小数点后的位数, 如 scanf (“%4.2f”,&f);D. 当输入数据时,必须指明变量的地址,如scanf(“%f”,&f);4. 设有说明:double y0.5,z1.5;int x10;下面正确的语句是 (4) A. zexp(y)+fabs(x); B. ylog10(y)+pow(y);C. zsqrt(y-z); D. x(int)(atan2(double)x,y)+exp(y-0.2);5. 设float x,y; 则不合法的赋值语句是 (5) A. +x; B. y(x%2)/10;C. x*y+8; D. xy0;6. 设char ch; 则不合法的赋值语句是(6) A. cha+b; B. ch0;C. cha+b; D. ch7+9;7. 以下能正确地定义整型变量a,b,c,并给它们都赋值5的语句是 (7) A. int abc5; B. int a,b,c5;C. int a5,b5,c5; D. abc5;二、填空题1. 设int x,y,z; 则执行语句x(y(z10)+5)-5;后x值为 (8) ,y值为 (9) ,z值为 (10) 。2. 下面程序的输出是(11) main( ) char cx; printf(“C: dec=%d,oct=%o,hex=%x,ASCII=%cn”,c,c,c,c); 3. 下面程序的输出是(12) main( ) int a325; double x3.1415926; printf(“a%+06d x=%fn”,a,x);4. 设int x; 则执行语句x7; x+x-x+x; 后x值为(13) 5. 设int a,b; 语句a+b; ba-b; a-b;的功能是(14) 6. 设float k;执行语句scanf (“%d”,k);k不能得到正确值的原因为(1) (15) ;(2) (16) ;7. 设float a=1.0;int b=3;若输出结果为a/b=0.333333%,则相应的printf语句为 (17) (1.0/3的值为0.333333)8. 设char a; a=getchar();的输入是b,则a值为 (18) ,getchar()函数的值为 (19) 。9. 设int a,b,c;执行scanf (“%d, %d, %d”,&a,&b,&c);语句使得a,b,c值分别为1,2,3的输入是 (20) 。10. 执行scanf (“%2d %*2d %2d”,&a,&b); 的输入是12 34 56, 则a值为 (21) , b值为 (22) 。第四章 选择结构程序设计一、 选择题1. 逻辑运算符两侧运算对象的数据类型 (1) A. 只能是0或1 B. 只能是0或非0数 C. 只能是整型或字符型数据 D. 可以是任何类型的数据2. 以下关于运算符优先级顺序的描述正确的是 (2) A. 关系运算符算术运算符赋值运算符逻辑运算符 B. 赋值运算符关系运算符算术运算符逻辑运算符 C. 赋值运算符逻辑运算符关系运算符算术运算符 D. 算术运算符关系运算符赋值运算符逻辑运算符3. 正确表示“当x的取值在1,10和200,210范围内为真,否则为假”的表达式是 (3) A. (x1)& (x10)& (x200)& (x210) B. (x1) | (x10) | (x200) | (x210 ) C. (x1)&(x10)| (x200)& (x210) D. (x1)| (x10)& (x200)| (x210)4. 已知x43,chA,y0; 则表达式 (xy&chB&!y)的值是 (4) A. 0 B. 语法错 C. 1 D. “假”5. 已知int x=10,y=20,z=30; 以下语句执行后x,y,z的值是(5) 。 if (xy) zx; xy;yz; A. 10,20,30 B. 20,30,30 C. 20,30,10 D. 20,30,206. 若希望当的值为奇数时,表达式的值为“真”,的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是 (6) 。 . A2= =1 B. !(A%2= =0) C. !(A%2) D. A%27. 执行以下语句后a的值为 (7) ;b的值为 (8) 。 int a, b, c; a=b=c=1; +a | +b & +c;7 A. 错误 B. 0 C. 2 D. 18 A. 1 B. 2 C. 错误 D. 08. 执行以下语句后,a的值为 (9) ;b的值为 (10) 。 int a=5, b=6, w=1, x=2, y=3, z=4; (a=wx)&(b=yz); 9 A. 5 B. 0 C. 2 D. 1 10 A. 6 B. 0 C. 1 D. 49. 以下程序运行的结果是 (11) 。 main ( ) int m=5; if (m+5) printf (“%dn”, m); else printf(“%dn”, m); A. 4 B. 5 C. 6 D. 710. 若有条件表达式(exp)?a+:b,则以下表达式中能完全等价于表达式(exp)的是(12) 。 A. (exp= =0) B. (exp!=0) C. (exp= =1) D. (exp!=1)二、填空题1. 若int y; 那么“y是奇数”的表达式是(13) 2. 在C语言中,表示逻辑“真”值用(14) 表示。3. 条件“2x3或x-10”的C表达式是(15) 。4. 以下程序运行的结果是(16) 。main ( ) int a, b, c, d, x; a=c=0; b=1; d=20; if (a) d=d-10; else if (!b) if (!c) x=15; else x=25; printf (“%dn”, d ); 5. 下面程序的运行结果是(17) 。 main( ) if (2*252*24)printf (“T”); else printf (“F”); 6. 若有说明语句:int x=1, y=0; 则表达式x(y+x)?5:25y+?1:2的值是(18) 。7. 以下程序段的运行结果是(19) 。int x=1, y=0;switch (x) case 1: switch (y) case 0: printf(“*1*n”); break; case 1: printf(“*2*n”); break; case 2: printf (“*3*n”);8. 以下程序运行的结果是(20) 。 #include main ( ) int x=1, y=0, a=0, b=0; switch (x) case 1: switch (y) case 0: a+; break; case 1: b+; break; case 2: a+; b+; break; printf (“a=%d, b=%dn”,a, b);第五章 循环控制一、 选择题1while (!E);语句中,条件表达式等价于 (1) 。 A. E= =0 B. E!1 C. E!0 D. E= =12下面程序的运行结果是 (2) 。 int n0; while(n+2); printf(“%d”,n); A. 2 B. 3 C. 4 D. 有语法错3 下面程序段的运行结果是 (3) 。a=1; b=2; c=2;while (ab100) break; B. for ( ; ;);C. int k0; do +k; while (k0)D. int s36; while (s); s;8 执行语句for (i1;i+4;后i的值为 (8) 。A. 3 B. 4 C. 5 D. 不定9 下列程序段的输出结果是 (9) 。 int x3; do printf (“%2dn”,x2); while (!(x); A. 1 B. 1 -2 C. 3,0 D. 是死循环10 以下四个关于C语言的结论中,只有一个是错误的,它是(10) 。A. 可以用while语句实现的循环一定可以用for语句实现B. 可以用for语句实现的循环一定可以用while语句实现C. 可以用do-while语句实现的循环一定可以用while语句实现D. do-while语句与while语句的区别仅是关键字”while”出现的地方不同二、填空题1执行下面程序段后,k值是 (11) 。 k1; n263; do k*n%10; n/10 ; while(n);2鸡兔共有30只,脚共有90个,下面的程序段是计算鸡兔各有多少只 for ( x1;x29;x+ ) y30x; if (12) ) printf(“%d,%dn”,x,y); 3下面程序的运行结果是 (13) 。 main ( ) int i,x,y; ixy0; do + i; if(i%2!0) xx+i; i+; yy+i+; while(i7); printf(“x%d, y%dn”,x,y); 4下面程序的运行结果是(14) 。 main ( ) int i,j4; for(ij;i2*j;i+) switch(i/j) case 0: case 1: printf (“*”); break; case 2: printf (“#”); 5以下程序段的功能:从键盘输入的字符中统计数字字符的个数,用换行符结束循环int n0,c;cgetchar( );while (15) ) if (16) ) n+; cgetchar( );6下面程序的输出结果是(17) 。 main( ) int i, j, k19; while( i=k-1) k-=3; if(k%50) i+; continue; else if(k5) break; i +; printf(“i%d,k%dn”,i,k); 7填空完成下面程序,其功能是打印100以内个位数为6且能被3整除的所有数。main( ) int i, j; for(i0;(18) ;i+) ji*10+6; if (19) ) continue; printf(%d”,j); 8下面程序的运行结果是(20) main( ) int i1; while(i15) if(+i%3!2) continue; else printf(“%d”,i); printf(“n”); 9填空完成下面程序,其功能是计算100至1000之间有多少个数其各位数字之和是5。main( ) int is,k,count0; for(i100;i1000;i+) s0; ki; while (21) ) ss+k%10; k(22) 。; if (s!5) (23) ; else count+; printf(%d”,count);10填空完成下面程序,其功能是从个红球,五个白球,六个黑球中任意取出八个球,且其中必须有白球,输出所有可能的方案。void main( ) int i,j,k; printf(“n hong bai hei n”); for(i0;i3;i+) for (24) ;j5;j+) k8-i-j; if (25) ) printf (“ %3d %3d %3d n”,i,j,k); 11下面程序的运行结果是(26) 。#include main ( ) int i=5; do switch (i%2) case 4: i; break; case 6: i; continue; i; i; printf (“%d”, i ); while (i0);第六章 数组一、选择题1在C语言中,引用数组元素时,其数组下标的数据类型允许是 (1) 。A. 整型常量 B. 整型表达式 C. 整型常量或整型表达式 D. 任何类型的表达式2若有说明:int a10;则对a 数组元素的正确引用是 (2) 。A. a10 B. a3, 5 C. a(5) D. a10103以下对二维数组a的正确说明是 (3) 。A. int a3 ; B. float a(3, 4); C. double a14; D. int a10=10*1;4不正确的字符串赋值或赋初值方式是(4) 。 A. char str s,t,r,i,n,g,0; B. char str7s,t,r,i,n,g; C. char str110; str1string; D. char str1 string,str2 12345678;5. 若有以下说明和语句,则输出结果是(5) 。 char s12 a book!; printf (.4s, s ); A. a book! B. a bo C. a book!(代表空格) D. 因格式描述不正确,没有确定的输出6若有以下说明和语句,则输出的结果是(6) 。 char sp =”x69082n”; printf (“%d”, strlen(sp); A. 3 B. 5 C. 1 D. 字符串中有非法字符,输出值不定7两个静态数组A和数组B进行如下初始化: static char A =”ABCDEF”; static char B =A,B,C,D,E,F; 则叙述正确的是(7) 。 AA和B完全相同 B. A和B只是长度相等 CA和B不相同,A是指针数组 D. A数组长度比B数组长8. 若有以下的说明和语句, 则它与(8) 中的说明是等价的。 char s35aaaa,bbbb,cccc; A. char s aaaa,bbbb,cccc; B. char s23 aaaa,bbbb,cccc; C. char s3 5aaaa,bbbb,cccc; D. char s4 4aaaa,bbbb,cccc;二、填空1. 程序 # include #include main ( ) char s6; int i; strcpy (s,ABCDE); gets(s); puts(s); 若分别输入以下字符串 (从第一列开始输入, 代表换行符): boy 则输出结果是(9) 。 a girl 则输出结果是(10) 。2. 程序: # include main ( ) int a4, x, i; for(i1;i3;i)ai0; scanf(d,x); while(x!1)ax1;scanf(d,x); for(i1;i3;i)printf(a2d4dn,i,ai); 若输入数据如下: ( 代表换行符) 3 1 2 3 2 2 2 1 1 3 3 3 3 3 1 1 2 2 3 2 1 2 3 2 1 输出结果是(11) 。3. 下面程序段的运行结果是(12) 。 . for (i0; i3; i) for (j0; j3; j) if (i3) aijai1ai1j1; else aijj; printf (4d,aij); printf (n); .4. 程序: # include main () int b51, x, i, j0,n0; scanf (d,x); while (x1) bnx; scanf(d,x); for(i1;in;i) if(bi20) bjbi; for(i1;ij;i) printf(3d,bi); printf(n); 若输入数据如下 ( 此处 代表换行符 ): 7 10 5 4 6 7 9 8 3 2 4 6 12 2 3 7 9 11 14 15 1 则输出结果是(13) 。5. 给a数组输入10,8,6,4,2共5个数, 放在a1到a5中, 请阅读程序, 回答: 若给x输入5, 以下程序的输出结果是(14) 。 若给x输入15, 以下程序的输出结果是(15) 。 若给x输入10, 以下程序的输出结果是(16) 。 #include main () int a51, x, i, n; printf(Enter n: ); scanf(d,n); for (i1;iai) ai1ai; i; ai1x; n; for (i1;in;i) printf(3d,ai); printf (n); 6. 以下程序的输出结果是(17) 。 #include char strSSSWILTECH1111W1WALLMP1; main ( ) int k; char c; for (k2;(cstrk)!0;k) switch (c) case A : putchar(a); continue; case 1 : break; case 1 : while(cstrk)!1c!0); case 9 : purchar(#); case E : case L : continue; default : putchar(c); continue; putchar(*); printf (n); 7. 阅读程序,回答问题。 #define MAXN 10 #define n 4 main ( ) int k,d,b,e,i,j,aMAXNMAXN; L0: k1; L1: for(d0;d2*n1;d) bdn?0:d1n; edn?d:n1; L2: for(ib;ie;i) L3: aibeik; for(i0;in;i) for(j0;j=b; i-)后,程序输出的第一行结果将是(19) 。 (3) 欲实现问题(2)的要求,不改标号L2的行,改标号为(20) 的 行为(21) 也能实现同样的效果(只允许改一行代码)。8. 以下程序分别在 a 数组和 b 数组中放入an1 和bn1个由小到大的有序数, 程序把两个数组中的数按由小到大的顺序归并到c 数组中。 #include main() int a101,2,5,8,9,10,an5; int b101,3,4,8,12,18,bn5; int i,j,k,c20,max9999; aan1bbn1max; ijk0; while (ai!max)|(bj!max) if(aibj)ck(22) ;k;(23) else ck(24) ;k;(25) for (i0;ik;i) printf(4d,ci); printf(n); 9. 以下程序把一个整数转换成二进制数,所得二进制数的每一位放在一维数组中,输出此二进制数。注意: 二进制数的最低位放在数组的第一个元素中, 请填空。# include main () int b16, x, k, r, i; printf (输入一个整数给 x:); scanf(d,(26) ); printf(6d binary num is:n,x); k1; /* 变量 k 用作 b 数组的下标 */ do rx (27) ; b(28) r; x/(29) ; while (x!=0); for(i=k; i=0; i-) printf( %d, bi);10. 以下程序给方阵中所有边上的元素和两条对角线上的元素置1,其它元素置0,要求对每个元素只限置一次值,最后按矩阵的形式输出,请填空。#include #define MAX 10main ( ) int aMAXMAX, i, j; j=MAX; for (i0; iMAX; i) a (30) i1; ai (31) 1; /* 两个对角线上元素置1 */ for(i=1; iMAX1; i) a0 (32) 1; for(i=1;i0; (34) ) aMAX1 (35) =1; for(iMAX2; i0; (36) ) ai (37) =1; for(i1; i(38) ; i) for(j=1; j(39) ; j+) if (40) ) aij0; for(i0; iMAX; i) for (j0;jMAX;j) printf(2d,aij); (41) ; *11. 函数求阶乘n!,当n较大时,由于计算机字长有限,不能求,可采用数组的方法来实现,下列程序求n50时的阶乘值。#define MAX 100main ( ) int i, j, k

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论