C语言总复习题一 一、选择题
1.一个C语言程序是由()组成的。
A一个主程序和若干子程序 B函数 C 若干过程 D若干子程序
2.若x,I,j和K都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为(). A 4 B 16 C 32 D 52
3.若已定义 int a[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0<=i<=9,则对a数组元素不正确的引用是()。
A a[p-a] B *(&a[i]) C p[i] D a[10] 4.四个选项中,均是C语言关键字的选项是()
A auto enum include B switch,typedef,continue C signed union scanf D if struct type 5.下面四个选项中,均是不正确的八进制数或十六进制数的选项是()
A 016 0x8f B oabc 017 C 010 -0x11 D 0a12,7ff,-123 6.一下程序的运行结果是() #include stdio.h; main()
{int a,b,d=241; a=d/100%9; b=(-1)&&(-1);
Printf(\}
A 6,1 B 2,1 C 6,0 D 2,0
7.构成C语言程序的基本单位是() A 过程 B 函数 C 语句 D 命令
8.为了避免在嵌套的条件语句if-else中产生二义性,c语言规定ELSE子句总是与()配对。 A 缩排位置相同的if B 其之前最近的if C 之后最近的if D 同一行上的if 9.下面能正确进行字符串赋值操作的是();
A char s [5] = {“ABCDE”};B char s [5] = {?A?,?B?,?C?,?D?,?E?}; C char *s;s=\D char *s; char a ; scanf(“%s”,&s);
10.在16位IBM-PC机上使用C语言,若有如下定义 Struct data
{int i;char ch;double f; }b;
则结构体变量b占用内存的字节数是() A 1 B 2 C 7 D 11 11.已知字母A的ASCII码为进制数65,且c2为字符型,则执行语句c2='A'+'6'-'3';后,c2中的值为 ( )
A D B 68 C 不确定的值 D C
12.在C语言中,char型数据在内存中的存储形式是() A 补码 B 反码C 原码D ASCII码 13.若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”,则以下不能满足要求的是 ()
A A%2==1 B !(A%2==0) C !(A%2) D A%2 14.以下程序的运行结果是() 1 / 11
Main() {int m=6;
If(m++>6) printf(\Else printf(\——m);} A 4 B 5 C 7 D 6 15.设有如下定义: Int (*ptr)();则以下叙述中正确的是()
A ptr是指向一维数组的指针变量 B ptr 是指向int 型数据的指针变量C ptr是指向函数的指针变量,该函数返回一个int型数据 D ptr是一个函数名,该函数的返回值是指向int型数据的指针
16.已定义:int i,*p=&i;以下表达式不正确的是()
A &*pi B *&pi C&*i D*&i
17.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是() A float型 B int 型 C long 型 D double型
18.对两个数组a和b进行如下初始化char a[]=\则以下叙述正确的是()
Aa与b 数组完全相同B a与b长度相同C a和b中都存放字符串D a数组比b数组长度长
19.对以下的程序段:for(t=1;t<=100;t++) {scanf(\If(x Printf(\下面叙述正确的是() A当x<0时整个循环结束 B x>=0时什么也不输出C printf函数永远也不执行D最多允许输出100个非负整数 20.判断char型变量ch是否为大写字母的正确表达式是( ) A ?A?<=ch<=?Z?B ( ch>=?A?)&(ch<=?z?) C ( ch>=’A’)&&(ch<=’z’) D (?A?<= ch)AND(?z? >= ch) 21.以下描述中正确的是() A由于do_while循环中循环体语句只能是一条可执行语句,故循环体内不能使用复合语句 B 在while循环体中,循环体至少要执行一次C在do-while循环体中,循环体至少无条件的执行一次D do_while循环由do开始,用while(表达式)后面不能写分 22.若i为整型变量,则以下循环执次数是() For(i=2;i!=0;) printf(\——); A 无限次B 0次C 1次D 2次 23.若有说明 :int a[3][4];则对a数组元素的正确引用是() Aa[2][4] B a[1,3] C a[1+1] [0] D a(2)(1) 24.以 下程序的输出结果是() #include {int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}, *p[4], i; For(i=0;i<4;i++;) P[i]=&a[i*3]; 2 / 11 Printf(\ A 输出项不合法 B 6 C 8 D 12 25.下面函数调用语句含有实参的个数为() Y=func (a,b, max(d,e)); A 5 B 2 C 3 D 4 填空题 1.结构化设计的三种基本结构 顺序结构,选择结构,循环结构 2.设int x=9,y=8;表达式x==y+1的结果是 1 3.宏定义必须写在函数之外,其作用域为从宏定义命令起到源程序结束,如果终止其作用域,可使用 #undef 命令。 4.定义int x,y;执行y=(x=1,++x,x+2);后,y的值是 4. 5.已知int x=10,y=20,z=30;if (x>y) z=x;x=y;y=z;执行后x,y,z的值是20 30 30 6.#define ADD(x) x+x Main() {int m=1,n=2,k=3; int sum=ADD(m+n)*k; printf(\上面程序的运行结果是 sum=10 。 判断题 1.在C语言中,除了main函数外,,任何函数都可以递归调用。(T) 2.语句scanf(\);是非法的。(T) 3.C语言程序中的变量按作用域范围可分为两种,即局部变量和全局变量。(T) 4.运算符的优先级顺序依次为(由高到低) :!(非)、关系运算符、算数运算符、&&和||、赋值运算符(F) 5.Break,return所起的作用是一样的,都是跳出循环。(F) 6.二维数组a[3][4]可分解为三个一维数组,其数组名分别为:a[0]、a[1]、a[2],这三个一维数组都有4个元素(T) 7.在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串。(T) 8.包含命令中的文件名可以用双引号括起来,也可以用括号括起来。如:#include \、#include (math.h)(F) 9.函数的参数不仅可以是整型,实型,字符型等数据,还可以使指针类型。它的作用是将一个变量的地址传送到另一个函数中(T) 10.C程序中有调用关系的所有函数必须放在同一个源程序文件中。(F) 阅读程序题 1.#include Fun(int x,int y,int *cp,int*dp) {*cp=x+y; *dp=x-y;} Main(){int a,b,c,d; a=30;b=50; fun(a,b,&c,&d); printf(\ return 0;} 运行结果 80,—20 2.main() 3 / 11 {int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,13}; int (*ptr)[4]; int sun=0,i.j; ptr=a; For (i=0;i<3;i++) for(j=0;j<2;j++) sum+=*(*(ptr+1)+j); printf(\ 运行结果 60 (1+3+9+11+17+19) 3.#include {int i,x,y; i=x=y=0; do{++i; if(i%2!=0) {x=x+i;i++;} y=y+i++;} While(i<=7); printf(\ 运行结果 x=10,y=20 4.main() {char ch[2][5]={\Int i,j,s=0; for(i=0;i<2;i++ ) p[i]=ch[i]; For(i=0;i<2;i++) for(j=0;p[i][j]>'\\0' ;j+=2) s=10*s+p[i][j]—'0'; Printf(\ 运行结果 6385 5.5.#include {char c; while((c=getchar())!='?' putchar(++c);} 当程序运行时,从键盘键入ringht? 程序填充题 1.求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),。几个数相加由键盘控制 #include int a,n,count=1; long int sn=0,tn=0; printf(\ a and n\\n\Scanf(\ printf(\While(count<=n){tn=tn+a; sn=sn+tn; 【1】 a=a*10; ++count;} Printf(\ 答案 【1】 a=a*10; 2.已定义一个含有30个元素的数组s,函数fun1的功能是按顺序分别赋予各元素从2开始 4 / 11 的偶数,函数fun2则按顺序每五个元素求一个平均值,并将该值存放在数组w中。 Float s[30],w[6]; fun1(float s[]) {int k,i; for(k=2,i=0;i<30;i++) {【2】 s[i]=k 或是s[i]=(i+1)*2 } } fun2(float s[],float w[]) {float sum=0.0; int k,i; for(k=0,i=0;i<30;i++) {sum+=s[i]; 【3】if((i+1)%5==0)或if((i+1)/5*5==i+1; ) {w[k]=sum/5; 【4】 sum=0 或sum=0.0; K++;}} Main() {int i; fun1(s); 【5】 fun2(s,w); For (i=0;i<30;i++) {if(i%5==0) printf(\); printf(\printf(\); for(i=0:i<6;i++) printf(\解题思路:先看题干在看主函数,再看调用函数 C语言复习二 1.一个C语言程序至少包含一个(main)函数。 A.printf B.scanf C.main D.自定义 2.一个完整的C程序包含一个或多个函数。对于函数main(),不正确的说法是(有没有它都行) A.它是程序开始运行的第一个被调用的函数 B.没有它程序就无法运行 C.它是唯一不可缺少的函数 D.有没有它都行 3.C语言中,复合语句的构成是将一系列语句置于(花括号“{}”之间) A.begin和end之间 B.方括号“[]”之间 C.圆括号“()”之间 D.花括号“{}”之间 4.不合法的C语言整型常量是(—0128) A.-0128 B.0x35 C.123L D.30000 5.以下程序段的输出结果是(1 -2)int x=3; do{ print(\—=2);}while(!((——x)); while(x) x!=0 whlie(!x)x= =0 A.1 B.3 0 C.1 -2 D.死循环 6.设x,y均为整型常量,且x=10,y=3,则语句printf(\——,——y);的输出结果是(10,2) A.10,3 B.9,3 C.9,2 D.10,2 7.以下程序的输出结果是(0650) Main() {int a[4][4]={{1,3,5},{2,4,6},{3,5,7}}; Printf(\ 5 / 11