1、C语言程序设计复习题目1219103530C语言程序设计复习题目存储容量8bit=1字节(bit)1024bit=1kb 32位算机中:字符型 char 1 字节;整型 int 2 字节(s hort 2 字节)长整型long 4 字节单精度float 4 字节双精度 double 8 字节64位算机中:字符型 char 1 字节;整型 int 4 字节(s hort 4 字节)长整型long 4 字节单精度float 4 字节双精度 double 8 字节一、单选题1.十进制数50表示成符合C语言规定的八进制数为( D )。 A. 20 B. 32 C. 62 D. 0622.由C语言源程序
2、文件编译而成的目标文件的默认扩展名为( D )。 A. cpp B. c C. exe D. obj3.C语言源程序文件的缺省扩展名为( D )。A. cpp B. exe C. obj D. C4.char类型的长度为( A )个字节。 A. 1 B.2 C. 3 D. 45.枚举类型中的每个枚举常量的值都是一个( A )。A. 整数B. 浮点数 C. 字符 D. 记录6.在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为 A. main B. MAIN C. name D. function7.以下叙述正确的是( C )。A.在C程序中,main函数必须位于程序的最前面B. C程
3、序的每行中只能写一条语句C. C语言本身没有输入输出语句D.在对一个C程序进行编译的过程中,可发现注释中的拼写错误8.设x和y均为逻辑值,则x&y为真的条件是( A )。A. 它们均为真B. 其中一个为真C. 它们均为假D. 其中一个为假9.设x和y均为逻辑值,则x|y为假的条件是x和y( C )。A. 均为真B. 其中一个为真C. 均为假D. 其中一个为假10.程序运行中需要从键盘上输入多于一个数据时,各数据之间默认使用( D )符号作为分隔符。 A. 空格或逗号 B. 逗号或回车 C. 逗号或分号 D. 空格或回车11.C语言程序中的基本功能模块为( D )。 A. 表达式 B. 标识符
4、C. 语句 D. 函数12.逻辑表达式(x0 & x=10)的相反表达式为( A )。A. x10 B. x10C. x=0 | x0 & x1013.在下列的符号常量定义中,正确的定义格式为( C )。A. #define M1 B. const int M2 20 C. #define M3 10 D. const char mark14.假定x的值为5,y的值为6,则表达式x+*-y的值为(A)。A. 25 B. 30 C. 36 D. 4215.在switch语句的每个case块中,假定都是以break语句结束的,则此switch语句容易被改写为( D )语句。A. forB. whi
5、leC. doD. if16.当处理一个问题时的循环次数已知时,最好采用( A )循环来解决。 A. for B. while C. do-while D. switch17.循环体至少被执行一次的循环语句为( C )。A. forB. whileC. do-while D. 任一种循环18.假定n的值为5,则表达式n+的值为( B )。A. 6 B. 5 C. 4 D. 719. for循环语句能够被改写为( D )语句。A. 复合B. ifC.switchD. while20.假定i的初值为0,则在循环语句“while(in) s+=i*i; i+;”中循环体被执行的总次数为( B )。
6、A. n-1 B. n C. n+1 D. n/221.循环语句“for(i=0; i5)的相反表达式为(x!=0 | y=5)或(x | y=y & ch5的相反表达式为 x+yname改写成对应的直接访问表达式为 (*p).name 。37.假定一个结构类型的定义为struct Aint a,b; A* c;,则该类型的理论长度为12。38.假定一个结构类型的定义struct stu int a; float b; ;,则该类型的理论长度为8。39.假定要访问一个结构对象x中的数据成员a,则表示方式为x.a。40.正常执行文件关闭操作时,fclose函数的返回值是0。三、写出下列每个程序运
7、行后的输出结果1.#includeint main ( ) int x=2,y=-1,z=2;if (xy)if (y0)z=0;elsez+=1; printf(“%dn”,z); return 0;输出结果:32.#include int main() float score; char grade; printf(请输入学生成绩:); scanf(%f,&score); if(score=90 & score=80 & score=70 & score=60 & score=0 & score60) grade=E; else grade=#; if(grade=#) printf(输入
8、数据错误!n); else printf(score=%.1f,grade=%cn,score,grade);return 0;从键盘输入85,输出结果:B3.#include int main( ) char c; / char 是定义字符型变量;into定义整形数据;float浮点型,就是带小数点 int v1=0, v2=0; do /do. While do后跟循环体 while后跟条件 不满足则退出程序。 switch (c=getchar( ) / Switch用在C语言中它经常跟Case一起使用,是一个判断选择代码。Switch作用与if语句类似,其功能就是控制业务流程流转的。只
9、能针对基本数据类型使用switch,这些类型包括int、char等。对于其他类型,则必须使用if语句; getchar编译运行之后,从键盘中输入字符 case a : v1+=1; case t : case T :v2+=1; default : v1+=1; v2+=1 /在switch里用 如果都不满足 使用此语句 while(c!=n); printf(v1=%d, v2=%dn,v1, v2);return 0;从键盘输入Total,输出结果:v1=7, v2=9但要注意的是case语句后面一般都要加上break;否则无论是什么条件都会运行后面的语句. 输入Total, 1输入T,则
10、从caset:caseT:v2+=1开始往下执行所有语句.结果为v1=1,v2=2; 2输入o,则只执行default:v1+=1;v2+=1,结果为v1=2,v2=3; 3输入t,则从caset:caseT:v2+=1开始往下执行所有语句.结果为v1=3,v2=5; 4输入a,则从casea:v1+=1;开始往下执行所有语句,结果为v1=5,v2=7; 5输入l,则只执行default:v1+=1;v2+=1,结果为v1=6,v2=8; 6输入,因为是do.while循环,所以先执行循环体,后判断循环条件.所以执行default:v1+=1;v2+=1,结果为v1=7,v2=9; 所以结果是
11、v1=7,v2=9;后面没break;所结果就是v1=7,v2=9.这个不用上机运行.你要是怀疑你自己去机器上验证.如果加上break结果当然是v1=4,v2=54.#include void main() int n=6, y=1; while(n-) y+=3;/ while(n-)是条件 直到n-为0时退出。 printf(y=%dn,y);i=1 :s=0+1*1 s=1i=2 :s=1+2*2 s=5i=3 :s=5+3*3 s=14 i=4 :s=14+4*4 s=30i=5 :s=30+5*5 s=55 输出结果:y=195.#include void main() int i,
12、s=0; for(i=1;i6;i+) s+=i*i; printf(“s=%dn”,s); 输出结果:s=55 1 不符条件 2 s=0+2=2i= 3 s=2+3=5 4 s=5+4=95 不符合6 s=9+6=157 不符合 6.#include void main() int i,s=0; for(i=1;i8;i+) if(i%2=0 | i%3=0) s+=i; printf(s=%dn,s); 输出结果:s=157.#include int main() int i,j,k; for (i=0;i=3;i+) for (j=0;j=2-i;j+) printf( ); for (
13、k=0;k=2*i;k+) printf(* ); printf(n); for (i=0;i=2;i+) for (j=0;j=i;j+) printf( ); for (k=0;k0&chi9;i+=2) ;s=10*s+chi-0; 实际上只运行了一次s=6,第二次i=2,ch2=a,a不在09以内,循环就终止了,明白吗?另外0不等于0,字符0的ascii码是十进制48,数值型1就是1.字符1的数值为47.例: for循环中,i=0是chi=6,字符0,9的ASCII值为48,57,6的ASCII值为54,显然0=6=9,s=10*s+chi-0=10*0+6-0=54-48=6, *
14、* * *8.#include void main( ) char ch7=“12ab56”; int i, s=0; for(i=0; chi=0&chi=9; i+=2) s=10*s+chi-0; printf(“%dn”, s);输出结果:1 void main() 表示空类型,它跟int,float是同地位的,一般用在没有返回值的函数中,比如你写void main (),主函数完了不用写return 语句,但是如果是int main ()或者是main (),你不写return 语句它就会有warning9.#include int WF(int x, int y) x=x+y; y
15、+=x; return x+y;(x=11,y=19) void main() int x=3, y=8; printf(%dn,WF(x,y); 输出结果:3010.#include int LA(int *a, int n) / int *a;则是 指定义一个int 类型的指针 用来指向一个用来存放int型数据的地址。而int*a=&a指的是a地址里面的数据 即int*a=&a是一个数,不再是地址 int i,s=0; for(i=0;in;i+) s+=ai; return s; void main() int a5=1,2,3,4,5; int b=LA(a,5)+LA(a+2,3);
16、/LA(a,5) 意思时a数组前5个元素相加的和而LA(a+2,3)指在 a【0】的地址上加上2,即指针指向a数组的第2个元素。 printf(b=%dn,b); 输出结果:b=2711.#include void LE(int* a, int* b) int x=*a; /a的的指针指向x *a=*b; *b=x; /a、b指针互换;x值赋值b所指的存储单元 void main() int x=15, y=26;printf(%d %dn,x,y);LE(&x,&y); /x地址里的数据是15 y地址数据时26 printf(%d %dn,x,y); 输出结果:15 26 26 1512.#
17、include 同9题 int WF(int x, int y) x=x+y; y+=x; return x+y; void main() int x=3, y=5; printf(%dn,WF(x,y); 输出结果:2113. #include void main() char a=abcdbfkgamd;/a的ascii码是97 依次向后退 e的ascll码时101 int i1=0, i2=0, i=0; while(ai) if(aie) i1+; else i2+;/与e比较ascll码 i+; printf(%d %dn,i1,i2); 输出结果:7 414.#include vo
18、id main() int a8=76,63,54,95,40,75,90,66; int i, s=0; for(i=0; i=70 & ai=90) s+=ai; /a数组中的元素在条件内的只有76 75 90 ;s+=ai的含义就是条件符合的元素相加即 s=s+“条件符合的因素” printf(s=%dn,s); 输出结果:s=24115.#include #define N 6 /#define预处理宏定义命令,它的具体作用,就是方便程序段的定义和修改。举个例子吧,如果程序编写代码很长,而且基本上裏面的同一个常量N就占了100个的话,如果说你要对常量N的值进行修改的话,你没有这个代码的话你要一个个改,有这个代码你就可以改一个其它所有都改了,有点像word里的“替换”命令 void main() int i,aN=2,5,8,10,15,21; for(i=0; iN; i+) if(a
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1