C语言基础练习题(含答案)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目次
第1-3章 C说话基本常识习题2
1 选择题2
2 填空题11
3 答案及部分化析13
第4章选择构造习题16
1 选择题16
2 填空题22
3 答案及部分化析28
第5章轮回构造习题31
1 选择题31
2 填空题:37
3 答案及部分化题剖析44
第6章数组习题45
1. 单项选择题45
2. 填空题48
3. 断定题49
4. 程序填空题49
5. 浏览程序,剖析程序的功效.52第7章函数习题59
1. 单项选择题59
2. 填空题60
3. 断定题61
4. 程序填空题62
5. 写出下列程序运行成果63
第8章指针习题70
1 选择题70
2 填空题72
第1-3章 C说话基本常识习题
1 选择题
1. 以下不是C说话的特色的是().
A.说话简练紧凑
B.可以或许编制出功效庞杂的程序
C.C说话可以直接对硬件操纵
D.C说话移植性好
2. 下列字符序列中,不成用作C说话标识符的是().
A.abc123 B.no.1 C._123_ D._ok
3.准确的C说话标识符是().
A._buy_2 B.2_buy C.?_buy D.buy?
4. 请选出可用作C说话用户标识符的一组标识符().
A.void B.a3_b3 C.For D.2a
define _123 -abc DO
WORD IF Case sizeof
5. 下列符号中,不属于转义字符的是().
A.\\ B.\0xAA C.\t D.\0
6.不属于C说话症结字的是().
A.int B.break C.while D.character
7.是C说话供给的正当症结字的是().
A.Float B.signed C.integer D.Char
8.以下不克不及界说为用户标示符的是().
A.scanf B.Void C._3com_ D.int
9.一个C程序是由().
A.一个主程序和若干子程序构成
B.一个或多个函数构成
C.若干进程构成
D.若干子程序构成
10. C说话程序的根本单位是().
A.程序行 B.语句 C.函数 D.字符
11.下列说法中,错误的是().
A.每个语句必须独有一行,语句的最后可所以一个分号,也可所以一个回车换行符号
B.每个函数都有一个函数头和一个函数体,主函数也不破例
C.主函数只能挪用用户函数或体系函数,用户函数可以互相挪用
D.程序是由若干个函数构成的,但是必须有.并且只能有一个主函数
12. 以下说法中准确的是().
A.C说话程序老是从第一个界说的函数开端履行
B.在C说话程序中,要挪用的函数必须在main( )函数中界说C.C说话程序老是从main( )函数开端履行
D.C说话程序中的main( )函数必须放在程序的开端部分13. C编译程序是().
A.C程序的机械说话版本
B.一组机械说话指令
C.将C源程序编译成目的程序
D.由制作厂家供给的一套运用软件
14.以下选项中,正当的用户标识符是().
A.long B._2abc C.3dmax D.A.dat
15.以下选项中,正当的实型常数是().
A.5E2.0 B.E-3 C.2E0 D.1.3E
16.已知大写字母A的ASCII码值是65, 小写字母a的ASCII码是97,则用八进制暗示的字符常量’\101’是().
A.字符A B.字符 a C.字符 c D.不法的常量
17.以下选项中, 正当转义字符的选项是().
A.’\\’ B.’\018’ C.’xab’ D.’\abc’18.以下选项中,准确的字符常量是().
A.”F” B.’\\’’ C.’W’ D.’’19.以下选项中可作为C说话正当整数的是
A.10110B B.0386 C.0Xffa D.x2a2
20.下列变量界说中正当的是
A .short _a=1-.le-1;
B .double b=1+5e2.5;
C .long do=0xfdaL;
D .float 2_and=1-e-3;
21.与数学式子129 x x n 对应的C 说话表达式是().
A .9*x^n/(2*x-1)
B .9*x**n/(2*x-1)
C .9*pow(x,n)*(1/(2*x-1))
D .9*pow(n,x)/(2*x-1)
22.如有代数式cd ab 3,则不准确的C 说话表达式是().
A .a/c/d*b*3
B .3*a*b/c/d
C .3*a*b/c*d
D .a*b/d/c*3
23.已知各变量的类型解释如下:
int m=8,n, a, b;
unsigned long w=10;
double x=3.14, y=0.12;
则以下相符C 说话语法的表达式是().
A .a+=a-=(b=2)*(a=8)
B . n=n*3=18
C .x%3
D .y=float (m)
24.以下相符C 说话语法的赋值表达式是().
A .a=9+b+c=d+9
B .a=(9+b,
c=d+9)
C .a=9+b, b++, c+9
D .a=9+b++=c+9
25.已知字母A 的ASCII 码为十进制数65,且S 为字符型,则履行
语句S=’A’+’6’-’3’;后,S 中的值为().
A .’D’B.68 C .不肯定的值 D .’C’
26.在C 说话中,请求运算数必须是整型的运算符是().
A ./
B .++
C .*=
D .%
27.如有解释语句:char s=’\72’;则变量s ().
A .包含一个字符
B .包含两个字符
C .包含三个字符
D.解释不正当,s的值不肯定
28.如有界说:int m=7; float x=2.5, y=4.7; 则表达式x+m%3*(int)(x+y)%2/4的值是().
A. 2.500000 B. 2.750000 C. 3.500000 D.0.000000
29.在C说话中,char型数据在内存中的存储情势是().
A.补码B.反码C.原码D.ASCII码
30.设变量x为float类型,m为int类型,则以下能实现将x中的数值保存小数点后两位,第三位进行四舍五入运算的表达式是
().
A.x=(x*100+0.5)/100.0
B.m=x*100+0.5, x=m/100.0
C.x=x*100+0.5/100.0
D.x=(x/100+0.5)*100.0
31.表达式13/3*sqrt(16.0)/8的数据类型是().
A.int B.float C.double D.不肯定
32.设以下变量均为int类型,则值不等于7的表达式是().
A.(m=n=6, m+n, m+1)
B.(m=n=6, m+n, n+1)
C.(m=6, m+1, n=6, m+n)
D.(m=6, m+1, n=m, n+1)
33.假设所有变量均为整型,则表达式(x=2, y=5, y++, x+y)的值是().
A.7 B.8 C.6 D.2
34.已知s是字符型变量,下面不准确的赋值语句是().
A.s=’\012’; B.s= ’u+v’;
C.s=’1’+’2’; D.s=1+2;
35.已知s是字符型变量,下面准确的赋值语句是().
A.s=’abc’; B.s=’\08’;
C.s=’\xde’; D.s=”\”;
36.如有以下界说,则准确的赋值语句是().
int x,y;
float z;
A.x=1,y=2, B.x=y=100
C.x++; D.x=int (z);
37.设x.y均为float型变量,则不准确的赋值语句是().
A.++x ; B.x*=y-2;
C.y=(x%3)/10; D.x=y=0;
38.下列语句中相符C说话的赋值语句是().
A.a=7+b+c=a+7; B.a=7+b++=a+7;
C.a=7+b,b++,a+7 D.a=7+b,c=a+7; 39.putchar函数可以向终端输出一个().
A.整型变量表达式值. B.字符串
C.实型变量值. D.字符或字符型变量值.
40.以下程序段的输出成果是( ).
int a=12345; printf(”%2d\n”, a);
A.12 B.34 C.12345 D.提醒出错.无成果
41.若x和y均界说为int 型,z界说为double型,以下不正当的scanf()函数挪用语句为().
A.scanf(”%d%lx,%le”,&x,&y,&z);
B.scanf (”%2d*%d%lf ”, &x, &y, &z);
C.scanf(”%x%*d%o”, &x,&y);
D.scanf(”%x%o%6.2f”, &x,&y,&z);
42.有如下程序段:
int x1,x2;
char y1,y2;
scanf(”%d%c%d%c”,&x1,&y1,&x2,&y2);
若请求x1.x2.y1.y2的值分离为10.20.A.B,准确的数据输入是().(注:└┘代表空格)
A.10A└┘20B B.10└┘A20B
C.10 └┘A└┘20└┘ B D.10A20└┘B
43.若变量已准确解释为float类型, 要经由过程语句
scanf(”%f %f%f”, &a, &b, &c);给a付与10.0, b付与
22.0, c付与33.0, 不准确的输入情势为().
A.10<回车> B.10.0,22.0,33.0<回车>
22<回车>
33
C.10.0<回车> D.10 22<回车>
22.0 33.0<回车> 33<回车>
44.有如下程序,若请求x1.x2.y1.y2的值分离为10.20.A.B,准确的数据输入是().(注:└┘代表空格)
int x1,x2;
char y1,y2;
scanf(”%d%d”,&x1,&x2);
scanf(”%c%c”, &y1,&y2);
A.1020AB B.10└┘20└┘ABC
C.10└┘20 D.10└┘20AB
AB
45.已有界说int a=-2;和输出语句:printf(”%8lx”,a);以
下准确的论述是().
A.整型变量的输出格局符只有%d一种
B.%x是格局符的一种,它可以实用于任何一种类型的数据
C.%x是格局符
D.%8lx不是错误的格局符,个中数字8划定了输出字段的宽

46.有如下程序段,对应准确的数据输入是().
float x,y;
scanf(”%f%f”, &x,&y);
printf(”a=%f,b=%f”, x,y);
A.2.04<回车> B.2.04,5.67<回车>
5.67<回车>
C.A=2.04,B=5.67<回车>D.2.055.67<回车>
47.有如下程序段,从键盘输入数据的准确情势应是().(注:
└┘代表空格)
float x,y,z;
scanf(“x=%d,y=%d,z=%d”,&a,&y,&z);
A.123 B.x=1,y=2,z=3
C.1,2,3 D.x=1└┘ y=2└┘ z=3
48.以下说法准确的是().
A.输入项可认为一个实型常量,如scanf(”%f”,3.5);
B.只有格局掌握,没有输入项,也能进行准确输入,如
scanf(”a=%d,b=5d”);
C.当输入一个实型数据时,格局掌握部分应划定小数点后的位数,如scanf(”%4.2f”,&f);
D.当输入数据时,必须指明变量的地址,如scanf(”%f”,&f); 49.依据界说和数据的输入方法,输入语句的准确情势为:().(注:└┘代表空格)
已有界说:float x,y;
数据的输入方法:1.23<回车>
4.5<回车>
A.scan(”%f,%f”,&x,&y); B.scanf(”%f%f”,&x,&y);
C.scanf(”%3.2f└┘%2.1f”,&x,&y); D.scanf(”%3.2f%2.1f”,&x,&y);
50.依据下面的程序及数据的输入和输出情势,程序中输入语句的
准确情势应当为().
#include ”stdio.h”
main()
{char s1,s2,s3;
输入语句;
printf(”%c%c%c”,s1,s2,s3);
}
输入情势:A└┘B└┘C<回车> (注:└┘
代表空格)
输出情势:A└┘B
A.scanf(”%c%c%c”,&s1,&s2,&s3);
B.scanf(”%c└┘%└┘c%c”,&s1, &s2,&s3);
C.scanf(”%c,%c,%c”,&s1,&s2,&s3);
D.scanf(”%c%c”, &s1, &s2,&s3);
51.以下程序的履行成果是:().
#include ”stdio.h”
main()
{ int x=2,y=3;
printf(”x=%%d,y=%%d\n”,x,y);
}
A. x=%2,y=%3
B. x=%%d,y=%%d
C. x=2,y=3
D.x=%d,y=%d
52.以下程序的输出成果是().(注:└┘代表空格)#include ”stdio.h”
main()
{ printf(”\nstring1=%15s*”, ”programming”);
printf(”\nstring2=%-5s*”, ”boy”);
printf(”string3=%2s*”, ”girl”);
}
A.string1=programming└┘└┘└┘└┘*B.string1=└┘└┘└┘└┘programming*
string2=boy*
string2=boy└┘└┘*string3=gi*
string3=gi*
C.string1=programming└┘└┘└┘└┘* D.string1=└┘└┘└┘└┘programming*
string2=└┘└┘boy*string3=girl*
string2=boy└┘└┘*string3=girl*
53.依据标题中已给出的数据的输入和输出情势,程序中输入输出语句的准确内容是().
#include ”stdio.h”
main()
{ int a;
float b;
输入语句
输出语句
}
输入情势:1└┘2.3<回车>(注:└┘代表空格)
输出情势:a+b=3.300
A.scanf(”%d%f”,&a,&b); B.scanf(”%d%3.1f”,&a,&b);
printf(”\na+b=%5.3f”,a+b);
printf(”\na+b=%f”,a+b);
C.scanf(”%d,%f”,&a,&b); D.scanf(”%d%f”,&a,&b);
printf(”\na+b=%5.3f”,a+b)
printf(”\na+b=%f”,a+b);
54.浏览以下程序,当输入数据的情势为:12,34,准确的输出成果
为().
#include ”stdio.h”
main()
{ int a,b;
scanf(”%d%d”, &a,&b);
printf(”a+b=%d\n”,a+b);
}
A.a+b=46 B.有语法错误
C.a+b=12 D.不肯定值
55.如有界说:int x,y; char s1,s2,s3; 并有以下输出数据:(注:└┘代表空格)
1└┘2<回车>
U└┘V└┘W<回车>
则能给x赋给整数1,给y赋给整数2,给s1赋给字符U,给s2
赋给字符V,给s3赋给字符W的准确程序段是().
A.scanf(”x=%dy=%d”,&x,&y);
s1=getchar();s2=getchar();s3=getchar();
B.scanf(”%d%d”,&x,&y);
s1=getchar();s2=getchar();s3=getchar();
C.scanf(”%d%d%c%c%c”,&x,&y,&s1,&s2,&s3);
D.scanf(”%d%d%c%c%c%c%c%c”,&x,&y,&s1,&s1,&s2,&s2,&s 3,&s3);
2 填空题
1.C说话的符号集包含________.________.________.
2.构造化设计中的三种根本构造是________._______.________. 3.C说话源程序文件的后缀是________,经由编译后生成文件的后缀是________,经由链接后生成文件的后缀是________.
4.C说话的症结字都用________{大写或小写}.
5.一个函数由两部分构成,它们是_______._______.
6.函数体一般包含_______._______.
7.C说话是经由过程_______来进行输入和输出的.
8.以下程序的履行成果________.
#include ”stdio.h”
main()
{ short i=-1,j=1;
printf(”dec:%d,oct:%o,hex:%x,unsigned:%u\n”,i,i,i,i);
printf(”dec:%d,oct:%o,hex:%x,unsigned:%u\n”,j,j,j,j);
}
9.以下程序的履行成果是________.
#include ”stdio.h”
main()
{ char s=’b’;
printf(”dec:%d,oct:%o,hex:%x,ASCII:%c\n”, s,s,s,s);
}
10.以下程序的履行成果是________.(注:└┘代表空格)#include ”stdio.h”
main()
{ float pi=3.1415927;
p rintf(”%f,%.4f,%4.3f,%10.3f”,pi,pi,pi,pi);
printf(”\n%e,%.4e,%4.3e,%10.3e”,pi,pi,pi,pi);
}
11.以下程序的履行成果是:________.
#include ”stdio.h”
main()
{ char c=’c’+5;
printf(”c=%c\n”,c);
}
12.以下程序输入1└┘2└┘3后的履行成果是________.(注:└┘代表空格)
#include ”stdio.h”
main()
{ int i,j;
char k;
scanf(”%d%c%d”,&i,&k,&j);
printf(”i=%d,k=%c,j=%d\n”,i,k,j);
}
13.有以下程序,若输入9876543210后的履行成果是________;若输入为:98└┘76└┘543210后的履行成果是________;若输入为:987654└┘3210后的履行成果为:________.(注:└┘代表空格)
#include ”stdio.h”
main()
{int x1,x2;
char y1,y2;
scanf(”%2d%3d%3c%c”,&x1,&x2,&y1,&y2);
printf(”x1=%d,x2=%d,y1=%c,y2=%c\n”,x,y);
}
14.若x和y均为int型变量,则以下语句的功效是________.
x+=y; y=x-y; x-=y;
15.有一输入函数scanf(”%d”,k);则不克不及使float类型变量k得到准确数值的原因是:________.
16.有如下程序段,输入数据:12345ffl678后,u的值是【1】 ,v 的值是【2】 .
int u;
float v;
scanf(“%3d%f”,&u,&v);
3 答案及部分化析
一.选择题答案
1.B2.B3.A4.B 5.B 6.D
7.B8.D9.B10.C 11.A 12.C
13.C14.B15.C 16.A 17.A 18.C 19.C20.A21.C 22.C 23.A 24.B 25.A26.D27.A 28.A 29.D 30.B 31.C32.C33.B 34.B 35.C 36.C 37.C38.D39.D 40.C 41.D 42.A 43.B44.D45.D 46.A 47.B 48.D 49.B50.A51.D 52.D 53.A 54.D 55.D
14.解析:C说话划定标识符只能由字母.数字和下划线三种字符构成,且第一个字符必须为字母或下划线.并且不克不及
与C说话划定的症结字同名.症结字如:auto, break,
case, char, const, continue, default, do, double,
else, entry, extern, for, float, goto, if, int,
int, long, register, return, short, signed,
sizeof, static, struct, unsigned, while, switch,
typedef, void, volatile, unior.这些症结字先不必
硬背下来,跟着后续的进修,你将发明它们都是一些数据
的类型.语句等,天然会跟着进修的深刻,而记下来. 15.解析:用指数情势暗示一个实型常数时,E或e之前必须稀有字,且E后面指数必须为整数.
16.解析:’\101’为转义字符,相对应一个ASCII码字符.(101)8=(65)10=A.
17.解析:转义字符的特点是以“\”开首,厥后跟一些字符,如\n, \t, \’, \\, \}, \”, \b, \f等代表一些特别的寄
义,而\后如跟数字,可认为八进制或者十六进制,将其转
换为对应的ASCII码值,就可以得出对应的字符.“\”
后跟八进制的写法:\0nn, 或者\nn, 暗示“\0”或者
“\”后只能跟1或3位0——7之间的数字;“\”后跟
十六进制的写法:\xnn,或者\nn, 暗示“\x”或者
“\”后只能跟1或2位0——9及a——f(A——F)之
间的字符.选项B的错误在于8不是八进制;而选项C的
错误在于没有“\”;选项D的错误在于超长(多了一
位).
21.解析:B的错误在于赋值语句的左侧只能为一个简略变量,如:n=3*(n=18); C的错误在于%运算符只能实用于整
型数据,D的错误在于作类型转换时,应将类型加上括号,
即为:y=(float) m
31.解析:逗号表达式的最终成果为最右端的表达式(即x+y)的值,其运算次序是从左自右的.第三个表达式y++,其隐
含有两步操纵:先取y的原值,再履行y=y+1运算;而本
题中,固然没有将y赋给某个变量(取其原值),但照样
必定会履行加运算的.因而,经由第三个表达式,y已经
自加为6,故x+y的值为8,相对应得表达式最终成果为
8.若本题改为:(x=2, y=5, z=y++, x+z),则其成果应
为7.
二.填空题答案
1.答案:英文字母.数字.一些有特定寄义的标点符号
2.答案:次序构造.选择构造.轮回构造
3.答案:C,OBJ,EXE
4.答案:小写
5.答案:函数解释部分和函数体
6.答案:变量界说部分和履行部分
7.答案:输入和输出函数
8.答案:dec:-1,oct:177777,hex:ffff,unsigned:65535
dec:1,oct:1,hex:1,unsigned:1
9.答案:dec:98,oct:142,hex:62,ASCII:b
10.答案:3.141593,3.1416,3.142, └┘└┘└┘└┘└┘3.142
3.141593e+00,3.1416e+00,3.142e+00,└┘└┘3.142e+00
(注:因为c编译体系不合,我们上机运用的机械,其第二
个printf语句现实成果为:
3.14159e+00,3.142e+00,3.14e+00,└┘└┘3.14e+00,
即:小数点后取5位.)
11.答案:c=h
12.答案:i=1,k=└┘,j=2
13.答案:第一种情形的履行成果:x1=98,x2=765,y1=4,y2=1
第二种情形的履行成果:x1=98,x2=76,y1=└┘,y2=3
第三种情形的履行成果:x1=98,x2=765,y1=4,y2=2 14.答案:交流x和y的值
15.答案:(1)格局符应为:%f;(2)变量前边未加取地址符&, 即应为scanf(”%f”,&k);
16.答案:【1】123 【2】45.000000
第4章选择构造习题
1 选择题
1.已有界说:int x=3, y=4, z=5; 则表达式!(x+y)+z-1 && y+z/2的值是().
A.6 B.0 C.2 D.1
2.设a=5,b=6,c=7,d=8,m=2,n=2, 则履行(m=a>b) && (n=c>d)后n的值为().
A.1 B.2 C.3 D.4
3.设x.y和z都是int类型变量,且x=3,y=4,z=5, 则下面的表达式中,值为0的表达式为(). A.’x’ && ’y’ B.x<=y
C.x||y+z&&y-z D.!((x<y)&&!z||1)
4.为了防止嵌套的if-else语句的二义性,C说话划定else老是与()构成配对关系.
A.缩排地位雷同的if
B.在其之前未配对的if
C.在其之前未配对的比来的if
D.同一行上的if
5.逻辑运算符两侧运算对象的数据类型().
A.只能是0或1
B.只能是0或非0正数
C.只能是整型或字符型数据
D.可所以任何类型的数据
6.以下关于运算符优先次序的描写中准确的是().
A.关系运算符<算术运算符<赋值运算符<逻辑与运算符
B.逻辑与运算符<关系运算符<算术运算符<赋值运算符
C.赋值运算符<逻辑与运算符<关系运算符<算术运算符
D.算术运算符<关系运算符<赋值运算符<逻辑与运算符
7.下列运算符中优先级最高的是().
A.< B.&& C.+ D.!=
8.选择出正当的if语句(设int x,a,b,c;)().
A.if(a=b) c++;
B.if(a=<b) c++;
C.if(a<>b) c++;
D.if(a=>b) c++;
9.能准确暗示“当x的取值在[-58,-40]和[40,58]规模内为真,不然为假”的表达式是().
A.(x>= -58) && (x<= -40) && (x>=40) && (x<=58)
B.(x>= -58) || (x<= -40) || (x>=40) || (x<=58)
C.(x>= -58) && (x<= -40) || (x>=40) && (x<=58)
D.(x>= -58) | |(x<= -40) && (x>=40) || (x<=58)
10.断定char型变量s是否为小写字母的准确表达式是().
A.’a’ <= s<=’z’ B.(s>=’a’) & (s<=’z’)
C.(s>=’a’) && (s<=’z’) D.(’a’<=s) and (’z’>=s)
11.若愿望当x 的值为奇数时,表达式的值为“真”,x 的值为偶数时,表达式的值为“假”.则以下
不克不及知足请求的表达式是().
A .x%2==1
B .!(x%2==0)
C .!(x%2)
D .x%2
12.已知 x=45, y=’a’, z=0; 则表达式(x>=z && y<’z’|| !y)的值是().
A .0
B .语法错
C .1
D .“假”
13.指出下列程序段所暗示的逻辑关系是().
if(a<b)
{if(c==d)
x=10;
}
else
x=-10;
A .⎩⎨
⎧≠≥=<-=d c b a d c b a x 且且1010 B .⎩⎨⎧≥=<-=b
a d c
b a x 且1010
C .⎩⎨⎧≠<=<-=d
c b a d
c b a x 且且1010 D .⎩⎨⎧≠=<-=d
c d
c b a x 且1010 14.有一函数:⎪⎩⎪⎨⎧>=<-=0
100
01x x x y ,以下程序段中不克不及依据x 值准确盘算出y 值的是().
A .if (x>0) y=1;
else if (x==0) y=0;
else y= -1;
B .y=0;
if (x>0) y=1;
else if (x<0) y= -1;
C .y=0;
if (x>=0)
if(x>0) y=1;
else y= -1;
D .if (x>=0)
if (x>0) y=1;
else y=0;
else y= -1;
15.履行以下语句后,y 的值为().
int x,y,z;
x=y=z=0;
++x || ++y && ++z;
A.0 B.1 C.2 D.不肯定值
16.已知int a=1,b=2,c=3; 以下语句履行后a,b,c的值是().
if(a>b)
c=a; a=b; b=c;
A.a=1, b=2, c=3 B.a=2, b=3, c=3
C.a=2, b=3, c=1 D.a=2, b=3, c=2
17.请浏览以下程序:该程序().
#include ”stdio.h”
main()
{ int x=-10, y=5, z=0;
if (x=y+z) printf(”***\n” );
else printf(”$$$\n”);
}
A.有语法错不克不及经由过程编译
B.可以经由过程编译但不克不及经由过程衔接
C.输出***
D.输出$$$
18.以下程序的运行成果是().
#include ”stdio.h”
main()
{ int a=1;
if (a++>1) printf(”%d\n”, a);
else printf(”%d\n”, a--);
}
A.0 B.1 C.2 D.3
19.当a=1,b=2,c=4,d=3时,履行完下面一段程序后x的值是().
if (a<b)
if (c<d) x=1;
else
if (a<c)
if (b<d) x=2;
else x=3;
else x=4;
else x=5;
A.1 B.2 C.3 D.4
20.履行以下程序段后,变量x,y,z的值分离为().
int a=1,b=0, x, y, z;
x=(--a==b++)?--a:++b;
y=a++;
z=b;
A.x=0,y=0,z=0 B.x= -1,y= -1,z= 1
C.x=0,y=1,z=0 D.x= -1,y= 2, z= 1
21.若a.b.c.d.w均为int类型变量,则履行下面语句后的w值是().
a=1;b=2;c=3;d=4;
w=(a<b)?a :b;
w=(w<c)?w:c;
w=(w<d)?w :d;
A.1 B.2 C.3 D.4
22.以下程序的输出成果是().
#include ”stdio.h”
main()
{
int a=5, b=4, c=6, d;
printf(”%d\n”, d=a>b?a>c?a:c :b);
}
A.5 B.4 C.6 D.不肯定
23.若a.b.c1.c2.x.y均为整型变量,准确的switch 语句是().
A.switch (a+b); B.switch a
{ case 1: y=a+b; break; { case c1: y=a-b; break;
case 0: y=a-b; case c2: x=a*d; break;
break; default: x=a+b;
} }
C.switch (a*a+b*b) D.switch(a-b)
{ case 3: { default: y=a*b; break;
case 1: y=a+b; break; case 3: x=a+b; break;
case 3: y=b-a; break; case 10: case 11: y=a-b; break;
} }
24.履行下列程序,输入为3的数出成果是().
#include ”stdio.h”
main()
{
int k;
scanf(”%d”, &k);
switch(k)
{ case 1: printf(”%d\n”, k++);
case 2: printf(”%d\n”, k++);
case 3: printf(”%d\n”, k++);
case 4: printf(”%d\n”, k++);
break;
default: printf(”Full!\n”);
}
}
A.3 B.4 C.3 D.4
5 4
25.假定等级和分数有以下对应关系:
等级:A 分数:85——100
等级:B 分数:60——84
等级:C 分数:60以下
对于等级grade输出响应的分数区间,可以或许完成该功效的程序段是().
A.switch (grade)
{case ’A’:printf(”85——100\n”);
case ’B’:printf(”60——84\n”);
case ’C’:printf(”<60\n”);
default:printf(”grade is error!\n”);
}
B.switch (grade)
{ case ’A’:printf(”85——100\n”);
break;
case ’B’:printf(”60——84\n”);
case ’C’:printf(”<60\n”);
default:printf(”grade is error!\n”);
}
C.switch (grade)
{case ’A’:printf(”85——100\n”);
break;
case ’B’:printf(”60——84\n”);
break;
case ’C’:printf(”<60\n”);
default:printf(”grade is error!\n”);
}
D.switch (grade)
{case ’C’:printf(”<60\n”);
break;
case ’B’:printf(”60——84\n”);
break;
default:printf(”grade is error!\n”);
break;
case ’A’:pri ntf(”85——100\n”);
}
26.有如下程序,写出该履行成果().
#include ”stdio.h”
main()
{
float x=2.0, y;
if (x<0.0) y=0.0;
else if (x<10.0) y=1.0/x;
else y=1.0;
printf(”%f\n”,y);
}
A.0.000000 B.0.250000 C.0.500000 D.1.000000 27.以下程序的运行成果是().
#include ”stdio.h”
main()
{
int a=2,b=-1,c=2;
if (a<b)
if (b<0)
c=0;
else c++;
printf(”%d\n”,c);
}
A.0 B.1 C.2 D.3
28.运行以下程序后,如从键盘上输入china#,则输出为().
#include ”stdio.h”
main()
{
int v1=0,v2=0;
char ch;
while ( (ch=getchar()) != ’# ’)
switch (ch)
{ case ’a’:
case ’h’:
default: v1++;
case ’o’: v2++;
}
printf(”%d,%d\n”, v1,v2);
}
A.2,0 B.5,0 C.5,5 D.2,5
29.有以下程序,若输入为字符s,则程序运行成果为().
#include ”stdio.h”
main()
{
char ch;
ch=getchar();
switch (ch)
{ case ’a’:printf(”a=%c\n”,ch);
default: printf(”end!\n”);
case ’b’: printf(”b=%c\n”,ch);
case ’c’: printf(”c=%c\n”,ch);
}
}
A.end! B.end! C.有语法错误 D.a=s b=s end!
c=s
30.有以下程序,程序运行后的输出成果是().
#include ”stdio.h”
main()
{
int a=15, b=21, m=0;
switch (a%3)
{ case 0: m++; break;
case 1: m++;
switch (b%2)
{ default: m++;
case 0: m++; break;
}
}
printf(”%d\n”,m);
}
A.1 B.2 C.3 D.4
2 填空题
1.若从键盘输入58,则输出成果是________.
#include ”stdio.h”
main()
{
int a;
scanf(”%d”, &a);
if (a>50) printf(”%d”, a);
if (a>40) printf(”%d”,a);
if (a>30) printf(”%d”,a);
}
2.设int x=9,y=8;表达式x==y+1的成果是________.
3.界说int x,y;履行y=(x=1,++x,x+2);后, y的值是________. 4.界说int x=10,y,z; 履行y=z=x; x=y==z;后, x的成果是________. 5.设int a=1,b=2,c,d,e; 履行
c=(-a++)+(++b);
d=(b--)+(++a)-a;
e=(a/(++b))-(a/(--a));
请问a,b,c,d,e的成果是:________.
6.设int a=2,b=3,c,d,e,f; 履行
c=(a++>= --b);
d=(a==++b);
e=(a--!=b);
f=(++a>b--);
请问a,b,c,d,e,f的成果是:________.
7.以下程序的运行成果是________.
#include ”stdio.h”
main()
{
int a,b,c,s,w,t;
s=w=t=0;
a=-1; b=3; c=3;
if (c>0) s=a+b;
if (a<=0)
{ if (b>0)
if (c<=0) w=a-b;
}
else if (c>0) w=a-b;
else t=c;
printf(”%d %d %d”, s,w,t);
}
8.以下程序的运行成果是________.
#include ”stdio.h”
main()
{
int a,b,c,d,e;
a=c=1;
b=20;
d=100;
if (!a) d=d++;
else if (!b)
if (d) d= --d;
else d= d--;
printf(”%d\n\n”, d);
}
9.以下程序的运行成果是________.
#include ”stdio.h”
main()
{
int a, b= 250, c;
if ((c=b)<0) a=4;
else if (b=0) a=5;
else a=6;
printf(”\t%d\t%d\n”,a,c);
if (c=(b==0))
a=5;
printf(”\t%d\t%d\n”,a,c);
if (a=c=b) a=4;
printf(”\t%d\t%d\n”,a,c);
}
10y值.请在【】内填空.
#in
main()
{
int x,y;
scanf(”%d”, &x);
if (【1】) y=x*(x+2);
else if (【2】) y=1/x;
else if (x<=-1) y=x-1;
else 【3】;
if (y!= -1) printf(”%d”,y);
else printf(”error”);
}
11.以下程序的功效是盘算一元二次方程ax2+bx+c=0的根.请在【】内填入准确内容.
#include ”stdio.h”
#include ”math.h”
main()
{
float a,b,c,t,disc,w,term1,term2;
printf(”enter a,b,c:”);
scanf(%f%f%f”,&a,&b,&c);
if (【1】)
if (【2】) printf(”no answer due to input error\n”);
else printf(”the single root is %f\n”, - c/b);
else
{ disc=b*b-4*a*c;
w=2*a;
term1= -b/w;
t=abs(disc);
term2=sqrt(t)/w;
if (【3】)
printf(”complex root\n real part=%f imag part =%f\n”, term1,term2);
else
printf(”real roots\n root1=%f root2=%f\n”, term1+term2,term1-term2);
}
}
12.以下程序依据输入的三角形的三边断定是否能构成三角形,若可以则输出它的面积和三角形的类型.请在【】内填入准确内容.
#include ”math.h”
#include ”stdio.h”
main()
{
float a,b,c,s,area;
printf(”please input three edges of a triangle:”);
scanf(”%f%f%f”,&a,&b,&c);
if (【1】)
{ s=(a+b+c)/2;
area=sqrt(s*(s-A*(s-B*(s-c));
printf(”\nthe area of the triangle is: %f”,area);
if ((a==b)&&(b==c))
printf(”等边三角形”);
else if (【2】)
printf(”等腰三角形”):
else if (【3】)
printf(”直角三角形”):
else printf(”一般三角形”):
}
else printf(”不克不及构成三角形”);
}
13.以下程序的功效是断定输入的年份是否是闰年.请在【】内填入准确内容.
#include ”stdio.h”
main()
{
int year, flag;
printf(”please input the year to jude whether it is a leap year:”);
scanf(”%d”,&year);
if (year%400==0) flag=1;
else if (【1】) flag=1;
else 【2】;
if (flag) printf(”%d is a leap year\n”,year);
else printf(”%d is not a leap year!\n”,year);
}
14.以下程序是对用户输入的字母进行大小写转换.请在【】内填入准确内容.
#include ”stdio.h”
main()
{
char ch;
printf(”please input a letter:”);
scanf(”%c”,&ch);
if (【1】) ch=ch+32;
else if (ch>=’a’ && ch<=’z’)
【2】;
printf(” the converted letter is: %c\n”,ch);
}
15.以下程序是对从键盘输入的任何三个整数,求出个中的最小值.请在【】内填入准确内容. #includ e ”stdio.h”
main()
{
int a,b,c,min;
printf(”please input three numbers:”);
scanf(”%d%d%d”,&a,&b,&c);
if (【1】)
min=b;
else
min=a;
if (min>c)
【2】;
printf(”min=%d\n”,min);
}
16.以下程序实现如许的功效:市肆卖西瓜,10斤以上的每斤0.15元,8斤以上的每斤0.3元,6斤以上的每斤0.4元,4斤以上的每斤0.6元,4斤以下的每斤0.8元,从键盘输入西瓜的重量和顾客所付钱数,则输出敷衍款和应找钱数.请在【】内填入准确内容.
#include ”stdio.h”
main()
{
float weight, money, rate;
printf(”the paid money of the client is:”);
scanf(”%f”,&money);
printf(”the weight of the watermelon is:”);
scanf(”%f”,&weight);
if (【1】)
rate=0.15;
else if (weight>8)
rate=0.3;
else if (weight>6)
【2】;
else if (weight>4)
rate=0.6;
【3】
rate=0.8;
printf(”the account payable of the watermelon is %f\n”, weight*rate);
printf(”the change for client is %f\n”,money-weight*rate);
}
17.以下程序段的运行成果是________.
#include ”stdio.h”
main()
{
char ch1=’a’,ch2=’A’;
switch (ch1)
{ case ’a’:
switch (ch2)
{case ’A’: printf(”good!\n”); break;
case ’B’: printf(”bad!\n”); break;
}
case ’b’: printf(”joke\n”);
}
}
18值.请在【】内填入准确内容.
main()
{
int x, rate;
float y;
printf(”please input the value of x:”);
scanf(”%d”,&x);
if (【1】) rate= -1;
else rate=【2】;
switch(rate)
{ case –1: y=0; break;
case 0: y=x; break;
case 1: y=10; break;
case 2:
case 3: y=-0.5*x+20; break;
default: y= -2;
}
if (【3】) printf(”y=%f\n”,y);
else printf(”the value of x is invalid!\n”);
}
19.以下程序实现的功效是:从键盘输入某年某月,输出该年份该月的天数.请在【】内填入准确内容.
#include ”stdio.h”
main()
{
int year, month, days, leap;
printf(”please input both year and month:”);
scanf(”%4d/%2d”,&year,&month);
switch (【1】)
{ case 1:
case 3:
case 5;
case 7:
case 8:
case 10:
case 12: days=31;
【2】
case 4:
case 6:
case 9:
case 11: days=30;
break;
case 2: if (year%400==0) leap=1;
else if (year%4==0 && year%100!=0) leap=1;
else 【3】;
if (leap)
days=29;
else
days=28;
}
printf(”%d年%d月的天数为%d\n”, year, month, days);
}
20.以下程序完成两个数的四则运算.请在【】内填入准确内容.
#include ”stdio.h”
main()
{
float x,y;
char operator;
printf(”please input the expression:”);
scanf(”%f%c%f”,&x,&operator,&y);
switch (【1】)
{ case ’+’: printf(”%g%c%g=%g\n”, x, operator, y, x+y);
【2】;
case ’-’: printf(”%g%c%g=%g\n”, x, operator, y, x-y);
break;
case ’*’: printf(”%g%c%g=%g\n”, x, operator, y, x*y);
break;
case ’/’: if (y==0.0)
p rintf(”除零错误!\n”);
else
printf(”%g%c%g=%g\n”, x, operator, y, x/y);
break;
【3】: printf(”表达式消失错误!\n”);
}
}
21.以下程序运行后的输出成果是_____________.
#include ”stdio.h”
main()
{
int x=10, y=20, t=0;
if (x==y) t=x; x=y; y=t;
printf(”%d,%d \n”,x,y);
}
22.履行以下语句后,x.y 和z 的值分离为_____________.
int x,y,z;
x=y=z=0;
++x || ++y && ++z;
3 答案及部分化析
一.选择题答案
1. D 2. B 3. D 4.C 5.D 6.C
7. C 8. A 9. C 10.C 11.C 12.C
13.B 14.C 15.A 16.B 17.C 18.C
19.B 20.B 21.A 22.C 23.D 24.C
25.D 26.C 27.C 28.C 29.A 30.A
2.解析:当前提1:m=a>b 的值为假时, 便已经肯定全部表达式的值为假,所以不必再持续断
定第二个表达式的逻辑值.因为没有履行第二个表达式n=c>d,所以n 的值仍为2.
17.解析:if 的前提表达式x=y+z 为赋值语句,x=5为非零值,即为if (1) printf(”***\n”);
23.解析:A .的错误在于switch(a+b);厥后有一个“;”,B 的错误在于switch a 的前提表达式a
没有括号,应当为switch(a),C 的错误在于有两个case 具有雷同的进口值.
28.解析:当输入c 时,switch 语句履行情形为:
当持续输入h 时,switch 语句的履行情形为:
⎩⎨⎧=+==+=21222111v v v v 反复上述进程,输入5个有用字符,则v1和v2履行5次自加操纵,所以: v1=5, v2=5 二.填空题答案
1.答案:585858
解析:固然三个if 语句按照嵌套方法书写,但是程序仍然是依次序运行的,会分离对每一个if
的前提表达式进行断定,若其前提表达式为真,就履行厥后的语句,不然,不履行.
2.答案:1
解析:留意该表达式是关系表达式的双等号,所以其成果只能为1或0.
3.答案:4
4.答案:1
5.答案:在Turbo C 编译体系下,成果为a=2,b=3,c=2,d=3,e=-1;若在Visual C++下,成果为
switch(ch) {case ’a ’: case ’h ’: default: v1++; case ’0’: v2++; } 从此处向下履行 因为没有break 语句
switch(ch)
{case ’a ’:
case ’h ’:
default: v1++;
case ’0’: v2++;
} 从此处向下履行 因为没有break 语句
a=2,b=3,c=2,d=3,e=-0.
解析:①在Turbo C 编译体系下,解题进程如下:
第一个赋值语句“c=(-a++)+(++b);”可分化为如下的几个语句:
211,231,31211=+==+-==+=⇒⎪⎭
⎪⎬⎫+=+-=+=a c b a a b a c b b
此时a=2,b=3,c=2.
第二个赋值语句“d=(b --)+(++a)-a;”可分化为如下的几个语句:
213,3333,31211=-==-+==+=⇒⎪⎭
⎪⎬⎫-=-+=+=b d a b b a a b d a a
此时a=3,b=2,c=2,d=3.
第三个赋值语句“e=(a/(++b))-(a/(--a));”中因为自加.自减运算符的优先级高于其它运算符,故先运算++和--,令a=2,b=3,然后该等式中a 的值都取2介入运算,故该等式等价与:“e=2/3-2/2;”,是以e 的值等于0.
此时a=2,b=3,c=2,d=3,e=0
②在Visual C++编译体系下,解题进程如下:
前两条赋值语句“c=(-a++)+(++b);”.“d=(b --)+(++a)-a;”的运算进程和在Turbo C 编译系同一样,第三个赋值语句“e=(a/(++b))-(a/(--a));”可按步调分化为如下的几个语句
2,02/33/3,3121)1/(/1
==-==+=⇒⎪⎭
⎪⎬⎫-=--=+=a e b a a a a b a e b b
是以,其成果为a=2,b=3,c=2,d=3,e=-0
6.答案:a=3,b=2,c=1,d=1,e=0,f=0
解析:第一个赋值语句c=(a++>= --b);可以分化为如下的语句: 312,1)22(,2131)(1=+==>===-=⇒⎪⎭
⎪⎬⎫+=>==-=a c b a a b a c b b
第二个赋值语句d=(a==++b);可以分化为如下的语句:
1)33(,312)(1=====+=⇒⎭
⎬⎫===+=d b b a d b b 第三个赋值语句e=(a--!=b);可以分化为如下的语句:
213,0)3!3(1)!(=-====⇒⎭
⎬⎫-===a e a a b a e 第四个赋值语句f=(++a>b--);可以分化为如下的语句:
213,0)33(,311)(1=-==>==+=⇒⎪⎭
⎪⎬⎫-=>=+=b f a a b b b a f a a
由以上各步,可以得到:a=3,b=2,c=1,d=1,e=0,f=0
7.答案:2 0 0
解析:参看如下的注释语句.
if (c>0) s=a+b; /* c=3>0为真,所以履行s=a+b语句;即:s=2*/
if (a<=0) /*因为a= -1, 故a<=0为真,所以履行厥后的大括号内的语句*/
{ if (b>0) /*因为b=3, 故b>0为真,可以持续下面的语句*/
if (c<=0) w=a-b; /*因为c=3,c<=0为假,厥后w=a-b不会履行*/
}
else if (c>0) w=a-b;/*这一对if-else因a<=0为真,所以没有机遇履行到*/
else t=c;
8.答案:100
9.答案: 6 250
5 1
00
10.答案:【1】x>2 && x<=10 【2】x>-1 && x<=2 【3】y= -1
11.答案:【1】a==0 【2】b==0 【3】disc<0
12.答案:【1】(a+b>c) && (b+c>a) &&(a+c>b)
【2】 (a==b) || (b==c) || (a==c)
【3】 (a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a)
13.答案:【1】(year%4==0)&&(year%100!=0) 【2】flag=0
14.答案:【1】ch>=’A’ && ch<=’Z’ 【2】ch=ch-32
15.答案:【1】a>b【2】min=c;
16.答案:【1】weight>10 【2】rate=0.4 【3】else
17.答案:good!
joke
18.答案:【1】x<0 【2】x/10 【3】y!= -2
19.答案:【1】month 【2】break; 【3】leap=0;
20.答案:【1】operator 【2】break 【3】default
21.答案:20,0
22.答案:1,0,0
第5章轮回构造习题
1 选择题
1.以下程序的输出成果是( ).
main()
{int n=4;
while (n--)
printf(〞%d〞,--n);
}
A.20
B.31
C.321
D.210
2.以下程序的输出成果是( ).
main()
{int x=10,y=10,i;
for(i=0;x>8;y=++i)
printf("%d%d",x--,y);
}
A.10192
B.9876
C.10990
D.101091
3.当履行以下程序段时.
x=-1;
do
{x=x*x;}
while (!x);
A.轮回体将履行一次
B.轮回体将履行两次
C.轮回体将履行很多多次
D.体系将提醒有语法错误4.履行以下程序后输出的成果是().
main()
{ int y=10;
do{y--;}while(--y);
printf("%d\n",y--);}
A.-1
B.1
C.8
D.0
5.下面程序的输出成果是().
main()
{ int x=3,y=6,a=0;
while (x++!=(y-=1))
{a+=1;
if (y<x) break;
}
printf("x=%d,y=%d,a=%d\n",x,y,a);
}。

相关文档
最新文档