C语言笔试题.wps

更新时间:2023-03-08 05:27:20 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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 Main()

{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 Main()

{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 Main()

{char c; while((c=getchar())!='?' putchar(++c);}

当程序运行时,从键盘键入ringht? (代表回车),则 运行结果 sjhiu(问号不会被输出)

程序填充题

1.求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),。几个数相加由键盘控制 #include Main(){

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

A.0650 B.1470 C.5430 D.输出值不定

8.以下程序的输出结果是(5,7) int a,b;

void fun(){a=100;b=200} Main()

{int a=5,b=7; fun() printf(\ A.100,200 B.5,7 C.200,100

D.7,5

9.,执行下面程序后,a的值为(8)(考点全局变量和局部变量) Main() {int a,b;

for(a=1,b=1;a<=100;a++) {if(b>=20) break;

if(b%3==1) {b+=3; continue} b—=5;}} A.7 B.8 C.9 D.10

10.若有以下说明: int a[3][5]={{1,2},{3,4},{5,6}};则数值为6的表达式是( a[2][1] ) A.a[2] B.a[2][1] C.a[3][3] D.a[3][5] 11.两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是(7和5) Main() {int x;

scanf(\

if(x++>5) printf(\Else printf(\——);} A.7和5 B.6和3 C.7和4 D.6和4 12.以下程序的输出结果是(004) Main() {int a=-1,b=4,k; K=(++a<0)&&!(b——<=0);

Printf (\(短路) A.104 B.103 C.003

D.004

13下述程序运行后输出结果是(3)

Main() {int n[3],i,j,k; 000,i=0 j:0:1;1:2; i=1 j:0:3;1:3; For(i=0;i<3;i++) n[i]=0; k=2; For (i=0;i

For(j=0;j

Main() {int a=10,k=2,m=1;

a/=SQR(k+m)/SQR(k+m);(a=a/(SQR(k+m)/SQR(k+m))) Printf(\ A.10 B.1 C.9 D.0 15.下列运算符中优先级最高的是(+) A.> B.+ C.&& D.!= 16.一下不正确的语句(if(x=y)&&(x!=0) x+=y) 6 / 11

A.if(x>y);

B.if (x=y)&&(x!=0) x+=y;

C.if(x!=y) scanf(“%d”,&x); else scanf(“%d”,&y); D.if(x<y) {x++;y++;}

17.在c语言中,一位数组的定义的方式为:类型说明符 数组名([常量表达式]) A.[常量表达式] B.[整形表达式] C[整型常量]或[整型表达式] D.[整型常量] 18.定会以如下数组和变量 int k;

inta[3][3]={1,2,3,4,5,6,7,8,9};

则下列语句的输出结果是( 7 5 3 ) for(k=0;k<3;k++) prinft(\ A.3 6 9 B.7 5 3 C.9 6 3 D.3 5 7

19.设有:int a=1 ,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后的n值为(2)

A.1

B.2

C.0

D.4

20.下面程序段运行的结果是char str[]=”ABC”,*p=str;printf(“%d\\n”,*(p+2));(字符'C'的ASCII码)

char str[] ='ABC',*p=str; prinft(\; A.0 B.字符‘C’的ASSCII码 C.字符‘C’的地址 D.字符‘C’ 21.若i为整型变量,则下列循环执行的次数是( 3次) for (i=3;i!=0)printf(\ A.0次 B.1次 C.2次 D.3次

22.下面程序有错得行是(5) 1 main() 2 {

3 int a[3]={1} ; 4 int i ;

5 scanf(\是地址 6 for(i=1;i<3;i++) a[0]=a[0]+a[i]; 7 prinf(\ 8 } A.3 B.6 C.7 D.5

23.下面的程序的运行结果是 (*#*#*#$)选项中无正确答案 #include main() { int i ;

for(i=1 ;i<5;i++){ if(i%2)

printf(\; else

continute ;//else 控制到这句; printf(\;} printf(\;} 7 / 11

A.*#*#$ B.#*#*#*$ C.*#*#$ D.#*#*$ 24.下面的程序的运行结果是 (k=4) #include main(){ int k = 0; char c='A'

do{ switch(c++)

{case 'A' :k++;break ; case 'B' :k-- ;

case 'C' :k+=2;break ;

case 'D' :k=k%2;continue ; case 'E' :k=k*10;break ; default :k=k/3 } k++;} while(c<'G')

printf(\ A.k=3 B.k=4 C.k=2 D.k=0 25.下程序不是死循环的是(.int k=0 ; do(++k) while(k>=0)) A. int i =100; while(1){

i=i0+1;if(i>100) break ;

A.int i=100; while(1) {i=i0+1;if (i>100 break)} B.for(;;);

C.int k=0; do{++k;} while (k>=0;) D.int s=36; while (s);--s

填空题

1.在内存中存储“A”要占用 (2)个字节,存储‘A’要占用(1)个字节。 2.在C语言中,长整型数据和(float)类型的数据占用相同的字节数。 3.表达式‘A'+4-0.5运算结果是(68.5),其数据类型是(double) 4.一个函数自己调用自己,称作(递归调用)。

5.在程序中使用库函数,一般应在文件开头使用(#include)命令。

6.定义语句“char p[6]=\”则p[3]代表的字符是(‘4’)。P[5]代表的字符是‘\\0‘.

7.若有如下定义:#define F(N) 2*N,则表达式F(2+3)的值是(7)。(2*2+3)

判断题

1.C语言中每个语句必须以“;”分号结束。(T) 2.C语言中所有函数的执行都是从主函数开始的。(T)

3.语句printf(\的输出结果为51。 (T)0的ASCII是48 4.常量—1按无符号整型输出时,显示65535。 (T)

5.结构体类型本身不占用内存空间,结构体变量占用内存空间。 (T) 6.C语言函数的返回值只能是数值,不能是地址。 (F) 7.X=(i=4,j=16,k=32); x的结果是32。 (T) 8 / 11

8.变量一旦被说明,则该变量被分配存储空间。 (T)

9.C语言程序通过编译、运行后,其结果都是正确的。 (F) 10.C语言中所有变量都不能存放地址。 (F) 四.阅读程序图 1.

#include Main(){

int a ,s ,n,count ;

a=2;s=0;n=1;count = 1;

While(count<=7) {n=n*a;s=s+n;++count;}(n=2的n 次方,等比数列求和) Prinft(\}

【】运行结果: S = 254

2.【程序】 Main(){

Int a[2][3] = { {1,2,3} ,{4,5,6}} int m,*ptr ; ptr=&a[0][0];

m=(*ptr)*((*ptr+2))*((*ptr+4)); printf(\

【运行结果】15 3 . 【程序】

voidfan(int *a ,int *b ) {k=a;a=b; b=k;} main(){

int a= 3, b=6,*x=&a , *y=&b ; fun(x,y);

printf(\ 【运行结果】 3 ,6 4【程序】 #include Main(){

int a, b ,m ,n ; m=n=1 ;

scanf(\ do{ if(a>0)

{m=2*n ; b++ ;}} while(a==b)

printf(\ 程序运行时请输入 4 2

【程序运行结果】 m = 2,n=1 5【程序】(拿x 的元素上y里去查,找不到给c ) #include

int f( int a[] ,int b[] ,int n , int c[]){ 9 / 11

int i ,j,k =0 ,t ; for(i=0 ;i

for( t =1 ; ,j = 0;j

{ t = 0 ; break ;} if(t) c[k++]=a[i] } return k ;} void main(){

int x[] = {7,2,3,6,5,4,1}, y[] ={5,10,7,9,8,6}, z[10] ,w ,j ; w=f(x,7,y,6,z); for(j=0;j

【程序运行结果】2341

五 . 程序填充题目

1.输出100到1000之间的个位数字之和能被15整除的所有数,输出时候没事每10个数占一行 main(){

int m, n , k,i=0;

for(m=100;m<1000 ;m++) {k =0 ; n =m ;

do{ k=k+_______【1】

n=n/10;}(先取低端的数) ____________【2】 if(k==0){ printf(\ i++;

printf(\;}}

【1】n或 n-n/10*10或 n-10*(n/10) 【2】while(n>0)或while(0

2.功能:有n个整数 ,使其前面各数顺寻向后移动m个位置,最后m个数变成最前面的m个数

main(){

int number[20],m,n,i;

printf(\ scanf( \ prinf(\ scanf(\ for(i=0;i

scanf(\

scanf(\ 10 / 11

move(______________【3】number , n, m);

for(i=0;i

prinf(\ prinf(\ move(array ,n ,m) int n ,m ,array[20];{ int *p ,array_end ;

array_end=*(______________)【4】; for(p=array+n-1;p>array;p--) *p=*(________)【5】 *array=array_end; m--

if(m>0) move(array,n,m);} 【3】number ,n ,m 【4】array+n- 1 【5】p-1

11 / 11

本文来源:https://www.bwwdw.com/article/xyo.html

Top