C语言12章课后题.docx
- 文档编号:26334238
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:28
- 大小:25.90KB
C语言12章课后题.docx
《C语言12章课后题.docx》由会员分享,可在线阅读,更多相关《C语言12章课后题.docx(28页珍藏版)》请在冰豆网上搜索。
C语言12章课后题
第一章C语言概述课后题
一、选择题
1、一个C语言程序总是从()。
A、主过程开始执行
B、主函数开始执行
C、子程序开始执行
D、主程序开始执行
2、C语言能直接执行的程序是()。
A、源程序
B、汇编程序
C、目标程序
D、可执行程序
3、以下叙述中正确的是()。
A、C语言程序中的注释部分可以出现在程序中任意合适的地方
B、花括号“{”和“”只能作为函数体的定界符
C、构成C语言程序的基本组成单位是函数,所有函数名都可以由用户命名
D、分号是C语言语句之间的分隔符,不是语句的一部分
4、以下选项中,不合法的C语言程序函数体是()。
A、{;}
B、{}
C、{printf(“computer”);}
D、{inta=1;}
5、要把高级语言编写的源程序转换为目标程序,需要使用()。
A、编辑程序
B、驱动程序
C、编译程序
D、诊断程序
二、填空题
1、C语言程序的基本单位是()。
2、C语言源程序文件名的后缀是(),经过编译后生成的目标文件名的后缀是(),经过链接之后生成的可执行文件名的后缀是()。
3、计算机语言包括()、()和()。
其中计算机能够直接识别的语言是(),()很接近人们习惯使用的自然语言和数学语言。
4、按照结构化程序设计原则,常见的程序基本结构有()、()和()。
5、循环结构包含()循环和()循环。
三、简单题
1、什么是程序?
什么是程序设计?
2、解释源程序、目标程序和可执行程序的含义。
3、写出C语言的特点。
四、编程题
1、参照本章例题,编写一个C语言程序,输出以下信息:
happynewyear!
2、参照本章例题,编写程序求两个数中的较小值。
第二章C语言程序设计基础课后题
一、选择题
1、以下选项中,正确的整型数据是()。
A、1.2
B、-123
C、723456
D、567890
2、下面字符常量的表达形式中正确的是()。
A、“Z”
B、“\’
C、‘1’
D、‘\378’
3、ch为字符型变量,执行语句“ch=’C’+‘5’-‘4’;”,将ch按字符类型输出的结果是()。
A、D
B、68
C、56
D、不确定的值
4、C语言中要求运算对象必须是整型数据的运算符是()。
A、++
B、--
C、%
D、/
5、变量a为整型、b为实型、c为双精度型、d为字符型,则表达式a=a*b+d-c的类型是()。
A、整型
B、实型
C、双精度型
D、字符型
6、有以下定义语句,编译时会出现编译错误的是()。
A、chara=’a’;
B、chara=’\n’;
C、chara=’aa’;
D、chara=’\x2d’;
7、设有语句“inta=3;”,执行语句printf(“%d%d”,a+1,a++);后输出的值是()。
A、43
B、34
C、44
D、33
二、填空题
1、在C语言中(以16位计算机为例),一个char型数据在内存中所占的字节数为(),其数值范围是();一个int型数据在内存中所占的字节数为(),其数值范围是();一个long型数据在内存中所占的字节数为(),其数值范围是();一个float型数据在内存中所占字节数为(),其数值范围是()。
2、字符常量使用一对()界定单个字符,而字符串常量使用一对()来界定若干个字符的序列。
3、设“floatx=2.5;inta=7;floaty=4.7;”,则表达式x+a%3*(int)(x+y)%2/4的值为()。
4、已知“chara=’a’,b=’b’,c=’c’,i;”,则表达式i=a+b+c的值为()。
5、假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为()。
6、若有定义“intm=5,n=3;”,则表达式m/=n+4的值是(),表达式m=(m=1,n=2,n-m)的值是(),表达式m+=m-=(m=1)*(n=2)的值是()。
三、简答题
1、简述’a’和”a”的区别。
2、已知,“intm=12,m=15;”,为什么整型变量m的值在运算后不是当初的12,而是15?
3、将下面各数用八进制和十六进制数表示。
十进制数:
32-1-327682002-1280
八进制数:
十六进制数:
4、写出以下程序的运行结果
intmain()
{
charc1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’116’;
printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3);
printf(“\t\b%c%c”,c4,c5);
return0;
}
5、写出以下程序的运行结果。
intmain()
{
inti,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf(“%d,%d,%d,%d”,i,j,m,n);
return0;
}
四、编程题
已知“intx=10,用2;”,写出将x和y的值相互交换的语句。
测试一
一、单项选择题
1、以下描述中正确的是()
A、C语言程序的执行是从main函数开始的,到程序的最后一个函数结束
B、C语言程序的执行是从第一个函数开始的,到程序的最后一个函数结束
C、C语言程序的执行是从main函数开始的,到程序的main函数结束
D、C语言程序的执行是从第一个函数开始的,到程序的main函数结束
2、若有语句“chara;”,并要将字符a赋给变量a,则下列赋值表达式正确的是()。
A、a=’a’;
B、a=’a’;
C、a=”97”;
D、a=’97’;
3、若有语句“inta=5;”,则执行语句“a++a*=10;”后,a的值是()。
A、55
B、100
C、60
D、105
4、设有“intx=11;”,则表达式(x++*1/3)的值是()。
A、3
B、4
C、11
D、12
5、能正确表达逻辑关系“a>=10”或“a<=0”的C语言表达式是()。
A、a>=10ora<=0
B、a>=0|a<=10
C、a>=10&&a<=0
D、a>=10||a<=0
6、已有定义“intx=3,y=4;”,则表达式x>y&&y的值是()
A、true
B、0
C、false
D、1
7、有如下语句,则当x=5是,c的值是()
intc=5,x;
scanf(“%d”,&x);
switch(x+1)
{
case6:
c++;
case8:
c++;break;
default:
c+=3;
}
printf(“%d”,c);
A、6
B、7
C、8
D、语法错误
8、若有以下程序,则语句a=a+1执行的次数是()
intmain()
{
intx=1,a=1;
do
{
a=a+1;
}
while(x);
return0;
}
A、0
B、1
C、无限次
D、有限次
9、以下程序的输出结果是()
intmain()
{
inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;
for(i=1;i<3;i++)
for(j=0;j<=i;j++)
s+=a[i][j];
printf(“%d\n”,s);
return0;
}
A、18
B、19
C、20
D、21
10、C语言中,二维数组在内存中的存放顺序是()
A、行优先
B、列优先
C、由编译系统决定
D、由用户决定
11、以下程序的输出结果是()
intmain()
{
charch[]={‘1’,’2’,’\0’,’3’,’4’,’\0’};
printf(“%s”,ch);
return0;
}
A、1234
B、12034
C、12
D、有语法错误
12、以下程序执行后输出的结果是()
voidf(intx,inty)
{
intt;
if(x } intmain() { inta=4,b=3,c=5; f(a,b); f(a,c); f(b,c); printf(“%d,%d,%d\n”,a,b,c); return0; } A、3,4,5 B、5,3,4 C、5,4,3 D、4,3,5 13、执行如下程序段后,a的值为() int*p,a=10,b=1; p=&a;a=*p+b; A、12 B、11 C、10 D、编译出错 14、以下程序执行后的输出结果是() intmain() { intx[8]={8,7,6,5,0,0},*s; s=x+3; printf(“%d\n”,s[2]); return0; } A、随机值 B、0 C、5 D、6 15、若要将text.txt文件打开用于追加信息,则以下格式正确的是() A、fp=fopen(“text.txt”,”r”); B、fp=fopen(“text.txt”,”r+”); C、fp=fopen(“text.txt”,”a+”); D、fp=fopen(“text.txt”,”w”); 16、有定义语句“doublex,*p;”,则以下表达式中正确的是() A、*p=&x; B、p=x; C、p=&x; D、*p=x; 17、下面程序的正确输出结果是()。 (规定用U表示空格) intmain() { floatx=5.783,y=-10.2345; printf(“x=%-8.2f,y=%-8.2f\n”,x,y); return0; } A、x=5.78UUUU,y=-10.23UU B、x=5.78,y=-10.23 C、5.78,-10.23 D、x=UUUU5.78,y=UU-10.23 18、sizeof(float)是() A、一个浮点表达式 B、一个不合法的表达式 C、函数调用结果,是一个整型表达式 D、一种函数调用 19、下列数据中属于字符串常量的是() A、’A’ B、”ABC” C、ABC D、’ABC’ 20、用下面的scanf函数输入数据,使得i=10,k=15,正确的键盘输入方法是()(用[CR]表示回车,U表示空格) intmain() { inti,k; scanf(“i=%d,k=%d”,&i,&k); return0; } A、i=10[CR]k=15[CR] B、i=10,k=15[CR] C、10U15[CR] D、10,15[CR] 二、判断题 1、在一个C语言程序中,main函数必须出现在所有函数之前。 () 2、引用数组元素时,下标可以是整型常量或整型表达式。 () 3、预处理命令都必须以“#”开头。 () 4、函数的形参都属于全局变量。 () 5、静态(static)类型变量在函数调用结束后仍然存在。 () 6、函数定义可以嵌套,函数调用不可以嵌套。 () 7、字符类型变量只能存储一个字符。 () 8、从功能上讲,“putchar(c);”等价与“printf(“%c”,c);”。 () 9、表达式(7-1)*2! =10的值为1。 () 10、实参向形参传递值可以是单向传递,也可以是双向传递。 () 三、填空题 1、若从键盘输入58,则以下程序的输出结果是。 intmain() { inta; scanf(“%d”,&a); if(a>50)printf(“%d”,a); if(a>40)printf(“%d”,a); if(a>30)printf(“%d”,a); return0; } 2、以下程序的输出结果是。 intmain() { intx=23; do { printf(“%d”,x--); }while(! x); return0; } 3、将程序补充完整(要求,输入任意两个整数a和b,若b不等于0,则输出a/b的值,结果保留两位小数)。 #include intmain() { inta,b;floatc; printf(“inputa,b: ”); scanf(“%d,%d”,&a,&b); if() c=1.0*a/b; printf(“%.2f\n”,c); return0; } 4、将程序补充完整(用for循环求1-100的和)。 #include intmain() { inti,sum; for(;i<=100;i++) sum+=i; printf(“%d\n”,sum); return0; } 5、将程序补充完整(输入两个整数并求最大值)。 #include intmain() { inta,b,c; printf(“inputtwonumbers: \n”); scanf(“%d,%d”,&a,&b); c=; printf(“max=%d\n”,c); return0; } intmax(intx,inty) { intz; z=x>y? x: y; returnz; } 四、编程题 1、用数组计算fibonacci数列的前20个数,并按每行打印5个数的格式输出。 2、“百钱百鸡”问题是一个很经典的穷举问题。 公元前5世纪,我国古代数学家张丘建在《算经》中提出,鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。 百钱买百鸡,问鸡翁、母、雏各几何? 编程求解该问题。 测试二 一、单项选择题 1、以下描述中正确的是() A、C语言程序由过程和函数组成的 B、C语言函数可以嵌套调用,例如: fun(fun(x)) C、C语言函数不可以单独编译 D、C语言中除了main函数,其他函数不可以作为单独文件形式存在 2、以下C语言用户标识符中,不合法的是()。 A、_1 B、AaBc C、a_b D、a——b 3、若有定义“doublea=22;inti=0,k=18;”,则不符合C语言规定的赋值语句是()。 A、a=a++,i++; B、i=(a+k)<=(i+k); C、i=a%11; D、i=! a; 4、以下选项中,与“if(a==1)a=b;elsea++;”语句功能不同的switch语句是()。 A、switch(a) { case: a=b;break; default: a++; } B、switch(a==1) { case0: a=b;break; case1: a++; } C、switch(a) { default: a++;break; case1: a=b; } D、switch(a==1) { case1: a=b;break; case0: a++; } 5、有以下程序段,为避免此程序段陷入死循环,从键盘输入的数据应该是()。 intn,t=1,s=0; scanf(“%d”,&n); do { s=s+t; t=t-2; }while(t! =n); A、任意正奇数 B、任意负偶数 C、任意负奇数 D、任意正偶数 6、以下程序运行后的输出结果是() #include intmain() { inti,j,m=1; for(i=1;i<3;i++) { for(j=3;j>0;j--) { if((i*j)>3)break; m*=i*j; } } printf(“m=%d\n”,m); return0; } A、m=6 B、m=2 C、m=4 D、m=5 7、以下程序运行后的输出结果是() #include intmain() { inta=1,b=2; for(;a<=8;a++) { b+=a;a+=2; } printf(“%d,%d\n”,a,b); return0; } A、9,18 B、8,11 C、7,11 D、10,14 8、以下关于return语句的叙述中正确的是() A、一个自定义函数中必须有一条return语句 B、一个自定义函数中可以根据不同情况设置多条return语句 C、定义成void类型的函数中可以有带返回值的return语句 D、没有return语句的自定义函数在执行结束时不能返回到调用处 9、下列选项中,能正确定义数组的语句是() A、intnum[0..2008]; B、intnum[]; C、intN=2008; intnum[N]; D、#defineN2008 intnum[N]; 10、若有定义“int(*pt)[3];”,则下列说法正确的是() A、定义了基类型为int的3个指针变量 B、定义了基类型为int的具有3个元素的指针数组pt C、定义了一个名为*pt、具有3个元素的整型数组 D、定义了一个名为pt的指针变量,它可以指向每行有3个整型元素的二维数组 11、以下程序运行后的输出结果是() #include intmain() { inta[5]={1,2,3,4,5},b[5]={0,2,1,3,0},i,s=0; for(i=0;i<5;i++) s=s+a[b[i]]; printf(“%d\n”,s); return0; } A、6 B、10 C、11 D、15 12、以下程序执行后输出的结果是() #include #defineSUB(a)(a)-(a) intmain() { inta=2,b=3,c=5,d; d=SUB(a+b)*c; printf(“%d\n”,d); return0; } A、0 B、-12 C、-20 D、10 13、14、以下程序执行后的输出结果是() #include intmain() { inta=2,b=2,c=2; printf(“%d\n”,a/b&c); return0; } A、0 B、1 C、2 D、3 14、设有定义“inta=1,b=2,c=3;”,以下语句中,执行效果与其他3个不同的是() A、if(a>b)c=a,a=b,b=c; B、if(a>b){c=a,a=b;b=c;} C、if(a>b)c=a;a=b;b=c; D、if(a>b){c=a;a=b;b=c;} 15、以下程序运行后的输出结果是() #include intmain() { intc=0,k; for(k=1;k<3;k++) switch(k) {default: c+=k; case2: c++;break; case4: c+=2;break; } printf(“%d\n”,c); return0; } A、3 B、5 C、7 D、9 16、以下程序的输出结果是() intmain() { inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a; printf(“%d,%d\n”,*(p+2),*p+9); return0; } A、3,10 B、4,1 C、1,10 D、2,9 17、下面程序的正确输出结果是()。 intmain() { charstr[5]=”ABCD”,*p=str; printf(“%d\n”,*(p+4)); return0; } A、68 B、’D’ C、0 D、’0’ 18、下面各语句中,能正确进行字符串初始化操作的语句是() A、chars1[5][]={“ABCDE”}; B、chars2[6]={‘A’,’B’,’C’,’D’,’E’}; C、charst[][]={“ABCDE”}; D、chars[5]={‘A’,’B’,’C’,’D’,’E’}; 19、若有说明“inta[3][4]={0};”,则下面正确的叙述是() A、数组a中每个元素均可得到初值0 B、只有元素a[0][0]可得到初值0 C、数组a中各个元素都可以得到初值,但其值不一定是0 D、此说明语句不正确 20、若有说明“inta[3][4];”,则对数组a中元素的非法引用是() A、a[1][3] B、a[0][4] C、a[0][2*1] D、a[4-2][0] 二、判断题 1、break是结束本次循环,而continue是结束所有的循环() 2、在C语言中,变量不区分大小写。 () 3、不同的函数中可以使用相同的变量名。 () 4、形式参数是局部变量。 () 5、若用数组名作为函数的实参,传递给形参的是数组第一个元素的值。 () 6、C语言是低级语言。 () 7、在C语言中,每个函数都必须要有一个且只有一个main函数。 () 8、在C语言中,整型常数表示的方法有3种。 () 9、定义一个静态变量时没有必要对它进行初始化。 () 10、假如x和y为double型,则表达式“x=2;y=x+3/2”;的值是3。 () 三、填空题 1、以下程序的运行结果是。 #include intmain() { inti,j,X=0; for(i=0;i<2;i++) { X++; for(j=0;j<3;j++) { if(j%2)continue; X++; } X++; } printf(“X=%d\n”,X); return0; } 2、以下程序的输出结果是。 #include voidfun1(intx) { x=20; } voidfun2(intb[4]) { intj; for(j=0;j<4;j++) { b[j]=j; } } intmain() { intx=23==10; inta[4]={1,2,3,4},k; fun1(x); printf(“x=%d\n”,x); fun2(a); for(k=0;k<4;k++) { pirntf(“%d\n”,a[k]); } return0; } 3、以下程序运行时输入: 123456789,则程序运行结果是。 #include intmain() { intx,y; scanf(“%2d%*4s%2d”,&x,&y); printf(“%d”,y-x); return0; } 4、以下程序的功能是输入任意整数n后,输出n行由大写字母A开始构成的三角形字符阵列图形。 例如
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 12 课后