文档库 最新最全的文档下载
当前位置:文档库 › C语言复习题1

C语言复习题1

C语言复习题1
C语言复习题1

C程序设计复习题1

一、选择题

1.组成C程序的基本单位是________。

A)表达式与语句B)若干文件C)函数D)main函数2.C程序中能直接让机器执行的文件是____C____。

A)编辑后的.c源文件

B)通过编译的.obj文件

C)通过连接的.exe文件

D)正在编辑的源文件存盘为后缀为.exe的文件

3.有关以下函数的哪些说法是正确的________。

int add(int x;int y)

{ z=x+y;

return z; }

A)此函数能单独运行

B)此函数存在语法错误

C)此函数通过main函数能调用

D)此函数没有语法错误

4.在C语言中,正确的int类型的常数是________。

A)-2U B)059 C)3a D)0xAF 5.下列变量定义正确的是________。

A)int x_1 ; y;

B)int x=y=5 ;

C)int for=4;

D)int printf=2,x_y=2;

6.下列数据中,为字符的是________。

A)'AB' B)"A" C)How D)'A'+2 7.有程序段如下,不能表示为地址的是________。

int x=2,*p;

p=&x;

x=x+1;

A)&x B)p C)&p D)x

8.下列表达式没有错误的是________。

int x,*p;

A)5.0%2 B)x+1=5 C)&x D)&(x+1)9.下列错误的语句是________。

A)int k,*p=&k; scanf(“%d”,&k);

B)int k,*p=&k; scanf(“%d”,p);

C)int k,*p; *p=&k; scanf(“%d”,p);

D)int k,*p ; p=&k; scanf(“%d”,p);

10.任何复杂的程序,都是由________构成的。

A)分支结构、顺序结构、过程结构B)循环结构、分支结构、过程结构C)顺序结构、循环结构、分支结构D)循环结构、分支结构

11.以下说法中正确的是________。

A)C程序总是从第一个定义的函数开始执行

B)在C程序中,要调用的函数必须在main函数中定义

C)C程序总是从main函数开始执行的

D)C程序中的main函数必须放在程序的开始部分

12.在C语言类型说明中,int、char、short等类型的长度是__B______。

A)由用户自己定义的B)与机器字长有关的

C)固定的D)任意的

13.以下字符中,不正确的C语言转义字符分别是________。

A)‘\\’B)‘011’C)‘\’’D)‘\xaa’

14.以下选项中,合法的C语言关键字是________。

A)integer B)Char C)short D)Long

15.若一个外部变量的定义形式为static int x ; 其中static的作用是___D_____。

A)将变量存放在静态存储区,使x的值可以永久保留

B)使变量x可以由系统自动初始化

C)使x只能在本文件内引用

D)使x的值可以永久保留

16.若a为整型变量,则以下语句________。

a=-2;

printf (“%d\n”,a);

A)赋值不合法B)输出值为-2C)输出为不确定值D)输出值为2 17.若有说明语句:int y[][4]={0,0,0,0,0,0}; 则正确的叙述是________。

A)数组y的每个元素都可得到初值0

B)二维数组y的行数为1

C)该说明等价于int y[0][4]={0};

D)有元素y[0][0]至y[0][5]可得到初值,其余元素均得不到初值0

18.若short int 类型数据占两个字节,则下列语句的输出为___D_____。

int k=-1;

printf(“%d,%u\n”,k,k); (%u 表示以无符号数输出,考察二进制知识)

A)-1,-1 B)-1,32767 C)-1,32768 D)-1,65535

19.已知:char a; int b; float c; double d; 执行语句c=a+b+c+d;后,变量c的数据类型是___D_____。

A)int B)char C)double D)float

20.假设定义变量如下:

int x;

float y;

以下输入语句中________是正确的。

A)scanf(“%f%f”,&y,&x); B)scanf(“%f%d”, y, x);

C)scanf(“%f%d”,&y,&x);D)scanf(“%5.2f%2d”,&y,&x);

21.若有以下变量说明和数据的输入方式,则正确的输入语句为________。

变量说明:float x1,x2;

数据的输入方式:4.52<回车>

3.5<回车>

A)scanf(“%f,%f”,&x1,&x2); B)scanf(“%f%f”,&x1,&x2);

C)scanf(“%3.2f,%2.1f”,&x1,&x2); D)scanf(“%3.2f%2.1f”,&x1,&x2); 22.若变量已正确定义,与语句if(a>b)k=0;else k=1;等效的是________。

A)k=(a>b)?1:0? B)k=a>b;

C)k=a<=b;D)a<=b?0:1;

23.若有定义:int x,*pb;则正确的赋值表达式是________。

A)pb=&x B)pb=x C)*pb=&x D)*pb=*x

24.已知:int a,*p=&a; 则为了得到变量a的值,下列错误的表达式为________。

A)p[0] B)*p C)&*a D)*&a

25.在C语言中,引用数组元素时,其数组下标的数据类型允许是________。

A)整型常量B)整型表达式

C)整型常量或整型表达式D)任何类型的表达式

26.若有定义:int b[5];则以下对b 数组元素的正确引用是________。

A)*&b[5] B)b+2

C)*(*(b+2))D)*(b+2)

27.设有定义语句“char s[]=”123”;”,则表达式“s[3]”的值是________。

A)’1’B)’3’C)’\0’D)语法出错

28.语句if (!i ) i++; 中的条件表达式!i 等价于___A_____。

A)i==0 B)i!=1 C)i!=0 D)-i

29.设有int x,y; 以下语句判断x和y是否相等,正确的说法是该语句________。

if (x=y) printf(" x is equal to y.");

A)语法错B)不能判断x和y是否相等

C)编译出错D)能判断x和y是否相等

30.C语言中规定,if语句的嵌套结构中,else总是与________配对。

A)与最近的if 配套B)与第一个if 配套

C)按缩进位置相同的if配套D)与最近的且尚未配对的if 配套31.以下有关switch语句的正确说法是________。

A)break语句是语句中必须的一部分

B)在switch 语句中可以根据需要使用或不使用break语句

C)break语句在switch 语句中不可以使用

D)在switch 语句中的每一个case都要用break语句

33.当执行以下程序时,________。

#include

void main()

{

int a;

while(a=5)

printf("%d ",a--);

}

A)循环体将执行5次B)循环体将执行0次

C)循环体将执行无限次D)系统会当机。

34.以下函数的类型是________。

int sum(double x, double y)

{

double s;

s=x+y;

return s;

}

A)字符型B)不确定C)整型D)实型

35.以下叙述不正确的是___A_____。

A)一个C源程序文件必须包含一个main( )函数

B)一个C源程序文件可由一个函数组成

C)一个C源程序文件是一个编译单位

D)一个C源程序文件可由多个函数组成

注意:若要执行则必须包含一个main()函数

36.若用数组名作为函数调用时的参数,则实际上传递给形参的是________。

A)数组元素的个数B)数组的第一个元素值

C)数组中全部元素的值D)数组首地址

37.一个共用体变量所占内存是________。

A)该共用体第一个成员所占的内存量

B)该共用体最后一个成员所占的内存量

C)该共用体占内存最多成员所占的内存量

D)该共用体所有成员所需内存量的总和

38.C语言中结构体类型变量在程序执行期间________。

A)所有成员一直驻留在内存中B)只有一个成员驻留在内存中

C)部分成员驻留在内存中D)没有成员驻留在内存中

39.简单变量做实参时,实参与其对应的形参之间的数据传递方式是________。

A)双向值传递方式B)地址传递方式

C)单向值传递方式D)用户指定传递方式

40.C语言允许函数值类型的缺省定义,此时该函数值隐含的类型是________。

A)long 型B)float 型C)double型D)int型

41.以下叙述正确的是________。

A)函数的定义和函数的调用均不可以嵌套

B)函数的定义和函数的调用均可以嵌套

C)函数的定义可以嵌套,但函数的调用均不可以嵌套

D)函数的定义不可以嵌套,但函数的调用均可以嵌套

42.如果在一个函数中的复合语句中定义一个变量,以下正确的叙述是________。

A)该变量在该函数中有效B)该变量只在该复合语句中有效

C)该变量为不合法的变量D)该变量在本程序范围内有效

43.凡是在函数中未指定存储类别的局部变量,其隐含的存储类别是__C___。

A)静态(static)B)外部(extern)

C)自动(auto)D)寄存器(register)

44.若有定义char x[ ]= "12345"; char y[ ]={ '1', '2', '3', '4', '5'};则。

A)x数组与y数组的长度相同B)x数组长度大于y的长度

C)x 数组长度小于y数组长度D)x数组等价与y 数组

45.若在一个C源程序文件中定义了一个允许其他源文件引用的实型外部变量x,则在另一文件中可以使用的引用说明是________。

A)extern float x; B)float x;

C)extern auto float x; D)extern static float x;

46.以下有关宏替换的叙述不正确的是___A_____。

A)宏名必须用大写字母表示B)宏替换不占用运行时间

C)宏名不具有类型D)宏替换只是字符替换

47.C语言的编译系统对宏命令的处理是___B_____。

A)在程序连接时进行的B)在对源程序中的其它语句编译之前进行的C)在程序运行时进行的D)和C程序中的其它语句同时进行的

48.若p1、p2都是整型指针,p1已经指向变量x,要使p2也指向x,__ __是正确的。

A)p2=p1B)p2=**p1 C)p2=&p1 D)p2=*p1

49.下列对字符串的定义中,错误的是___ __ 。

A)char str[5]= "abcde" B)char str[ ]= "abcde"

C)char *str ="abcde" D)char str[ ]={ 'a', 'b', 'c', 'd', 'e', '\0'}

50.已知:int a[8]={0,1,2,3,4,5,6,7},*p=a; 则不能表示数组a中元素的表达式是_____。

A)*p B)a[8]C)*a D)a[p-a]

二.程序阅读题

1.描述以下程序的功能。

#include

void main()

{

int x,y;

printf("Please input x,y:");

scanf("%d%d",&x,&y);

if (x<0) x=-x;

if (y<0) y=-y;

printf("\n%d\n",x+y);

}

2.写出以下程序的输出结果。

#include

void main()

{

int num=0;

while (num++<=2);

printf("%d ",num);

}

3.写出以下程序的输出结果。

#include

void main()

{

int x=10;

do

printf("%d ",x-=9);

while(!(--x));

}

4.写出以下程序的输出结果。

#include

void main()

{ int a[ ]={1,3,5,7,9};

int y=1,x,*p;

p=&a[1];

for(x=0; x<3; x++) y+=*(p+x);

printf("%d\n",y);

}

5.写出以下程序的输出结果。

#include

void main()

{ int y=5;

for( ; y>0; y--)

{ if(y%2==0) continue;

printf("%d", y);

}

}

6.若输入为3 5 9,写出该程序的输出结果。#include

void main(){

int a,b,c,x,y;

printf("input three numbers: ");

scanf("%d%d%d",&a,&b,&c);

if(a>b){

x=a; y=b; }

else{

x=b; y=a; }

if(x

else if(y>c) y=c;

printf("%d,%d",x,y);

}

7.阅读以下程序,写出程序的功能。

#include

void main()

{

int a[10]={2,4,0,-5,10,6,-8,9,6,7};

int i,s=0,count=0;

for(i=0; i<10; i++)

if(a[i]>0) s+=a[i],count++;

else continue;

printf ("s= %d , count=%d\n", s ,count);

}

8.阅读以下函数,写出此函数的功能。

float fun1(float a[],int n)

{

int i=1;

float result=a[0];

for( ; i

if (result>a[i]) result=a[i];

return result;

}

9.阅读以下函数,写出此函数的功能。

void fun(char A[ ],int n)

{

char tmp;

int k;

for (k=0; k

{

tmp=A[k]; A[k]=A[n-k-1]; A[n-k-1]=tmp;

}

}

10.阅读以下程序,写出程序的运行结果。

#include

#define N 6

void main()

{

int a[N]={4,5,8,3,6,1};

int j,t;

for(j=0; j

if(a[j]>a[j+1])

{

t=a[j];

a[j]=a[j+1];

a[j+1]=t;

for(j=0; j

printf("%5d",a[j]);

}

11.阅读以下程序,写出此程序的功能。

#include

void main()

{

char ch;

int c=0,s=0,n=0,other=0;

while ((ch=getchar())!='\n')

{

if ((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')) c++;

else if (ch==' ') s++;

else if (ch>='0'&&ch<='9') n++;

else other++;

}

printf("Char:%d\nSpace:%d\nNumber:%d\nOther:%d\n",c,s,n,other);

}

12.阅读以下程序,写出此程序的功能。

#define N 10

#include

void main()

{

int k,i,p,t,a[N+1];

for (i=1; i<=N; i++)

scanf("%d",&a[i]);

for (k=1; k

{

p=k;

for (i=k+1; i<=N; i++)

if (a[p]

t=a[p];

a[p]=a[k];

a[k]=t;

}

for (i=1; i<=N; i++) printf("%d ",a[i]);

printf("\n");

}

13.下列程序有2个文件组成,写出运行结果。(可以做修改后的13题)/* file 1 */

#include

int x=20;

void func_add(void)

{

y=10+x;

x*=2;

}

void main()

{

extern void func_sub(); /* 声明一个外部函数*/ x+=5;

func_add();

func_sub();

printf( "x=%d; y=%d\n", x, y);

}

/* file 2 */

extern int x; /* 声明一个外部变量*/

void func_sub()

{

x-=5;

}

修改后的13题

#include

int x=20;

int y=20;

void func_add(void)

{

y=10+x;

x*=2;

}

void main()

{

x+=5;

func_add();

func_sub();

printf( "x=%d; y=%d\n", x, y);

}

void func_sub()

{

x-=5;

}

14.阅读下面的程序,写出它的运行结果。

#include

long func(int m)

{

long s;

if (m==1)

s=1;

else s=m+func(m-1);

return(s);

}

void main()

{

long y;

y=func(4);

printf( "%2d",y);

}

15.写出以下函数的功能。

void fun(char str1[ ],char str2[ ])

{ int i=0;

while ((str1[i]=str2[i])!='\0')

i++;

}

16.阅读以下程序,写出此程序的结果。#include

void increment()

{

int x=0;

x+=1;

printf("%d",x);

}

void main()

{

increment();

increment();

increment();

}

17.写出以下程序的运行结果。(不做)#include

void increment()

{

static int x=0;

x+=1;

printf("%d",x);

}

void main()

{

increment();

increment();

increment();

}

18.阅读以下程序,写出此程序的结果。#include

int add(int a,int b)

{

int c;

c=a+b;

return c;

}

void print(int t)

{

printf("z=%d\n",t);

}

void main()

{

int x,y,z;

void print(int t);

x=5,y=10;

z=add(x,y);

print(z);

}

19.阅读以下程序,写出程序运行的结果。#include

int f(int x,int y);

void main()

{

int a=1,b=2,c;

c=f(a,b);

printf("%d\n",c);

}

int f(int x, int y)

{

int z;

z=(x>y)?x:y ;

return(z);

}

相关文档