当前位置:文档之家› (完整版)C语言各章节练习题(含答案)

(完整版)C语言各章节练习题(含答案)

一、C语言概述练习题选择1.一个C程序的执行是从。

A) 本程序的main函数开始,到main函数结束B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C) 本程序文件的第一个函数开始,到本程序main函数结束D) 本程序的main函数开始,到本程序文件的最后一个函数结束2.以下叙述不正确的是。

A) 一个C源程序必须包含一个main函数 B)一个C源程序可由一个或多个函数组成C) C程序的基本组成单位是函数D) 在C程序中,注释说明只能位于一条语句的后面3.以下叙述正确的是。

A) 在对一个C程序进行编译的过程中,可发现注释中的拼写错误B) 在C程序中,main函数必须位于程序的最前面C) C语言本身没有输入输出语句 D) C程序的每行中只能写一条语句4.一个C语言程序是由。

A)一个主程序和若干个子程序组成 B) 函数组成 C) 若干过程组成 D) 若干子程序组成二、数据类型、运算符与表达式选择. 1.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为。

x=(i=4,j=16,k=32) A) 4 B) 16 C) 32 D) 522.下列四组选项中,均不是C语言关键字的选项是。

A) define IF type B) getc char printfC) include case scanf D) while go pow3.下列四组选项中,均是不合法的用户标识符的选项是。

(C语言标识符由字母,数字,下划线组成,开头不能是数字)A) W P_0 do B) b-a goto int C) float la0 _A D) -123 abc TEMP8.已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2=‘A’+‘6’-‘3’后,c2中的值为。

A) D B) 68 C) 不确定的值 D) C填空 1.若有以下定义,则计算表达式y+=y-=m*=y后的y值是【1】。

-16int m=5,y=2;7.若x和n均是int型变量,且x和n的初值均为5,则计算表达式后x的值为【8】,n 的值为【9】。

10 6x+=n++ //若改为x+=++n 则计算后X为11,n为610.已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=‘a’+‘8’-‘3’的值为【12】。

f三、简单的C程序设计选择 1. putchar函数可以向终端输出一个 D 。

A) 整型变量表达式 B) 实型变量值 C) 字符串 D) 字符或字符型变量值3.阅读以下程序,当输入数据的形式为:25,13,10<CR>(注:<CR>表示回车),则正确的输出结果为 A 。

main(){ int x,y,z;scanf(“%d%d%d”,&x,&y,&z);printf(“x+y+z=%d\n”,x+y+z);} A) x+y+z=48 B) x+y+z=35 C) x+z=35 D) 不确定值4.根据下面的程序及数据的输入和输出形式,程序中输入语句的正确形式应该为 C 。

main(){ char ch1,ch2,ch3;输入语句printf(“%c %c %c”,ch1,ch2,ch3);} 输出形式:A B C 输入形式:A B CA) scanf(“%c%c%c”,&ch1,&ch2,&ch3); B) scanf(“%c,%c,%c”,&ch1,&ch2,&ch3);C) scanf(“%c %c %c”,&ch1,&ch2,&ch3); D) scanf(“%c%c”,&ch1,&ch2,&ch3); 5.int j=-1; if(j<=1)printf(“***\n”); else printf(“%%%\n”);A、***B、%%%C、***\nD、%%%\n6. 有一输入语句scanf(“%d”,k);则不能使float类型变量k得到正确数值的原因是【8】和【9】。

格式控制符应为%f;变量k前缺少&7、写出下面程序的输出结果。

(1) main(){char c1,c2;c1=65;c2=66;printf("%c %d",c1,c2);printf("%d %c",c1,c2);}a ,66 65,b四、逻辑运算与判断选取控制2.判断char型变量ch是否为大写字母的正确表达式是 C 。

A)‘A’<=ch<=‘Z’ B)(ch>=‘A’)&(ch<=‘Z’) C)(ch>=‘A’)&&(ch<=‘Z’) D) (‘A’<= ch)AND(‘Z’>= ch)4.设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后n的值为 A 。

A) 0 B) 2 C) 3 D) 45.以下程序的运行结果是 B 。

main(){ int a,b,d=241;a=d/100%9;b=(-1)&&(-1);printf(“%d,%d”,a,b);}A) 6,1 B) 2,1 C) 6,0 D) 2,07.以下程序的运行结果是 C 。

main(){ int m=5;if(m++>5)printf(“%d\n”,m);else;printf(“%d\n”,m--);}A) 4 B) 5 C) 6 D) 78.若运行时给变量x输入12,则以下程序的运行结果是 D 。

main(){ int x,y;scanf(“%d”,&x);y=x>12 ? x+10 : x-12;printf(“%d\n”,y);} A) 4 B) 3 C) 2 D) 07.以下程序的运行结果是_。

main( ){ int i , j;a = 3;b = 5;printf(“a=%d,b=%d\n”, a,b);c = (++a) * b;printf(“a=%d,b=%d\n”, a,b);printf(“c=%d\n”, c);}a=3,b=5a=4,b=5c=20五、循环控制选择1.设有程序段 int k=10;while(k=0)k=k-1;这下面描述中正确的是___C______.a)while循环执行10次 b)循环是无限循环c)循环体语句一次也不执行 d)循环体语句执行一次5.以下程序段____C____.x=-1;do{x=x*x;}while(!x); a)是死循环 b)循环执行二次c)循环执行一次 d)有语法错误8.若i为整型变量,则以下循环执行次数是__B___. for(i=2;i==0;)printf("%d",i--);a)无限次 b)0次 c)1次 d)2次10.以下正确的描述是___B____.a)continue语句的作用是结束整个循环的执行b)只能在循环体内和switch语句体内使用break语句c)在循环体内使用break语句或continue语句的作用相同 d)从多层循环嵌套中退出时,只能使用goto语句3.下面程序的运行结果是_____s=254____.#include <stdio.h>main(){int a,s,n,count;a=2;s=0;n=1;count=1;while(count<=7){n=n*a;s=s+n;++count;}printf("s=%d",s);}4.下面程序段的运行结果是__369 【回车】__sum=20__. main(){ int i=1,sum=0;While(i<=10){ if ( i%3==0){ sum+=i;printf(“%2d”,i);}i++;}printf(“”\n);prinf(“sum=%d”,sum);}5.下面程序段的运行结果是__D____.main(){ int n=3;switch(n){case 0: printf(“A”);break;case 1: printf(“B”);break;case 2: printf(“C”);break;case 3: printf(“D”);break;default:printf(“E”);}7. 下面程序的运行结果是_3 6 9____.main(){ int i,sum=0;for (i=1;i<=10;i++)if ( i%3!=0) continue;printf(“%2d”,i); }printf(“”\n);}六、数组1.已知int a[10];则对a数组元素引用不正确的是()A.a[10]B.a[4+5] C.a[10-6] D.a[2]2.以下对二维数组a的正确说明是___C_____.a)int a[3][]; b)float a(3,4); c)double a[1][4] d)float a(3)(4); 6.若有定义:int a[6]={1,2,3,4,5};则语句a[1]=a[3]+a[2+2]-a[3-1];运行后a[1]的值为()A.6B.5C.1D.27.下面程序段的运行结果是____D_____.int main(){int i,t,a[10]={25,40,29,8,17,6,15,4,3,2};t=a[0];for(i=0;i<10;i++)if(a[i]<t) t=a[i];printf(“%d\n”,t);return 0;}a)29 b)40 c)15 d)2填空 1.若有定义:double x[3][5];则x数组中行下标的下限为____0_____,列下标的上限为___4______.七、函数选择2.以下正确的函数定义形式是___A_____.a)double fun(int x,int y) b)double fun(int x; int y) c)double fun(int x, int y);d)double fun(int x,y);3.C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式为__B____.A)地址传递B)单向值传递 C)由实参传给形参,再由形参传回给实参 D)由用户指定传递方式填空 1.以下程序的运行结果是_____.max is 2#include<stdio.h>int max(int,int);main(){int a=1,b=2,c;c=max(a,b);printf("max is %d\n",c);}int max(int x,int y){int z;z=(x>y)?x:y;return(z);}3.以下程序的运行结果是____4+5=9____.#include <stdio.h>int plus(int x,int y){return(x+y);}void main(){ int a=4,b=5,c;c=plus(a,b);printf("%d +%d =%d\n",a,b,c);}九、指针一、选择题1.变量的指针,其含义是指该变量的____B_____.a)值 b)地址 c)名 d)一个标志2.若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是__D___.a)a,point,*&a b)&*a,&a,*point c)*&point,*point,&a d)&a,&*point ,point 3.若有说明;int *p,m=5,n;以下正确的程序段的是___D_____.a)p=&n; b)p=&n; c)scanf("%d",&n); d)p=&n;scanf("%d",&p); scanf("%d",*p); *p=n; *p=m; 10.若有以下定义,则对a数组元素的正确引用是____D_____.int a[5],*p=a;a)*&a[5] b)a+2 c)*(p+5) d)*(a+2)12.若有以下定义,则p+5表示___A____.int a[10],*p=a;a)元素a[5]的地址 b)元素a[5]的值 c)元素a[6]的地址 d)元素a[6]的值13.下面程序的输出结果是main(){ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;printf("%d\n",*(p+1));}a)3 b)4 c)1 d)2二、填空题5.若有定义:int a[]={2,4,6,8,10,12},*p=a;则*(p+1)的值是__4____. *(a+5)的值是_____12____.3. 写出下面程序的输出结果main(){ int x,y,z;x=y=2;z=3;y=x++ -1;printf("%d\t%d\t",x,y);y=++x-1;printf("%d\t%d\t",x,y);y=z--+1;printf("%d\t%d\t",z,y);y=--z+1;printf("%d\t%d\n",z,y);}2,13,23,42,3。

相关主题