admin管理员组

文章数量:1530845

2023年12月26日发(作者:)

“C语言程序设计”期末复习题

一.单项选择题

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

A)表达式与语句 B)若干文件 C)函数 D)main函数

2.下列为字符常量的是________。

A)HE B)"I" C)'Z' D)She

3.若变量c为char类型,能正确判断c为小写字母的表达式是________。

A)'a'<=c<= 'z' B)(c>= 'a')||(c<= 'z')

C) ('a'<=c)and ('z'>=c) D)(c>='a')&&(c<='z')

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)float add(int x, int y) ; B)int add(int x;int y) ;

C)char add( x,y) ; D)int add(char x[ ] [ ]) ;

7.有程序段如下,不能表示为地址的是________。

int x=2,*p;

p=&x;

x=x+1;

A)&x B)p C)&p D)&(x+1)

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

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

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

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

int x,*p;

A)5.0%2 B)x+1=5 C)&p D)&(x+1)

10.下列错误的语句是________。

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);

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

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

C)顺序结构、循环结构、分支结构 D)循环结构、分支结构

12.有以下定义和赋值语句,能够正确表示a[1][2]的表达式是 。

int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};

int (*p)[3]= a;

A)*((*p+1)+2) B)(*p+1)+2 C)*(*(p+5)) D)*(*(p+1)+2)

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

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

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

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

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

14.以下结构体类型变量的定义错误的是________。

A)#define STU struct student

STU {float height; int age; }std1;

B)struct student {float height; int age; }std1;

C)struct {float height; int age; }std1;

D)struct {float height; int age; } student;

struct student std1;

15.以下说法错误的是________。

A)do~while语句与while语句的区别仅是关键词“while”出现的位置不同

B)while语句是先进行循环条件判断,后执行循环体的

C)do~while是先执行循环体,后进行循环条件判断

D)while、do~while和for语句的循环体都可以是空语句

16.C语言程序是从main函数开始执行,这个函数写在________。

A)程序文件开始 B)它所调用函数的前面

C)程序文件最后 D)程序文件任何位置

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

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

C)固定的 D)任意的

VC int 32

TC int 16

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

A)„‟ B)„011‟ C)„‟‟ D)„xaa‟

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

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

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

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

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

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

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

21.以下叙述错误的是________。

A)C语言本身没有输入输出语句

B)一个可执行的C源程序必须包含一个main函数

C)C程序中,注释说明只能位于一条语句的后面

D)C程序的基本组成单位是函数

22.设有以下程序片段,请问执行后的输出结果是________。

char ch='A';

ch=(ch>='a' && ch<='z')?ch:ch-'A'+'a';

printf("%c" , ch);

A)A B)a C)Z D)z

23.int (*ptr) ();说明了________。

A)ptr是指向一维数组的指针变量

B)ptr是指向int型数据的指针变量

C)ptr是指向函数的指针,该函数返回一个int型数据

D)ptr是一个函数名,该函数的返回值是指向int型数据的指针

24.以下有关宏替换的叙述错误的是________。

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

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

25.以下对二维数组a的声明正确的是________。

A)int a [3][ ]; B)int a (3,4); C)int a [1][4]; D)int a

(3)(4);

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

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

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

27.能表示x为偶数的表达式是________。

A)x %2==0 B)x%2==1 C)x%2 D)x%2!=0

28.C语言中运算对象必须是整型的运算符是________。

A) % B) / C)= D) <=

29.下列数组定义正确的是________。

A)int a[5],b[2,3]; B)char no(30);

C)char x[]; D)int x[5]={1,2,3};

30.变量定义如下:

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);

31.下列函数头中形参说明错误的是________。

A)float average(float array[9], n) B)float average(float

*array ,int n)

B)float average(float array[ ] ,int n) C)float average(float

array ,int n)

32.函数形参与实参之间的传递是“值传递”,以下叙述正确的是________。

A)实参和与其对应的形参共用一个存储单元

B)实参和与其对应的形参各占用独立的存储单元

C)当实参和与其对应的形参同名时才共用一个存储单元

D)形参是形式的,不占用存储单元

33.以下if语句错误的是________。

A)if (x

B)if (x) x+=y;

C)if (x

D)if (x!=y) scanf (" %d",&x) ; else x++;

34.若有定义:int (*p)[3]; 则p 。

A)是一个指向整型变量的指针

B)是一个指针数组名

C)是一个指针,它指向一个含有3个整型元素的一维数组

D)定义不合法

35.t为int类型,进入下面的循环之前t的值为0,以下叙述正确的是________。

while( t=l )

{ …… }

A)循环控制表达式的值为0 B)循环控制表达式的值为1

C)循环控制表达式不合法 D)以上说法都不对

36.以下说法正确的是________。

A)C语言源程序无论包含了多少函数,总是从main函数开始执行。

B)main是由C语言提供的,并不需要用户自己编写。

C)调用C语言标准库函数时,程序中要用到include命令,它也是C语言的一种语句。

D)在C语言中,要调用的函数必须在main函数中定义。

37.若0<=i<10,则下列________是对数组元素的错误引用。

int a[ ]={1,2,3,4,5,6,7,8,9,0},*p, i;

p=a;

A)*(a+ i) B)a[p-a] C)p+ i D)*(&a[i])

38.下列表达式的值为1.5的是________。

int x;

float y;

A)x=3/2.0 B)x=3/2 C) y=3/2 1.0 D)y=3/2.0

39.下列语句实现的功能与其printf语句中所表达的含义相符的是________。

A) int a,b,c;

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

if(a=b=c) printf("这是一个等边三角形n");

B) int a,b,c;

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

if(a+b>c&&a+c>b&& c+b>a)printf("这三条边能组成一个三角形n");

C) int a,b,c;

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

if(a==b&&b==c) printf("这是一个等边三角形n");

D) int a,b,c;

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

if(a==b||b==c) printf("这是一个等腰三角形n")

40.下列关于#include命令的叙述中,错误的是____________。

A)#include命令中,文件名可以用双引号或尖括号括起来

B)一个被包含文件中又可以包含另一个被包含文件

C)一个#include命令中可以指定多个被包含文件

D)一个#include命令中只能指定一个被包含文件

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

a=-2L;

printf (“%dn”,a);

A)赋值不合法 B) 输出值为-2 C)输出为不确定值 D)输出值为2

42.若有说明语句: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

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

int k=-1;

printf(“%d,%un”,k,k);

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

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

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

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

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

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

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

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

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

变量说明: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);

47.若变量已正确定义,与语句 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;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

C)按缩进位置相同的if配套 D)与最近的且尚未配对的if 配套

56.以下有关switch语句的正确说法是________。

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

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

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

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

57.若有以下定义:float x; int a,b; 则错误的switch语句是________。

A)switch(x) B)switch(a)

{case 1.0:printf("*n"); {case 1:printf("*n");

case 2.0:printf("*n"); } case 2:printf("*n"); }

C)switch(a+b) D)switch(a+b);

{case 1:printf("*n"); {case 1:printf("*n");

case 1+2:printf("*n"); } case 2:printf("*n"); }

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

#include

void main()

{

int a;

while(a=5)

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

}

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

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

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

int sum(double x, double y)

{

double s;

s=x+y;

return s;

}

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

60.以下叙述不正确的是________。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

A)extern float x; B)float x;

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

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

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

C)在程序运行时进行的 D)和C程序中的其它语句同时进行的

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

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

"abcde"

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

'0'}

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

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

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

二.程序阅读题

1.阅读以下程序,若输入60<回车>,写出程序运行结果。

#include

void main()

{ int x;

scanf("%d ",&x);

if (x>=60)

printf("pass");

else

printf("fail");

}

2.阅读以下程序,若输入5<回车>,写出程序运行结果。#include

int main( )

{ int i, n;

double fact;

scanf("%d", &n);

fact=1;

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

fact*=i;

printf("%.0fn", fact);

}

3.阅读以下程序,若输入a<回车>,写出程序运行结果。#include

int main( )

{

char ch;

ch=getchar();

if(ch>='a'&&ch<='z')

ch=ch-„a‟+‟A‟;

else if(ch>='A'&&ch<='A')

ch=ch-'A' + 'a';

putchar(ch);

}

4.阅读以下程序,若输入2 3<回车>,写出程序运行结果。#include

int main( )

{ int i, n;

double x, mypow;

scanf("%lf%d", &x, &n);

mypow=1;

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

mypow*=x;

printf("%.2fn", mypow);

}

5.写出下面程序的运行结果。

#include

func(int a[][3])

{ int i,j,sum=0;

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

for(j=0;j<3;j++) if(i==j) sum=sum+a[i][j];

return(sum);

}

void main()

{ int a[3][3]={1,1,1,2,2,2,3,3,3},sum;

sum=func(a);

printf("sum=%dn",sum);

}

6.写出以下程序的运行结果。

#include

int fun(char *s)

{

char *p=s;

while(*p!='0') p++;

return(p-s);

}

void main( )

{ printf("%dn ",fun("hello world"));

}

7.阅读以下程序,若输入1 9 3 4 0<回车>,写出程序运行结果。#include

int main( )

{ int x, sum;

scanf("%d", &x);

sum=0;

while(x>0)

{ if(x%2==0) sum+=x;

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

printf("%dn", sum);

}

8.阅读以下程序,若输入4 5 7 9 5<回车>,写出程序运行结果。

#include

int main( )

{ int i, index, n;

int a[10];

scanf("%d", &n);

for(i=0; i

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

index=0;

for(i=1;i

{ if(a[i]

printf("min=%d,index=%dn", a[index],index);

}

9.写出以下程序的运行结果。

#include

void main()

{

int num=0;

while (num<=2) { printf("%d ",num); num++;}

}

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

#include

void increment()

{

static int x=0;

x+=1;

printf("%d",x);

}

void main()

{

increment();

increment();

increment();

}

11.阅读以下程序,若输入10<回车>,写出程序运行结果。

#include "stdio.h"

int main( )

{int n;

void dectobin(int n);

scanf("%d",&n);

dectobin(n);

printf("n"); }

void dectobin(int n)

{

int a[16]={0};

int i=0;

while(n!=0)

{ a[i]=n%2; i++;

n/=2;

}

i=i-1;

while(i>=0)

{ printf("%d",a[i]);

i--; }

}

12.写出以下程序的运行结果。

#include

int x;

void cude()

{ x=x*x*x; }

void main()

{ x=5;

cude();

printf("%dn",x);

}

13.写出以下程序的运行结果。

#include

void main()

{

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

int y=0,x,*p;

p=&a[0];

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

printf("%dn",y);

}

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

#include

int add(int a,int b)

{ int c;

c=a+b;

return c;

}

void print(int t)

{ printf("z=%dn",t); }

void main()

{ int x,y,z;

void print(int t);

x=1;y=2;

z=add(x,y);

print(z);

}

15.写出以下程序的运行结果。

#include

struct mine { int qa, qb, qc; };

void main()

{

struct mine s[2] = {{1,2,3},{4,5,6}};

int answer;

answer = s[0].qa * s[1].qb;

printf("%d n", answer);

}

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

#include

void main()

{ int y=5;

for( ; y>0; y--)

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

printf("%d", y);

}

}

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

#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=%dn", s ,count);

}

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

#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]);

}

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

#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:%dnSpace:%dnNumber:%dnOther:%dn",c,s,n,other);

}

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

#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");

}

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

#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);

}

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

#include

int f(int x,int y);

void main()

{

int a=1,b=2,c;

c=f(a,b);

printf("%dn",c);

}

int f(int x, int y)

{

int z;

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

return(z);

}

23.写出以下程序输出结果。

#include

void main()

{

int *p;

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

p=a;

for (;p

printf("%d ",*p);

printf("n");

}

24.阅读程序,写出程序的输出结果。

#include

void main( )

{

static char a[ ]="street",b[ ]="string";

char *ptr1=a, *ptr2=b;

int k;

for (k=0; k<7; k++)

if (*(ptr1+k)==*(ptr2+k))

printf("%c",*(ptr1+k));

}

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

void fun1( char *s1, const char *s2 )

{

while ( *s1 != '0' )

++s1;

for ( ; *s1 = *s2; s1++, s2++ )

;

}

本文标签: 程序函数语句数组变量