搜档网
当前位置:搜档网 › C语言期末考试复习题精选

C语言期末考试复习题精选

二、C选择题

1.表达式―(a=4*5, b=a*2), b-a, a+=2‖的值是()。

A.2 B.20 C.22 D.42

2.以下是一个自定义函数的头部,其中正确的是()。

A.int fun(int a[ ], b) B.int fun(int a[ ], int a)

C.int fun(int*a, int b) D.int fun(char a[ ][ ], int b)

3.以下数组声明语句中正确的是()。

A.int n, a[n]; B.int a[ ];

C.int a[2][3]={{l},{2},{3}}; D.int a[ ][3]={{l},{2},{3}};

4.已知在某C语言编译系统中表达式sizeof(int)的值是2,如果希望将常量-70 000正确地保存在一个变量a中,该变量声明语句应当是()。

A.int a; B.long int a; C.unsigned int a; D.unsigned int a;

5.以下声明语句中,用于声明一个行指针变量的是()。

A.int *p(int); B.int *p; C.int (*p)[3]; D.int (*p)(int);

6.在以下程序中,需要在fun函数中声明一个int型的变量,以下选项中()不能用做该变量的名字。

#include

int y;

main( )

{ int a=1;

fun(a);

}

int fun(int x)

{_______; /*int型变量声明语句位置*/

… /*若干执行语句*/

}

A.x B.y C.fabs D.fun

7.如有语句―int x,y=0,z,*p[3]; p[0]=&x; p[1]=&y; p[2]=&z;‖,以下表达式中有语法错误的是()。

A.y++ B.p++ C.*++p[0] D.(*p[0])++

8.设有声明语句―int a[3][3]={1,2,3,4,5,6,7,8,9};‖,以下语句中除()外均能输出a[1][2]的值。

A.printf("%d ",*(*(a+1)+2)) B.printf("%d ",*(&a[2][0]-1));

C.printf("%d ",*(a[1]+2)); D.printf("%d ",*(a+1)[2]);

9.已知有声明语句int x=8,则下列表达式中,值为2的是()。

A.x+=x-=x B.x% = x-2 C.x>8?x=0:x++ D.x/= x + x

10.以下关于函数的叙述中正确的是()。

A.在函数体中可以o直接引用另一个函数中声明为static类别的局部变量的值

B.在函数体中至少必须有一个return语句

C.在函数体中可以定义另一个函数

D.在函数体中可以调用函数自身

11.若有声明语句―int a[10], b[3][3];‖,则以下对数组元素赋值的操作中,不会出现越界访问

的是()。

A.a[-1]=0 B.a[10]=0 C.b[3][0]=0 D.b[0][2]=0

12.若有声明语句―char ch=‘a‘, *pc=&ch;‖,以下语句中有语法错误的是()。

A.(*pc)++; B.ch+= -?a‘ + ?A‘;

C.toupper(ch)=ch; D.ch++;

13.已知有声明语句―int a[5]={1, 2, 3, 4, 5}, *p, i;‖,以下语句中()不能正确输出a数组全部元素的值。

A.for(p=a, i=0;i<5;i++)printf("%d",*(p+i));

B.for(p=a;p

C.for(p=a, i=0;p

D.for(p=a;p

14.已知某程序如下:

float p=1.5;

#define p 2.5

main( )

{printf("%f", p);}

则main函数中标识符p代表的操作数是()。

A.float型变量B.double型变量

C.float型常量D.double型常量

15.已有声明―int S[2][3]‖,以下选项中()正确地引用了数组S中的基本元素。

A.S[1>2][!1] B.S[2][0] C.S[1] D.S

16.逻辑―异或‖运算可描述为―a xor b‖,其中a和b为参加运算的两个操作数,运算结果为当且仅当a、b两个操作数中只有一个为真时才为真,其他情况下均为假。以下表达式中()可以正确表示逻辑―异或‖运算。

A.a || b B.a && b C.(a&&b)&&!(a || b) D.(a || b)&&!(a&&b) 17.若有声明―int a[5],*b=a,(*c)[3],*d[3];‖,则在以下表达式中有语法错误的是()。

A.a[0]=0 B.b[0]=0 C.c[0]=0 D.d[0]=0

18.若有声明:

int k, a, b;

unsigned long y=5;

double x=1.23;

则以下表达式中正确的是()。

A.x%(-5) B.x=y[6] C.k=(a=1,b=2,&a + &b) D.a+=a- = (b=2) * (a = 3) 19.一个用C语言编写的源程序中,()是必不可少的。

A.取名为main的函数定义B.#include

C.变量声明D.注释

20.以下声明中正确的是()。

A.int n=2, a[n]={10}; B.int n=10, *p[2]=&n;

C.int n=10, a[2]={n}; D.int a[2][2]={10}, (*p)[2]=a+1;

21、若有函数fun的定义为

void fun(…)

{static int a=1;

}

则下列叙述中不正确的是()。

A.在每次调用fun函数时,变量a的值是上次调用结束时a的值

B.在fun函数之外,可以用变量名a直接引用a的值

C.在其他函数中,可以出现声明double a=2.5;

D.fun函数的形式参数不能取名为a

22.以下单目运算符均只需要一个操作数,其中要求操作数的类型只能是指针型的是()。

A.& B.++ C.! D.*

23.已知有声明―int good=l; ‖,若要使得表达式―p="good"+good‖无语法错误(包括警告错误),p应当声明为()。

A.char p; B.char*p; C.int p; D.int *p;

24.以下全局变量声明中正确的是()。

A.auto int i=1; B.float a=1, b=0.5, c=a+b;

C.char for=1; D.static char ch;

25.若已有声明―double a[2][3]={1, 2, 3, 4, 5, 6};‖,则下列表达式中不能正确引用a[1][1]值的是()。

A.*(a[0]+4)

B.*(a[1]+1)

C.*(*(a+3)+1)

D.*(*a+4)

26、已有声明―int a[5];‖,以下表达式中不能正确取得a[1]指针的是()。

A.&a[1]

B.++a

C.&a[0]+1

D.a+l

27.以下关于语句的说法中正确的是()。

A.do-while语句的循环体至少会被执行1次

B.while语句的循环体至少会被执行1次

C.for语句的循环体至少会被执行1次

D.在C语言中只能用do、do-while或for语句实现循环结构

28.已知函数f的定义如下:

void f(void)

{printf("That‘s great! ");}

则调用f函数的正确形式是()。

A.f;

B.f();

C.f(void);

D.f(1);

29.以下程序在编译时在第三行报错―Redeclaration of ?a‘in function d‖,如果决定修改该行声明中出现的局部变量a的名字,则下列选项中不能用来替换变量名a的是()。

int b;

void d(int a)

{ int f; double a=1;

printf("%d",a);

}

main( )

{int e=1;d(e);}

A.f B.e C.d D.b

30、以下语句中不包含关键字的是()。

A.x=sqrt(2);

B.while(x!=0)x--;

C.if(x<0)x=-x;

D.return x;

31.在main函数体内部和外部均允许出现的实体是()。

A.预处理命令

B.语句

C.另一函数的定义

D.函数形式参数声明

32、已知有声明int x=2:,以下表达式中值不等于8的是()。

A.x+=2,x*2

B.x+=x*=X

C.(x+7)/2*((x+1)%2+1)

D.x*7.2/x+1

33、执行以下程序时,

#include

main()

{ int a; float b;

scanf("%3d%f",&a,&b);printf("%d\t%f",ab);

}

若要求变量a和b分别从键盘获得输入值45和678.0,则以下四种输入数据中( 代表―空格‖键,代表―回车‖键),不能达到该要求的输入数据是()。

A.45 678

B.45678

C.45,678

D.045678

34.下列程序段中,能将变量x、y中值较大的数保存到变量a、值较小的数保存到变量b 的程序段是()。

A.if(x>y)a=x;b=y;else a=y;b=x;

B.if(x>y){a=x;b=y;}else a=y;b=x;

C.if(x>y){a=x;b=y;}else{a=y;b=x;}

D.if(x>y){a=x;b=y;}else(x

35.已知函数fun的定义如下:

void fun(int x[], int y)

{ int k;

for(k=0;k

x[k]+=y;

}

若main函数中有声明int a[10]={10}及调用fun函数的语句,则正确的fun函数调用形式是()。

A.fun(a[ ],a[0]);

B.fun(a[0],a[0]);

C.fun(&a[0],a[0]);

D.fun(a[0],&a[0]);

36.设有下列程序段:

static char b=2;

void Y ( )

{ static float d=4;……}

int a=1;

void X ( )

{ int c=3;……}

关于程序段中各变量的属性,以下叙述中错误的是()。

A.a是全局变量,函数X可以访问,函数Y不能访问

B.b是全局变量,函数X和函数Y都可以访问

C.c是动态变量,函数X可访问,函数Y不可访问

D.d是静态变量,函数X和函数Y都可以访问

37、若有如下声明和语句:

int t[3][3], *pt[3], k;

for(k=0; k<3;k++) pt[k]=&t[k][0];

则表达式*(*(pt+1)+2)所引用的是()。

A.t[2][0] B.&t[2][0] C.t[1][2] D.&t[1][2]

38.设有声明float a=1.23456; int i;,欲将a中的数值保留小数点后两位,第三位进行四舍五入运算,能实现该功能的表达式是()。

A.i=a*100+0.5, a=i/100.0 B.a=(a*100+0.5)/100.0

C.a=((int)a*100+0.5)/l00.0 D.a=(a/100+0.5)/100.0

39.若已有声明―int x=4, y=3;‖,则表达式x < y ? x++: y++的值是()。

A.2 B.3 C.4 D.5

40.设有变量声明―char c;‖, 执行―for (; c=(getchar( ) !=‘\n‘) ; )printf("%c", c); ‖时,从键盘上输入―ABCDEFG↙‖之后,输出的结果是()。

A.ABCDEFG B.AABBCCDDEEFFGG

C.非字母数字字符D.语句不能执行

41.以下表示数学式―a

A.a=b)&&!(b>=c) D.!(a>=b||b>=c) 42.下面关于循环语句for、while、do_while的叙述中,正确的是()。

A.三种循环语句的循环体都必须放入一对花括号中

B.三种循环语句中都可以缺省循环终止条件表达式

C.三种循环语句的循环体都至少被无条件地执行一次

D.三种循环语句都可能出现无穷循环

43、若有声明―int a[]={l, 2, 3, 4}, *p, i;‖,则以下程序段中不能输出13的是()。

A.for(i=0;i<4;i+=2)printf("%d", a[i]);

B.for(p=0;p<4;p+=2)printf("%d", a[p]);

C.for(p=a;p

D.for(p=a, i=0; i<4;i+=2)printf("%d", p[i]);

44、下列叙述中正确的是()。

A.main函数必须出现在其他函数之前

B.main函数中至少必须有一条语句

C.C程序总是从main函数的第一条语句开始执行

D.C程序总是在执行完main函数的最后一条语句后结束

45.已知有结构定义和变量声明如下:

struct student

{ char name[20];

int score;

struct student *h;

}stu, *p; int *q;

以下选项中错误的是()。

A.p=&stu; B.q=&stu.score; C.scanf("%s%d", &stu); D.stu.h=p;

46、设有声明―int p[10]={1, 2}, i=0;‖,以下语句中与―p[i]=p[i+1], i++;‖等价的是()。

A.p[i]=p[i+1]; B.p[++i]=p[i]; C.p[++i]=p[i+1]; D.i++, p[i-1]=p[i]; 47.设有结构定义及变量声明如下:

struct product

{ char[5];

floadt price;

}y[4]={ "100", 100};

以下表达式中错误的是()。

A.(*y).code[0]=‘2‘;B.y[0].code[0]=‘2‘C.y->price=10; D.(*y)->price=10; 48.若有声明―int a=3, b=4, c=5;‖,则下列表达式中值为0的是()。

A.a&&b=0 B.a<=b C.a||b&&c D.!(!c||1)

49.已知有声明―long x, y;‖,且x中整数的十进制表示有n位数字(4

A.y=x/(10*(n-1))

B.y=x%(10*(n-1))

C.y=x%(long)pow(10, n-1)

D.y=x%(10^(n-1))

50.已知有声明―int x, y;‖,若要求编写一段程序实现―当x大于等于0时y取值1,否则y 取值-1‖,则以下程序段中错误的是()。

A.if(x>=0)y=1; else y=-1;

B.y=x>=0?1:01;

C.switch()

{case x>=0:y=1; break;

default:y=-1;

}

D.switch(x-abs(x))

{ case 0:y=1; break;

default:y=-1;

}

51、已知有声明―int m[]={5,4,3,2,1},i=0;‖,下列对m数组元素的引用中,错误的是()。

A.m[++i]

B.m[5]

C.m[2*2]=0

D.m[m[4]]

52、若函数调用时的实参为变量,则以下关于函数形参和实参的叙述中正确的是()。

A.实参和其对应的形参占用同一存储单元

B.形参不占用存储单元

C.同名的实参和形参占用同一存储单元

D.形参和实参占用不同的存储单元

53.C语言规定,在一个源程序中main函数的位置()。

A.必须在最开始

B.必须在最后

C.必须在预处理命令的后面

D.可以在其他函数之前或之后

54、已知有声明―int a=3, b=4, c;‖,则执行语句―c=1/2*(a+b);‖后,c的值是()。

A.0

B.3

C.3.5

D.4

55、已知字母A的ASCII码是65,字母a的ASCII码是97,变量c中存储了一个大写字母的编码。若要求将c中大写字母编码转换成对应小写字母编码,则以下表达式中不能实现该功能的是()。

A.c=tolower(c)

B.c=c+32

C.c=c-?A‘+‘a‘

D.c= (c +‘A‘)%26-?a‘

56.已知有定义和声明:

struct student

{ int no;

char name[20];

struct {int year, month, day;}birth;

}s;

若要求将日期―1989年11月12日‖保存到变量s的birth成员中,则能实现这一功能的程序段是()。

A.year=1989; month=11; day=12;

B.s.year=1989;s.month=11; s.day=12;

C.birth.year=1989; birth.month=11; birth.day=12;

D.s.birth.year=1989; s.birth.month=11; s.birth.day=12;

57、执行以下程序后的结果是()。

#include

void main()

{ int x=3;

Do

{

printf("%d\t", x=x-3);

}while(!x);

}

A.输出一个数:0

B.输出一个数:3

C.输出两个数:0和-3

D.无限循环,反复输出数

58.设有声明―int a=4, b=3, c=5;‖,以下4个程序段中有3个程序段的执行效果是相同的,另一个执行效果不同的是()。

A.if(a>b) c=a, a=b, b=c;

B.if(a>b) {c=a, a=b, b=c;}

C.if(a>b) c=a; a=b; b=c;

D.if(a>b) {c=a; a=b; b=c;}

59、以下关于if语句和switch语句的叙述中错误的是()。

A.if语句和switch语句都可以实现算法的选择结构

B.if语句和switch语句都能实现多路(两路以上)选择

C.if语句可以嵌套使用

D.switch语句不能嵌套使用

60.若有声明语句―char s1[10]={0},s2[10]= "books";‖,则能将字符串"books"赋给数组s1保存的表达式是()。

A.s1= "books"; B.strcpy(s2, s1);

C.s1=s2; D.strcat(sl, s2);

61.已知A盘根目录下的一个文本数据文件data.dat中存储了100个int型数据,若需要修改该文件中已经存在的若干个数据的值,只能调用一次fopen函数,已有声明语句―FILE *fp;‖,则fopen函数的正确调用形式是()。

A.fp=fopen("a:\\data.dat","r+");

B.fp=fopen("a:\\data.dat ","w+");

C.fp=fopen("a:\\data.dat","a+ ");

D.fp=fopen("a:\\data.dat","w ");

62.数组和链表都可以用于存储一组彼此有关联的数据,以下说法中不正确的是()。A.数组占用一块连续的存储区域,链表可能占用若干块不连续的存储区域

B.数组和链表所占用的存储区域均不能在程序运行期间动态地分配

C.数组中的数据可以随机存取或顺序存取,链表中的数据只能顺序存取

D.数组的长度是固定的,链表的长度是不固定的

63.设有定义和声明语句:

typedef struct dtype

{int a;

struct dtype *b;

}node;

static node x[3]={5, &x[1], 7, &x[2], 9, ‘\0‘}, *prt=&x[0];

下列选项中,表达式值不为5的是()。

A.x[1].b->a-2

B.Ptr->b->a-2

C.(ptr+1)->a-2

D.ptr->a

64.在以下程序中,需要在main函数之后定义一个函数,以下选项中()可以用做该函数的名字。

#define P 3.14

int y;

main( )

{ int a = 1;

函数名(a);

… /*若干执行语句*/

}

int函数名(int x)

{return x*x;}

A.main B.y C.P D.print

65.已知有语句―FILE *fp;int x=123;fp =fopen("out.dat", "w");‖,如果需要将变量x的值以文本形式保存到一个磁盘文件out.dat中,则以下函数调用形式中正确的是()。

A.fprintf("%d", x); B.fprintf(fp, "%d", x);

C.fprinff("%d", x, fp); D.fprintf("out.dat", "%d", x);

66.已知有声明语句―char s1[10]= "12345", s2[10]= "abcde", s3[10];‖,以下语句中能将s1中存储的字符串和s2中存储的字符串正确交换的是()。

A.s3=s1,s1= s2, s2 = s3;

B.s3[0] = s1[0],s1[0] = s2[0],s2[0]=s3[0];

C.strcpy(s3[0],s1[0]),strcpy(s1[0],s2[0]),strcpy(s2[0],s3[0]);

D.strcpy(s3,s1), strcpy(sl, s2), strcpy(s2, s3);

67.在定义任何一个函数时,下列选项中()是不可缺少的。

A.函数名之前的数据类型B.函数名之后的一对圆括号

C.形式参数声明D.函数体中的语句

68.已有数据类型定义和变量声明如下:

struct person

{int num;

char name[20], sex;

struct {int class; char prof[20];}in;

}a={20,"Li ning",‘M‘, {5,"computer"}}, *p= & a;

下列语句中正确的是()。

A.printf("%s", a->nname); B.printf("%s", p->in.prof);

C.printf("%s", *https://www.sodocs.net/doc/cf4600803.html,); D.printf("%c", p->in->prof);

69.若有以下程序:

int x;

int f(int y)

{return标识符;}

# include

int w;

main( )

{int z=2;f(z);…}

则在函数f中return语句后允许出现的标识符是()。

A.x或w B.x或y C.z或w D.NULL

70.以下跳转语句中,只有()可以选择不唯一的跳转目的地。

A.continue; B.break; C.goto标识符; D.return;

71.在缺省情况下,标准C的编译系统中预定义的标准输出流stdout直接连接的设备是()。A.软盘B.硬盘C.键盘D.显示器

72.已有枚举类型定义:―enum letter{A, B, C=7, D, E};‖,以下表达式中除()外,其他表达式的机内值均等于10。

A.‘\xb‘-1 B.B+E C.010+2 D.0xf-3

73.已知数据类型定义和变量声明如下:

struct sk

{int a; float b;}data[2], *p;

若有p=data,则以下对data[0]中成员a的引用中错误的是()。

A.data[0]->a B.data->a C.p->a D.(*p).a

74.已知有声明―char c=‘1‘; int x=300; float t=35000; double d=3.1234567e10;‖,则以下表达式求值时除()外其结果都可能是不准确的。

A.x=t/c B.t=d/x C.t=d/1e5f D.t = x + c

75.已有预处理命令和声明如下:

#define N 10

int a=2, c=1;

double b=1.2;

下述程序段正确的是()。

A.switch(a)

{ case c: a--;break;

case c+1: a++;break;

}

B.switch(a)

{ case N>0: a=1;break;

case 1: a=0;break;

}

C.switch(a)

{ case 2: b++;break;

case ?0‘: b=3;

}

D.switch(b)

{ case 1.0: b++;break;

case 1.2: b=1;break;

}

76.若有以下声明和定义:

void fun(int c){printf("%d", c);}

main( )

{void (*a) (int)=fun, *b(int), (*c) ( int );

/*调用fun函数语句位置*/

}

void *b(int c){ }

如果在main函数中需要调用fun函数,以下调用语句中错误的是()。

A.fun(1); B.(*a)(1); C.b=fun; (*b)(1); D.c=a; (*c)(1); 77.以下叙述正确的是()。

A.一个用C语言编写的程序在运行时总是从main函数开始逐条执行语句的

B.main函数是系统库函数

C.main函数中每行只能出现一条语句

D.main函数必须出现在所有其他函数之前

78.以下关于函数形式参数的声明中正确的是()。

A.int a[ ]

B.int a [ ][ ]

C.int a[ ]={0}

D.int a[2][ ]

79.关于函数返回值,以下叙述中正确的是()。

A.函数返回值的类型由函数体内return语句包含的表达式的类型决定

B.函数返回值的类型由函数头部定义的函数类型决定

C.若函数体中有多个return语句,则函数的返回值是排列在最后面的return语句中表达式的值

D.若函数体内没有return语句,则函数没有返回值

80.已知字符A的机内编码为65,则执行下列函数调用语句时,不能输出字符B的是()。

A.putchar(?B‘);

B.putchar("B");

C.putchar(66);

D.putchar(?\x42‘);

81.下列一维数组的声明中正确的是()。

A.int a[ ];

B.int n=10, a[n];

C.int a[10+1]={0};

D.int a[3]={1, 2, 3, 4};

82.已知有结构类型定义:

typedef struct ex{long int num;

char sex;

struct ex*next;

}student;

下列叙述错误的是()。

A.struct ex是结构类型

B.student是结构类型的变量名

C.ex可缺省

D.student不可缺省

83.下列程序段的输出结果是()。

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

for(i=0;i<4;i+=2)printf("%d", *(p+i));

A.5 2

B.5 1

C.5 3

D.9 7

84.已知有声明‖char a[6], *p=a;‖,现需要在程序运行过程中将字符串"Hello",保存到a数组中,则下列选项中能正确完成此操作的表达式是()。

A.a[6]="Hello"

B.a="Hello"

C.p="Hello"

D.strcpy(a, "Hello")

85.若要使表达式―p++‖无语法错误,则变量p不能声明为()。

A.int p;

B.double p;

C.int *p;

D.struct{int x;}p;

86.以下函数定义中正确的是()。

A.int fun(int a, b){ }

B.int fun(int a[][]){}

C.int fun(void){}

D.int fun(static int a, int b){}

87.已知有函数f的定义如下:

int f(int a, int b)

{ if(a

在main函数中若调用函数f(2, 3),得到的返回值是()。

A.2

B.3

C.2和3

D.3和2

88.下列各选项都是在C语言程字段中增加的注释,其中注释方法错误的是()。

A.void main(/*int argc, char, *argv[ ]*/)

{ }

B.void main( )

{pri/*remark*/ntf("name");}

C.void main( )

{ int x/*=10*/;

printf("%d", x);

}

D.void main( )

{ int x=10;

/*printf(" %d", x);*/

}

89.若有定义和声明typedef enum{green, red, yellow, blue, b1ack}color; color flower;,则下列语句中正确的是()。

A.green=red;

B.flower=red;

C.color=red;

D.enum=red;

90.若已定义一个有返回值的函数,则以下关于调用该函数的叙述中错误的是()。A.函数调用可以作为独立的语句存在

B.函数调用可以出现在表达式中

C.函数调用可以作为一个函数实参

D.函数调用可以作为一个函数形参

91.对应main函数中的fun函数调用语句,以下给出的四个fun函数首部中,错误的是()。

main( )

{ int a[50], n;

fun(n, &a[9]);

}

A.void fun(int m, int x[])

B.void fun(int s, int h[41])

C.void fun(int p, int *s)

D.void fun(int n, int a)

92.若有声明―int i; float x; char a [50]; ‖,为使i得到值1,x得到值3.1416,a得到值yz,当执行语句―scanf("%3d%f%2s", &i, &x, a);‖时,正确的输入形式是()。

A.1, 3.1416, yz↙

B.13.1416yz↙

C.001 3.1416 yz↙

D.i=001, x=3.1416,a=yz↙

93.程序段―int x=3; do{printf("%d", x--); }while(!x);‖的执行结果是()。

A.3 2 1

B.2

C.3

D.死循环

94.假定已有声明―char a[30], *p=a;‖,则下列语句中能将字符串―This is a C program.‖正确地保存到数组a中的语句是()。

A.a[30]= "This is a C program.";

B.a="This is a C program.";

C.p="This is a C program.";

D.strcpy(p, "This is a C program.");

95.若需要对一个数据文件abc.txt中的数据做加密处理并且限定只能做一次打开文件操作,则在―fp=fopen("abc.txt", 模式字符串);‖中,模式字符串应当是()。

A."w+"

B."r+"

C."a+"

D."r"

96.下列在C语言源程序的错误中,通常不能在编译时发现的是()。

A.括号不匹配

B.非法标识符

C.数组元素下标值越界

D.程序结构不完整

97.若有程序段―char c=256; int a=c;‖,则执行该程序段后a的值是()。

A.256

B.65536

C.0

D.-1

98.若有枚举类型定义―enum list1{x1, x2, x3, x4=6, x5, x6};‖,则枚举常量x2和x6代表的值分别是()。

A.1,6

B.1,8

C.2,6

D.2,8

99.若程序中已有相应的声明,下列语句中错误的是()。

A.printf(i==4? "%6d\n":"%6d", i);

B.i==4 ? printf("%6d\n", i):printf("%6d", i);

C.for(i=10; ; i--)if(i==1)break;

D.for(i=10; ;)if(i--);break;

100.已知有声明―char a[ ]= "It is mine", *p="It is mine";‖,下列叙述中错误的是()。

A.strcpy(a, "yes")和strcpy(p, "yes")都是正确的

B.a="yes"和p="yes"都是正确的

C.*a等于*p

D.sizeof(a)不等于sizeof(p)

三、C基本概念填空题

1.包含二目运算符的表达式可一般地表示为(x) op (y),其中op代表运算符,x、y代表操作数。若op是“+”运算符,且x和y均为常量时,不能同时为(1)常量。

2.当(2)语句被执行时,程序的执行流程无条件地从一个函数跳转到另一个函数。3.在函数内部声明局部变量时缺省了存储类型,该变量存储类型为(3)。

4.包含二目运算符的表达式可一般地表示为(x) op (y),其中op代表运算符,x、y代表操作数。若op是关系运算符或逻辑运算符,则不管x、y为何值,表达式的值是(4)。5.在C语言中大部分执行语句都含关键字。例如,for语句含关键字for。除这些语句外不含关键字的非空操作语句是(5)。

6.常量‘\n‘的数据类型是(6)。

7.已知main函数中有声明“int a[10];”,若在main函数中出现语句“fun(a);”,执行该函数调用语句时传递给fun函数对应位置形式参数的值是(7)。

8.在声明变量时,类型修饰符unsigned一般用于修饰基本类型中的int和(8)。9.已知某程序中有如下片段:

int i;float f;

/*p的声明*/

p=&i;p= &f;

若要保证该段程序没有任何语法错误,p应当声明为(9)。

10.已有声明“float x;double y;int a;long b;char c;”,则表达式x+y*a/x+b/y+c值的类型为(10)。

11.系统库函数scanf 和gets 在被调用执行时都可以读取从键盘输入的一串数字字符,其中函数 (11) 具有将读取的数字字符串转换为整型数的功能。

12.若有函数定义int f( ) {int x=4, y=3, z=2; return x, y, z;},则调用函数f 后的返回值是

(12) 。

13.若二维数组a 有m 列,则在存储该数组时,a[i][j]之前有 (13) 个数组元素。 14.一个用C 语言编写的程序在运行时,如果没有发生任何异常情况,则只有在执行了

(14) 函数的最后一条语句或该函数中的return 语句后,程序才会终止运行。

15.数学式b

a y x ++2

2所对应的C 语言表达式为 (15) 。 16.若一个函数不需要形式参数,则在定义该函数时,应使形式参数表为空或放置一个

(16) 。

17.已知有声明float d=1;double f=1;long g;和语句printf("____",g=1O+’i ’+(int)d*f);, 为了正确地以十进制形式输出printf 参数表中第二个参数(表达式)的值,则在第一个参数中的下划线位置处应填写的格式转换说明符是 (17) 。

18.设函数a 的定义如下:

void a()

{ int x=12,y=345;FILE *fp=fopen("my.dat ","w ");

fprintf(fp, "%d %d ",x,y);

fclose(fp);

}

已知main 函数中有声明int x,y;FILE *fp=fopen("my.dat ","r ");,若需要从文件my .dat 中正确地读出由函数a 写入的两个数据并分别保存到变量x 和y 中,则在main 函数中使用的读数据语句应当是 (18) (要求写出语句的完整格式)。

19.执行以下程序段后,number 的值是 (19) 。

char str[]=" Hello! "; int number;

number=sizeof(str);

20.若有说明int a[][4]={1,2,3,4,5,6,7,8,9};,则数组a 第一维的大小是 (20) 。

21.设有如下声明和语句:

int a=2, b, c=5;

scanf("%d", &b);

b=c--||scanf("%d", &c)&&a++;

该程序段执行时,若从键盘输入的数据是4□3(□代表空格键),则变量C 的值为

(21) 。

22.若有声明“char a[3]= "AB"; char *p=a;”,执行语句“printf("%d",p[2]);”后输出结果是

(22) 。

23.若有声明“int a=32767, b;”,则在Turbo C 2.0系统中执行语句“printf("%d",b=++a);”后输出结果是 (23) 。

24.若有函数声明“int sub(int(*x1)( ),int*x2);”,则形式参数x1是指向 (24) 的指针变量。

25.若有宏定义“#define max(a, b) (a>b?a: b)”,则表达式“max(2, max(3, 1))”的值是

(25) 。

26.在声明局部变量时,不能使用的存储类别标识符是 (26) 。

27.在以下程序的main 函数中,语句“fun(x, 10);”内的实参x 表示数组x 的 (27) 。

void fun(int a[10], int n)

{ int i; for(i=0; i

main( )

{ int x[10]={0};fun(x, l0); }

28.已知程序中有声明“int a; long b;”,若需要接收从键盘输入的电话号码字符串(010)64782656(其中010是区号,64782656是电话号码)并将其中的区号、电话号码分别存储到变量a、b中,则实现该功能的输入语句应为“scanf(" (28)",&a,&b);”。29.若有声明“double x=10, y=5;”,则计算x y的库函数调用形式是(29)。30.在C语言源程序中,不带任何修饰符的浮点数直接量(例如:3.14)都是按(30)类型数据存储的。

31.若有声明“char sl[10]= "ABCDE", s2[10]= "A\\0";”,则语句

“printf("%d", strlen(strcpy(sl, s2)));”的输出结果是(31)。

32.已知有函数定义“int fun(){return (3, 4);}”,则调用fun后的函数返回值是(32)。33.在一个C语言源程序中,必不可少的是(33)。

34.执行以下程序段中的语句“k = M*M+1;”后k的值是(34)。

#define N 2

#define M N+1

k = M*M+1;

35.声明局部变量时若缺省存储类别,该变量的存储类别是(35)。

36.数学式3x所对应的C语言表达式为pow(x, (36))。

37.已知有声明和语句“int a; scanf("a=%d", &a);”,欲从键盘上输入数据使a中的值为3,则正确的输入应是(37)。

38.已知有声明“char ch; int a;”执行语句“scanf("%c%d", &ch, &a);”时如果从键盘输入的数据是“123”,则变量a得到的值是(38)。

39.若有以下宏定义:

#define M(a, b) –a/b;

则执行语句“printf("%d", M(4+3, 2+1));”后输出结果为(39)。

40.执行程序段“int x=0x6c; printf("x=%x\n", x);”后的输出结果为(40)。41.只能在循环体中出现的语句是(41)语句。

42.&既可以用做单目运算符也可以用做双目运算符,其中用做单目运算符时表示的功能是(42)。

43.当程序读写数据文件时,需要有声明语句“FILE *fp;”,在该声明语句之前必须包含头文件(43)。

44.在文件中,以符号常量EOF作为文本文件(字符流文件)的结束标记,EOF代表的值是(44)。

45.若有声明“char a=0; int b=1; float c=2; double d=3; ”,则表达式“c=a+b+c+d”值的类型为(45)。

46.若某个程序运行时创建了多个输入流,当执行到程序中的scanf函数时,只有在(46)输入流为空时才会暂停程序运行而等待输入。

47.执行“printf("%d,%d", i, j, k, m); ”后在屏幕上将输出(47)个整数。

48.设已有非空文本数据文件file1.dat,要求能读出文件中原有的全部数据,并在文件原有数据之后添加新数据,则用FILE*fp=fopen("file1.dat", (48))打开该文件。49.在Turbo C 2.0系统中,若将实型常数1.5存储在内存中,它占用(49)个字节。

50.若有定义“enum seq{mouse, cat, dog, rabbit=0, sheep, cow=6, tiger};”,则执行语句“printf("%d", cat + sheep + cow);”后输出结果是 (50) 。

51.若有声明“int a=30, b=7;”,则表达式“!a + a % b ”的值是 (51) 。

52.已知数据文件a.dat 是通过执行以下程序建立的,若在另一个程序运行时需要从该数据文件中正确读取数据,则应当调用的读文件库函数的函数名是 (52) 。

main()

{FILE *fp = fopen("a.dat","wb");

float x = 25.0;

fwrite(&x, sizeof(float), 1, fp);

fclose(fp);

}

53.在C 语言的源程序中若出现常量“1L ”,则该常量的类型是 (53)。

54.已知有声明”int x=1, y=2;”,则执行表达式”(x>y) && (--x>O)”后x 的值为 (5

4) 。

55.在调用函数fopen("a:\\b.dat ", "r ")时,若A 盘根目录下不存在文件b.dat ,则函数的返回值是 (55) 。

56.已知有声明int x=1,y=2,z=3:则执行语句x>y?(z-=--X):(z+=++x);后,变量x 、z 的值分别是 (56) 。

57.循环语句中通常都包含一个“循环条件表达式”,该表达式的值决定是否执行下一次循环。在C 语言的循环语句中,“循环条件表达式”可缺省的语句是 (57) 。

58.关键字case 和default 只能在 (58) 语句中出现。

59.在用fopen 函数打开一个已经存在的数据文件abc 时,若要求既可以读出abc 文件中原来的内容,也可以用新的数据覆盖文件原来的数据,则调用fopen 函数时,使用的存取方式参数应当是 (59) 。

60.若有声明“int i=7;float x=3.1416;double y=3;”,表达式i+‘a ‘*x+i/y 值的类型是 (60) 型。

61.与整型数学算式)(3b a b

a +-等价的c 语言表达式是 (61) 。

62.若要使表达式p="jiangsu"无任何错误(包括语法错误和警告错误),p 的声明形式应为

(62) 。

63.若有声明“int a=5, b=2;”,则表达式“b+=(float)(a+b)/2”运算后b 的值为 (63) 。

64.若有声明“char s[10]= "remind";”,执行“puts(s+2):”后的输出结果是 (64) 。

65.已知某程序中有预处理命令“#include ”,为使语句“zx=fopen("c:\\a.txt","r");”能正常执行,在该语句之前必须有声明 (65) 。

66.可以改变局部变量的生存期、但不能改变它的作用域的存储类别是 (66) 。

67.C 语言有效的预处理命令总是以 (67) 开头。

68.若有声明“int a=15, b=20, c=25, e;”,则执行语句“e=a>b?—c:++c;”后变量e 的值是 (68)。

69.若有声明“int a=3, b=4; float x=4.5, y=3.5;”,则表达式“(float)(a+b)/2+(int)x%(int)y ”的值是 (69) 。

70.若已有定义“enum TP{A, B, C};”,则执行语句“printf("%d\n", A+1);”后输出结果是

(70) 。

71.若需要打开D 盘上user 子目录下已经存在的名为abc.txt 的文本文件,先独处文件中数据,后追加写入新数据,则正确的函数调用语句是“fp=fopen("D:\\user\\abc.txt",

(71) );”。

72.若有声明“int x;”且sizeof(x)的值为2,则当值为 (72) 时“x+1>x ”为假。

73.若有声明“float y=3.14159; int x;”,则计算表达式“x = y*100+0.5, y = x/100.0”后y 的值是 (73) 。

74.C 语言有!、&&、||三个逻辑运算符,其中优先级高于算术运算符的是 (74) 。

75.若有声明“int r=2;”,则执行语句“printf("%d ", sizeof(2*3.14*r));”时输出 (75) 。

76.数学表达式bc

a x 4≠所对应的C 语言表达式为 (76) 。 77.若有以下声明:

char *p="%d,%d\n"; int a=1, b=2;

则执行语句“printf(p, a, b);”时输出 (77) 。

78.已知有声明“char ch=‘g ‘;”,则表达式ch=ch-?a ‘+‘A ‘的值为字符 (78) 的编码。

79.在C 语言系统中,如果一个变量能正确存储的数据范围为整数-32768~32768,则该变量在内存中占 (79) 字节。

80.已知有声明“int a[3][2]={{1, 2}, {3, 4}, {5, 6}}, *p=a[0];” 则执行语句“printf("%d\n", *(p+4));”后的输出结果是 (80) 。

81.若有声明“double n;”,则数学公式“)14(312

-n n ”对应的C 语言表达式是 (81) 。

82.若有声明“int a=0, b=1, c=2;”,执行语句“if(a>0&&++b>0)c++; else c--;”后,变量a 、b 、c 的值分别是时输出 (82) 。

83.声明“FILE *p;”中的类型标识符“FILE ”是在头文件 (83) 中定义的。

84.除goto 语句外,在循环结构中执行 (84) 语句可提前结束本次循环直接进入下一次循环。

85.若有程序段“int a[10], *p=a, *q; q=&a[5];”,则表达式q-p 的值是 (85) 。

86.执行语句序列“int a, b; a=b=4; a+=b%3;”后,变量a, b 的值分别是 (86) 。

87.使用TURBO C 系统编译C 语言源程序后生成的文件名后缀是 (87) 。

88.C 语言源程序中用十六进制表示整型常数必须以 (88) 开头。

89.如果一个循环结构的循环体至少要执行一遍,则最适合描述该循环结构的语句是 (89) 语句。

90.若要声明一个无符号整型变量x ,则正确的声明形式是“ (90) int x;”。

91.已知有声明“int n=12; double a;”则执行语句“a=n/=5;”后,a 的值为 (91) 。

92.若有数据类型定义如下:

union A{float a1; float a2;};

则表达式sizeof(union A)的值为 (92) 。 四、C 运行结果题

1.以下程序运行时输出第一个数是 (1) ,第二个数是 (2) ,第三个数是 (3) 。

#include

main( )

{ static int a[3][3], i, j;

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

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

{ switch(abs(i-j))

{case 0:if(i= =0|| i= =2)a[i][j]+=3;

else a[i][j]++;break;

case 1:a[i][j]+=2;break;

case 2:a[i][j]+=3;

}

}

printf("%d,%d,%d", a[1][1], a[1][2], a[2][0]);

}

2.以下程序运行时输出第一行是(4),第二行是(5)。

#include

int convert(char s1[ ], char s2[ ])

{ int i=0, j, s;

char tab[8][4]={ "000","001","010","011","100", "101", "110", "111"};

for(i=0,j=0;s1[i]!= '\0';i++,j=j+3) strcpy(&s2[j],tab[s1[i]- '0']);

for(i=0, s=0;i

return s;

}

main( )

{ char ss1[ ]= "15", ss2[80];int y;

y = convert(ss1,ss2);printf("%d\n%s", y, ss2);

}

3.已知int型变量的存储字节数为2,以下程序运行时输出结果是(6)。

# include

main( )

{ int a=3, b=2, c=7, d=6, e=8;

long f=a*10000+b*1000+c*100+d*10+e;

printf("%ld", f);

}

4、以下程序运行时输出结果是(7)。

#include

main()

{ char *p="student";

if(p= ="student")

printf("yes");

else

printf("no");

}

5.以下程序运行时输出结果是(8)。

# include

# include

main()

{char *s="23a4";

int k=0, a=0, b=0;

do

{if(isdigit(s[k]))

{if(s[k]%2==0)

{a = a + s[k]- '0';

continue;

}

a = a + s[k]- '0';

b = b + s[k]- '0';

}

}while(s[k+1]&&++k);

printf("%d,%d,%d\n",k,a,b);

}

6.以下程序运行时输出结果是(9)。

#include

main( )

{char a=2.56;

int d=a;

printf("%d", d+1);

}

7、以下程序运行时输出结果的第一行是(10),第二行是(11),笫三行是(12)。

#include

typedef struct s

{ int index;

int value;

}M;

main( )

{static int i, j, k, c[4][4];

M a[10]={{0, 1}, {3, 2}, {5, 3}, {6, 4}, {9, 5}, {15, 6}, {-1,0}}, *p=a,

b[10]={{1, 1}, {3, 2}, {4, 3}, {6, 4}, {10, 5}, {13, 6}, {-1, 0}}, *q=b;

while (p->index!=-1)

{ i=p->index/4;

j=P->index%4;

c[i][j]=p->value;

p++;

}

while(q->index !=-1)

{ i=q->index/4;

j=q->index%4;

c[i][j]+=q->value;

q++;

}

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

{for(j=0;j<4;j++)

printf("%d", c[i][j]);

printf("\n");

}

江苏大学大一c语言期末复习题汇总

选择题1.下列字符序列中,不可用作C语言标识符的是()。 A.abc123 B.C._123_ D._ok 2.请选出可用作C语言用户标识符的一组标识符()。 A.void B.a3_b3 C.For D.2a define _123 -abc DO WORD IF Case sizeof 3.不属于C语言关键字的是()。 A.int B.break C.while D.character 4.以下不能定义为用户标示符的是()。 A.scanf B.Void C._3com_ D.int 5.C语言程序的基本单位是()。 A.程序行B.语句C.函数D.字符 6.以下说法中正确的是()。 A.C语言程序总是从第一个定义的函数开始执行 B.在C语言程序中,要调用的函数必须在main( )函数中定义 C.C语言程序总是从main( )函数开始执行 D.C语言程序中的main( )函数必须放在程序的开始部分 7.以下选项中,合法的用户标识符是()。 A.long B._2abc C.3dmax D. 8.已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示 的字符常量’\101’是()。 A.字符A B.字符a C.字符c D.非法的常量 9.以下选项中,正确的字符常量是()。 A.”F”B.’\\’’C.’W’D.’’ 10.下列变量定义中合法的是 A.short _a=; B.double b=1+; C.long do=0xfdaL; D.float 2_and=1-e-3; 11.为了避免嵌套的if-else语句的二义性,C语言规定else总是与()组成配对关系。 A.缩排位置相同的if B.在其之前未配对的if C.在其之前未配对的最近的if D.同一行上的if 12.下列运算符中优先级最高的是()。 A.< B.&& C.+ D.!= 13.判断char型变量s是否为小写字母的正确表达式是()。 A.’a’ <= s<=’z’B.(s>=’a’) & (s<=’z’) C.(s>=’a’) && (s<=’z’) D.(’a’<=s) and (’z’>=s)

C语言期末考试题库(第一章 c语言基

一、单项选择 1.算术运算符,赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为(). A、关系运算,赋值运算,算术运算 B、算术运算,关系运算,赋值运算 C、算术运算,赋值运算,关系运算 D、关系运算,算术运算,赋值运算 答案:B 2.下述正确的C语言常量是:(). A、E2 B、3e-3 C、1.5E2.5 D、5.0E 答案:B 3.使用共用体变量,不可以(). A、进行动态管理 B、节省存储空间 C、同时访问所有成员 D、简化程序设计 答案:C 4.为表示关系x>=y>=z,应使用C语言表达式为:()

A、(x>=y)&(y>=z) B、(x>=y>=z) C、(x>=y)&&(y>=z) D、(x>=y)AND(y>=z) 答案:C 5.以下程序的输出结果是(). main() {char str[]="ABCD",*p=str;printf("%s\n",p);} A、68 B、ABCD C、不确定的值 D、字符D的地址 答案:B 6.char a[10];不能将字符串"abc"存储在数组中的是(). A、a="abc"; B、a[0]=0;strcat(a,"abc"); C、int i;for(i=0;i<3;i++)a[i]=i+97;a[i]=0; D、strcpy(a,"abc"); 答案:A 7.fscanf函数的正确调用形式是(). A、fscanf(文件指针,格式字符串,输入表列);

B、fscanf(格式字符串,文件指针,输出表列); C、fscanf(fp,格式字符串,输出表列); D、fscanf(格式字符串,输出表列,fp); 答案:A 8.下列数组说明中正确的是(). A、int array[][]={1,2,3,4,5,6,7,8,9,10}; B、int array[][][5]={1,2,3,4,5,6,7,8,9,10}; C、int array[][4]={1,2,3,4,5,6,7,8,9,10}; D、int array[3][]={1,2,3,4,5,6,7,8,9,10}; 答案:C 9.以下选项中,与k=n++完全等价的表达式是(). A、n=n+1,k=n B、k+=n+1 C、k=++n D、k=n,n=n+1 答案:D 10.针对下列程序段回答问题(). for(t=1;t<=100;t++) { scanf("%d",&x); if(x<0)continue;

C语言期末考试题(含答案)

《C 语言程序设计》期末试卷 一、单项选择题(10x2’=20’) 1、以下叙述正确的是() A )C 语言的源程序不必通过编译就可以直接运行。 B ) C 语言中的每条可执行语句最终都将被转换成二进制的机器指令。 C )C 语言源程序经编译形成的二进制代码可以直接运行。 D )C 语言中的函数不可以单独进行编译。 2、一个C 语言的源程序中() A )必须有一个主函数 B )可能有多个主函数 C )必须有除主函数外其它函数 D )可以没有主函数 3、以下不能定义为用户标识符的是() A )scanf B )Void C )_3com D )int 4、若以下选项中的变量已正确定义,则正确的赋值语句是() A )x1=26.8%3; B )1+2=x2; C )x3=0x12; D )x4=1+2=3; 5、设有定义:floata=2,b=4,h=3;以下C 语言表达式中与代数式h b a *)(2 1 的计算结果不.相符的是() A )(a+b)*h/2 B )(1/2)*(a+b)*h C )(a+b)*h*1/2 D )h/2*(a+b) 6、C 语言中用于结构化程序设计的3种基本结构是() A )顺序结构、选择结构、循环结构 B )if 、switch 、break C )for 、while 、do-while D )if 、for 、continue 7.在while (!x )语句中的!x 与下面条件表达式等价的是() A)x!=0B)x==1C)x!=1D)x==0

8、有以下程序: #include voidmain(){ inti=1,j=1,k=2; if((j++||k++)&&i++) printf(“%d,%d,%d\n”,i,j,k);} 执行后的输出结果是() A)1,1,2 B)2,2,1 C)2,2,2 D)2,2,3 9、有以下程序: #include voidmain(){ inti,s=0; for(i=1;i<10;i+=2) s+=i+1; printf(“%d\n”,s);} 程序执行后的输出结果是() A)自然数1~9的累加和B)自然数1~10的累加和 C)自然数1~9中奇数之和D)自然数1~10中偶数之和 10、有以下函数定义: voidfun(intn,doublex){……} 若以下选项中的变量都已经正确定义并赋值,则对函数fun的正确调用语句是()A)fun(inty,doublem); B)k=fun(10,12.5); C)fun(x,n);D)voidfun(n,x); 二、填空题(10x2’=20’) 11、C语言描述“x和y都大于或等于z”的表达式是:。 12、函数定义时涉及的基本要素是:、、。

c语言期中考试试题及答案

《C语言程序设计》期中考试试卷 课程编号:03402513试卷类型:A卷考试形式:笔试考试日期: 注意事项:1.请将试卷最后一页的答题纸撕下,将答案填写在其中;2.交卷时请确认答题纸是否按要求写好姓名等信息并与试题一起上交;3.不准携带任何书籍、资料、纸张等。4.草稿纸用试卷的背面。 一、单项选择题(1空1分,共20分) 1、C语言程序的基本结构是(【1】) 。 【1】 A) 函数 B) 语句 C) 字符 D) 程序行 2、一个C程序的执行是(【2】) 。 【2】A) 从本程序的主函数开始,到本程序的主函数结束 B)从本程序的第一个函数开始,到本程序的最后一个函数结束 C) 从本程序的主函数开始,到本程序的最后一个函数结束 D)从本程序的第一个函数开始,到本程序的主函数结束 3、下列四个叙述中,错误的是(【3】) 。 【3】 A) 一个C源程序必须有且只能有一个主函数 B) 一个C源程序可以含一个或多个子函数 C) 在C源程序中注释说明必须位于语句之后 D) C源程序的基本结构是函数 4、下面不属于C语言保留字的是(【4】) 。 【4】 A) short B) ELSE C) extern D) for 5、下列四个叙述中,正确的是(【5】) 。 【5】 A) 库函数也是C语言本身的组成部分 B) C语言中的输入输出操作是由相应语句完成的 C) 库函数是C编译系统提供的功能函数 D) 标题文件(头文件)可以在程序的函数内部调用 6、下列四组数据类型中,C语言允许的一组是(【6】)。 【6】 A) 整型、实型、逻辑型 B) 整型、实型、字符型 C) 整型、双精度型、布尔型 D) 整型、实型、复型 7、在C语言中不同数据类型的的长度是(【7】)。 【7】 A) 固定的 B) 由用户自己定义的 C) 任意的 D) 与机器字长有关

C语言期末考试试题

C语言试题1 一填空题(15分) 1.设x的值为15,n的值为2,则表达式x%=(n+=3)运算后,x的值为()。 2.设int a=7,b=9,t;执行完表达式t=(a>b)?a:b后,t的值是()。 3.下面程序段的输出结果是()。 int a=1234; a=a&0377; printf(“%d %o\n”,a,a); 4.a数组定义如下,按照内存排列顺序,a数组中的所有元素是()。 char a[3]; 5.设有以下宏定义,则执行赋值语句a=PP*20;(a为int型变量)后,a的值是()。 #define PR 80 #define PP PR+403 6.在C程序中,可以通过三种运算方式为指针变量赋地址值,它们是:()、()和()。7.在C文件中,数据存在的两种代码形式是()和()。 8.C语言中调用()函数打开文件,调用()函数关闭文件,调用()函数可实现文件的随机读写。 9.若有int a[3]={10,12,30};则a+1是()的地址,*(a+2)=()。 二判断对错(5分,对的划“√”,错的划“×” 1.在Turbo C中,整型数据在内存中占2个字节。() 2.表达式1/4+2.75的值是3。() 3.结构体类型只有一种。() 4.函数若无返回值,则它一定无形参。() 5.C语言只能处理文本文件和二进制文件。() 三选择题(20分) 1.设int a=12; 表达式a+=a-=a*=a的值是()。 A 12 B 144 C 0 D 132 2.以下程序的输出结果是()。 main( ) { int a=011; printf(“%d\n”,++a); } A 12 B 11 C 10 D 9 3.以下程序的输出结果是()。 #define ADD(x) (x)+(x) main() { int a=4,b=6,c=7,d=ADD(a+b)*c; printf(“d=%d”,d); } A d=70 B d=140 C d=280 D d=80 4.下面的选项中正确的赋值语句是(char a[5],*p=a;)()。 A p=“abcd”; B a=“abcd”; C *p=“abcd”; D *a=“abcd”; 5.若k为整形,则while循环执行()次。 k=2; while(k==0) printf(“%d”,k); k--; printf(“\n”); A 10 B 9 C 0 D 1

(完整版)c语言期末考试题及其答案

选择题(7分,每小题0.5分) 1.C语言源程序的基本单位是()。 A 过程 B 函数 C 子程序 D 标识符 2.下列程序的输出结果是()。 main( ) { int a=7,b=5; printf("%d\n",b=b/a); } A 5 B 1 C 0 D不确定值 3.假设变量a,b均为整型,表达式(a=5,b=2,a>b?a++:b++,a+b)的值是()。 A 7 B 8 C 9 D 2 4.设a为int型变量,执行下列赋值语句后,a的取值分别是()。 a=125.534; a=(int)125.521%4; a=5<<2; A 125,31,1 B 125,1,20 C 125,31,20 D 125.534,2,20 5.设有如下程序段,下面描述中正确的是()。 int k=10; while(k=0) k=k-1; A 循环执行一次B循环是无限循环C循环体语句一次也不执行D循环体语句执行一次 6.以下程序的输出结果为()。 int i; void prt( ) { for(i=5;i<8;i++) printf("%c",'*'); printf("\t"); } main( ) { for(i=5;i<=8;i++) prt( ); } A *** B *** *** *** *** C *** *** D * * * 7.在C语言程序中,以下说法正确的是()。 A函数的定义可以嵌套,但函数的调用不可以嵌套 B函数的定义不可以嵌套,但函数的调用可以嵌套

C函数的定义和函数的调用都不可以嵌套 D函数的定义和函数的调用都可以嵌套 8.以下函数调用语句中含有()个实参。 func((e1,e2),(e3,e4,e5)); A 2 B 3 C 5 D 语法错误 9.以下程序的输出结果为()。 #define ADD(x) x*x main( ) { int a=4,b=6,c=7,d=ADD(a+b)*c; printf("d=%d",d); } A d=70 B d=80 C d=140 D d=700 10.已知职工记录描述如下,在Turbo C中,系统为变量w分配()字节的空间。 struct worker { int no; char name[20]; char sex; union { int day; int month; int year;}birth; } w; A 29 B 20 C 25 D 6 11.设有以下定义,值为5的枚举常量是()。 enum week{sun,mon=4,tue,wed,thu,fri,sat} w; A tue B sat C fri D thu 12.下面选项中正确的赋值语句是(设char a[5],*p=a;)()。 A p="abcd"; B a="abcd"; C *p="abcd"; D *a="abcd"; 13.设有以下程序段,则值为6的表达式是()。 struct st { int n; struct st *next;}; static struct st a[3]={5,&a[1],7,&a[2],9,0 },*p; p=&a[0]; A p++->n B ++p->n C p->n++ D (*p).n++ 写出下列程序的运行结果(10分,每小题2分) 1.float average (float array[10]) { int i;

大一C语言期末考试试题

6.以下程序的输出结果为(D)。 main( ) { char c; int i; for(i=65;i<68;i++) { c=i+32; switch(c) { case ‘a’:printf("%c,",c);break; case ‘b’:case ‘e’:printf("ok,"); default: printf("end"); } } } A a,ok,end B a,ok,endend C a,ok,end,end D a,ok,ok 9.以下程序的输出结果为(B)。 #define A 3 #define B(a) (A+1)*a main() { int x; x=3*A+B(7); printf("x=%d\n",x); } A x=93 B x=37 C x=60 D x=90 三写出下列程序的运行结果(10分,每小题2分) 1.main( ) { char c1=‘A’,c2=‘\144’,c3=‘\x44’,c=0xf5,x=13,a; int i=0122,j=0xa4; printf(“c1=%c,c4=%c\tc5=%c\n”,c1,c2,c3); printf(“%d,%d\n”,i,j); i=-34; j=20; printf(“%d,%d,%d\n”,i%j,i&j<<2,sizeof(j)); printf(“c=%d\n”,c|x); a=c^x<<2;

printf(“a=%d\n”,a); } 2.main() { int x,y=1,z=10; if(y!=0) x=5; printf(“x=%d\t”,x); x=1; if(z<0) if(y>0) x=3; else x=5; printf(“x=%d\n”,x); if(z=y<0) x=3; else if(y==0) x=5; else x=7; printf(“x=%d\t”,x); printf(“z=%d\n”,z); } 3.main( ) { char s[20]=“I like it.”,t[20]=“Are you?”,c[20]; int i=0; while(s[++i]!=‘\0’) t[i]=s[i]; t[i]=0; printf(“string s:%s\n”,s); printf(“string t:%s\n”,t); } 4.int i=5; main( ) { int i=3; { int i=10; i++; printf(“%d\n”,i);

c语言期末考试试题

一、单项选择题。(每题1分,共20分) 1. C程序的基本单位是:() A.子程序 B.程序 C.子过程 D.函数 2.在C语言中,非法的八进制是:() A.016 B.018 C.017 D.02 3. 不是C语言实型常量的是:() A.55.0 B.0.0 C.55.5 D.55e2.5 4 .字符串“xyzw”在内存中占用的字节数是:() A.6 B.5 C.4 D.3 5. 若已定义f,g为double类型,则表达式:f=1,g=f+5/4的值是:() A.2.0 B.2.25 C.2.1 D.1.5 D.1.5 D.1.5 D.1.5 6. 若有语句char c1=`d`,c2=`g`;printf(“%c,%d\n”,c2- `a`,c2-c1);则输出结果为:() (a的ASCII码值为97) A.M,2 B.G,3 C.G,2 D.D,g 7. 使用语句scanf(“a=%f,b=%d”,&a,&b);输入数据时,正确的数据 输入是:() A.a=2.2,b=3 B.a=2.2 b=3 C.2.2 3 D.2.2,3 8.表示关系12<=x<=y的C语言表达式为:() A.(12<=x)&(x<=y) B. (12<=x)&&(x<=y) C. (12<=x)|(x<=y) D.(12<=x)||(x<=y) 9.设x=1,y=2,m=4,n=3,则表达式x>y?x:mc4)后,s,t的值为:() A.1,2 B.1,1 C.0,1 D.1,0 12. 语句for(a=0,b=0;b!=100&&a<5;a++)scanf(“%d”,&b); scanf最多可执行次数为:() A.4 B.6 C.5 D.1 13. 对于for(s=2;;s++)可以理解为:()

大学C语言期末考试习题集(带详解答案)

一、单项选择题 1.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从 C开始执行。 A) 程序中第一条可执行语句 B) 程序中第一个函数 C) 程序中的main函数 D) 包含文件中的第一个函数 3、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B)。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 A.-a1 B.a[i] C.a2_i D.int t 5~8题为相同类型题 考点:标识符的命名规则 (1)只能由字母、数字、下划线构成 (2)数字不能作为标识符的开头 (3)关键字不能作为标识符 选项A中的“-”,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3) 6.下列C语言用户标识符中合法的是( B)。 A)3ax B)x C)case D)-e2 E)union 选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1); 7.下列四组选项中,正确的C语言标识符是(C)。 A) %x B) a+b C) a123 D) 123 选项A中的“%”,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2) 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai

大学大一C语言程序设计期末考试试卷和答案

四川师范大学计算机科学学院 2012~2013学年度第二学期期末考试 C 语言程序设计试卷 试卷A 答卷说明: 1、 本试卷共6页,答题纸3页,4个大题,35个小题,满分100 分,120分钟完卷。 2、 闭卷考试,所有的答案都必须写在答题纸上,判卷以答题纸上 答案为准。 3、 本试卷适用于2011级1、2、3班。 一、 单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的 序号填在题干的括号内。每小题1分,共20分) 1、 在C 语言中,下列标识符中合法的是( ) A). -int B). in1_3 C). A_B!D D). const 2、 不属于C 语言基本数据类型的是( ) A). int B). union C). char D). unsigned 3、 下面是对宏定义的描述。不正确的是( ) A). 宏不存在类型问题,宏名无类型,它的参数也无类型 B). 宏替换不占用运行时间 C). 宏替换只是字符串的简单替代 D). 宏替换时先检查类型,类型一致时才可以替换 4、 C 语言中,″\\xfds ″在内存中占用的字节数是( ) __________________学院__________级___________班 姓名_______________ 学号_______________ ………………………………(密)………………………………(封)………………………………(线)……………………………… 密 封 线 内 答 题 无 效

A).3 B).4C).5D).6 5、设int x;则执行printf(″%x\n″,~x^x);的结果是() A). ffffffff B). ff C).0D). 1 6、对于while语句,错误的说法是() A).用条件控制循环体的执行次数B).循环体至少要执行一次 C).循环体有可能一次也不执行D).循环体中可以包含若干条语句 7、执行下列语句后输出的结果是() int a=8,b=7,c=6; if(ac){a=c;c=b;} printf("%d,%d,%d\n",a,b,c); A).6,7,7B).6,7,8C).8,7,6D).8,7,8 8、设int a=9,b=20;则printf(″%d,%d\n″,a--,--b);的输出结果是() A).9,19B).9,20C).10,19D).10,20 9、设static char x[ ]=″12345″,y[ ]={′1′,′2′,′3′,′4′,′5′,′\0′};那么() A).x数组的长度等于y数组的长度B).x数组的长度大于y数组的长度 C).x数组的长度少于y数组的长度D).x数组与y数组的存储区域相同 10、设int i,x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是() for(i=0;i<3;i++) printf(″%d″,x[i][2-i]); A).147B).159C).357D).369 11、执行完下列语句后,n的值是() int n; for (n=0 ; n<100 ; n=2*n+1); A).125B).126 C).127D).128 12、有以下语句:int a=6;a+=a-=a*a;printf(“%d”,a);输出结果() A).–132 B).–60 C). -24 D). 0 13、为了连接两个字符串s1与s2,应当使用() A). strcat( s1,s2 ) B). strcpy( s1, s2 ) C). strlen( s1, s2 ) D). strcmp( s1, s2 ) 14、设int a,*p;则语句p=&a;中的运算符“&”的含义是() A).位与运算B).逻辑与运算C).取指针内容D).取变量地址 15、下面输出的结果为() i nt a=13, b=64; printf(“%d\n”, !a || (b>>3) );

2019年C语言期末考试题与答案

1、给定n个数据, 求最小值出现的位置(如果最小值出现多次,求出第一次出现的位置即可)。 最大值第三行i<=n五行k+1 2、编写程序求无理数e的值并输出。计算公式为: e=1+1/1!+1/2!+1/3!+......+1/n! 当1/n!<0.000001时e=2.718282。 3、求一批数中最大值和最小值的积。 4、某一正数的值保留2位小数,对第三位进行四舍 五入。 5、从键盘上输入任意实数x,求出其所对应的函数值。 z=(x-4)的二次幂(x>4) z=x的八次幂(x>-4) z=z=4/(x*(x+1))(x>-10) z=|x|+20(其他)6、求出N×M整型数组的最大元素及其所在的行坐标 及列坐标(如果最大元素不唯一,选择位置在最前面 的一个)。 例如:输入的数组为: 1 2 3 4 1 5 6 12 18 9 10 11 2 求出的最大数为18,行坐标为2,列坐标为1。 7、求一个n位自然数的各位数字的积。(n 是小于10的自然数) 8、计算n门课程的平均值,计算结果作为函数值返回。例如:若有5门课程的成绩是:92,76,69,58,88,则函数的值为76.599998。 9、求一批数中小于平均值的数的个数。

10、编写函数判断一个整数m 的各位数字之和能否被7整除, 可以被7整除则返回1,否则返回0。调用该函数找出 100~200之间满足条件的所有数。 11、请编一个函数void fun(int tt[M][N],int pp[N]), tt 指向一个M 行N 列的二维数组,求出二维数组每列 中最大元素,并依次放入pp 所指一维数组中。二维 数组中的数已在主函数中赋予。 12、编写函数fun 用比较法对主程序中用户输入的具有10 个数据的数组a 按由大到小排序,并在主程序中输出 排序结果。 13、编写main 程序调用函数fact 求解从m 个元素选n 个元 素的组合数的个数。计算公式是:组合数=m!/(n!.(m-n)!)。 要求:m 不能小于n ,否则应有容错处理。 说明:函数fact(x)的功能是求x!。 14、找出一批正整数中的最大的偶数。 15、实现两个整数的交换。 例如:给a 和b 分别输入:60和65,输入为: a=65 b=60 16、将字符串中的小写字母转换为对应的大写字母, 其它字符不变。 17、求一个四位数的各位数字的立方和。 18、求一组数中大于平均值的数的个数。 例如:给定的一组数为1,3,6,9,4,23,35,67,12,88时,函 数值为3。 19、对任意输入的 x ,用下式计算并输出 y 的值。 5 x<10 y= 0 x=10 -5 x>10

大一c语言期末考试题

大一c语言期末考试题 C语言期末考试试题附答案 一选择题(7分,每小题0.5分) 1.C语言源程序的基本单位是()。 A 过程 B 函数 C 子程序 D 标识符 2.下列程序的输出结果是()。 main( ) { int a=7,b=5; printf("%d\n",b=b/a); } A 5 B 1 C 0 D不确定值 3.假设变量a,b均为整型,表达式(a=5,b=2,a>b?a++:b++,a+b)的值是()。 A 7 B 8 C 9 D 2 4.设a为int型变量,执行下列赋值语句后,a的取值分别是()。 a=125.534; a=(int)125.521%4; a=5<<2; A 125,31,1 B 125,1,20 C 125,31,20 D 125.534,2,20 5.设有如下程序段,下面描述中正确的是()。 int k=10; while(k=0) k=k-1; A 循环执行一次B循环是无限循环C循环体语句一次也不执行D循环体语句执行一次 6.以下程序的输出结果为()。 int i; void prt( ) { for(i=5;i<8;i++) printf("%c",'*'); printf("\t"); } main( ) { for(i=5;i<=8;i++) prt( ); } A *** B *** *** *** *** C *** *** D * * * 7.在C语言程序中,以下说法正确的是()。 A函数的定义可以嵌套,但函数的调用不可以嵌套 B函数的定义不可以嵌套,但函数的调用可以嵌套 C函数的定义和函数的调用都不可以嵌套 D函数的定义和函数的调用都可以嵌套 8.以下函数调用语句中含有()个实参。 func((e1,e2),(e3,e4,e5)); A 2 B 3 C 5 D 语法错误 9.以下程序的输出结果为()。 #define ADD(x) x*x main( ) { int a=4,b=6,c=7,d=ADD(a+b)*c;

江苏大学大一c语言期末复习题汇总

选择题 1.下列字符序列中,不可用作C语言标识符的是()。 A.abc123 B.no.1 C._123_ D._ok 2.请选出可用作C语言用户标识符的一组标识符()。 A.void B.a3_b3 C.For D.2a define _123 -abc DO WORD IF Case sizeof 3.不属于C语言关键字的是()。 A.int B.break C.while D.character 4.以下不能定义为用户标示符的是()。 A.scanf B.V oid C._3com_ D.int 5.C语言程序的基本单位是()。 A.程序行B.语句C.函数D.字符 6.以下说法中正确的是()。 A.C语言程序总是从第一个定义的函数开始执行 B.在C语言程序中,要调用的函数必须在main( )函数中定义 C.C语言程序总是从main( )函数开始执行 D.C语言程序中的main( )函数必须放在程序的开始部分 7.以下选项中,合法的用户标识符是()。 A.long B._2abc C.3dmax D.A.dat 8.已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示 的字符常量’\101’是()。 A.字符A B.字符a C.字符c D.非法的常量 9.以下选项中,正确的字符常量是()。 A.”F”B.’\\’’C.’W’D.’’ 10.下列变量定义中合法的是 A.short _a=1-.le-1; B.double b=1+5e2.5; C.long do=0xfdaL; D.float 2_and=1-e-3; 11.为了避免嵌套的if-else语句的二义性,C语言规定else总是与()组成配对关系。 A.缩排位置相同的if B.在其之前未配对的if C.在其之前未配对的最近的if D.同一行上的if 12.下列运算符中优先级最高的是()。 A.< B.&& C.+ D.!= 13.判断char型变量s是否为小写字母的正确表达式是()。 A.’a’ <= s<=’z’B.(s>=’a’) & (s<=’z’) C.(s>=’a’) && (s<=’z’) D.(’a’<=s) and (’z’>=s) 14.已知x=45, y=’a’, z=0; 则表达式(x>=z && y<’z’ || !y)的值是()。 A.0 B.语法错 C.1 D.“假”

大一上学期C语言期末复习总结和模拟试题带答案

易错点 C语言中易犯的错误 对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误.看着有错的程序,不知该如何改起,一些C编程时常犯的错误,写给各位学员以供参考. ******************************** ******************************** ************************ 1.书写标识符时,忽略了大小写字母的区别. main() { int a=5; printf("%d",A); } 编译程序把a和A认为是两个不同的变量名,而显示出错信息. C认为大写字母和小写字母是两个不同的字符.习惯上,符号常量 名用大写,变量名用小写表示,以增加可读性. ******************************** ******************************** ************************ 2.忽略了变量的类型,进行了不合法的运算. main() { float a,b; printf("%d",a%b); } %是求余运算,得到a/b的整余数.整型变量a和b可以进行求余运算,而实型变量则不允许进行"求余"运算. ******************************** ******************************** ************************ 3.将字符常量与字符串常量混淆. char c; c="a"; 在这里就混淆了字符常量与字符串常量,字符常量是由一对单 引号括起来的单个字符,字符串常量是一对双引号括起来的字符序 列.C规定以"\"作字符串结束标志,它是由系统自动加上的,所 以字符串"a"实际上包含两个字符:'a'和'\',而把它赋给一 个字符变量是不行的. ******************************** ******************************** ************************ 4.忽略了"="与"=="的区别. 在许多高级语言中,用"="符号作为关系运算符"等于". 如在BASIC程序中可以写 if (a=3) then … 但C语言中,"="是赋值运算符,"=="是关系运算符.如: if (a==3) a=b; 前者是进行比较,a是否和3相等,后

大一C语言期末考试题

大一C语言期末考试题 悬赏分:40 |解决时间:2010-6-29 14:28 |提问者:345387547 1. 数组int a[3][5]; 共定义了_______________个元素。 2. 有float f= 3.1415927; 则printf(“%5.4f”, f );输出的结果是 _______________。 3. 下面程序的功能是:输出100以内(不包含100)能被3整除且个位数为6的所有整数,请填空。 main( ) { int i; for(i=1; _______________; i++) if (_______________) printf("%d", i); } 4. 设有“int x=2, y”说明,则逗号表达式“y=x+5,x+y”的值是 _______________ 5. 以下是使用指针,进行字符串复制的程序,请填空。 main() { char a[]= “Tsinghua University”, b[30], *p1,*p2; p1=a; p2=b; for(; *p1!= _______________; p1++, p2++) _______________=_______________; *p2= ______________; printf(“string a is:%s\n”,a); printf(“string b is:%s\n”,b); } 6. 下面程序用冒泡法对数组a进行降序排序,请填空。 main() { int a[5]={4,7,2,5,1}; int i,j,m; for(i=0;i<4;i++) for(j=0;j<_______________;j++) if( _______________< _______________ ) { m=a[ j]; a[ j]=a[ j+1]; a[ j+1]= m; } for(i=0;i<5;i++) printf("%d ",a[i]); } 7. 函数fun的功能是:使一个字符串按逆序存放,请填空。 void fun (char str[]) { char m; int i,j; for(i=0,j=strlen(str);i<_______________;i++,j--)

上海海事大学(C语言期末)上机题库

试卷编号:9688 所属语言:C语言 试卷方案:期中考试 试卷总分:100分 共有题型:5种 一、填空共15题(共计15分) 第1题(1.0分)题号:528 设a、b、c为整型数, 且a=2、b=3、c=4, 则执行完以下语句: a*=16+(b++)-(++c); 后,a的值是【1】. 答案: =======(答案1)======= 28 第2题(1.0分)题号:78 已知 i=5;写出语句 i+=012; 执行后整型变量 i 的十进制值是【1】. 答案: =======(答案1)======= 15 第3题(1.0分)题号:510 若a是int型变量,则计算表达式 a=25/3%3 后a的值为【1】. 答案: =======(答案1)======= 2 第4题(1.0分)题号:437 以下程序的输出结果为【1】, #include "stdio.h" main(){int a=010,j=10;printf("%d,%d\n",++a,j--);}

答案: =======(答案1)======= 9,10 第5题(1.0分)题号:431 执行下面两个语句,输出的结果是【1】,char c1=97,c2=98;printf("%d %c",c1,c2); 答案: =======(答案1)======= 97 b *第6题(1.0分)题号:293 getchar()函数只能接收一个【1】. 答案: =======(答案1)======= 字符 第7题(1.0分)题号:440 设a=3,b=4,c=5,则表达式!(a+b)+c-1&&b+c/2的值为【1】. 答案: =======(答案1)======= 1 第8题(1.0分)题号:95 已知a=13,b=6, a&&b的十进制数值为【1】. 答案: =======(答案1)======= 1 第9题(1.0分)题号:306 当a=1,b=2,c=3时,执行以下程序段后b=【1】.

2013年c语言期末考试题

1、给定n 个数据, 求最小值出现的位置(如果最小值 出现多次,求出第一次出现的位置即可)。 最大值 第三行i<=n 五行k+1 2、编写程序求无理数e 的值 并输出。计算公式为: e=1+1/1!+1/2!+1/3!+......+1/n! 当1/n!<0.000001时e=2.718282。 3、求一批数中最大值和最小值的积。 4、某一正数的值保留2位小数,对第三位进行四舍 五入。 5、从键盘上输入任意实数x,求出其所对应的函数值。 z=(x-4)的二次幂(x>4) z=x 的八次幂(x>-4) z=z=4/(x*(x+1))(x>-10) z=|x|+20(其他) 6、求出N ×M 整型数组的最大元素及其所在的行坐标 及列坐标(如果最大元素不唯一,选择位置在最前面 的一个)。 例如:输入的数组为: 1 2 3 4 15 6 12 18 9 10 11 2 求出的最大数为18,行坐标为2,列坐标为1。 7、求一个n 位自然数的各位数字的积。(n 是小于10的 自然数) 8、计算n 门课程的平均值,计算结果作为函数值返回。 例如:若有5门课程的成绩是:92,76,69,58,88, 则函数的值为76.599998。 9、求一批数中小于平均值的数的个数。 10、编写函数判断一个整数m 的各位数字之和能否被7整除, 可以被7整除则返回1,否则返回0。调用该函数找出 100~200之间满足条件的所有数。 11、请编一个函数void fun(int tt[M][N],int pp[N]), tt 指向一个M 行N 列的二维数组,求出二维数组每列 中最大元素,并依次放入pp 所指一维数组中。二维 数组中的数已在主函数中赋予。

C语言期末考试复习题及答案

C语言期末考试复习题及答案 一、选择题:下列各题A)、B)、C)、D)四个选项中只有一个是正 确的,请将正确的选项涂写在答案纸上。答在试卷上不得分。 (1)C语言规定:在一个源程序中,main函数的位置 D 。 A)必须在最后B)必须在系统调用的库函数的后面。 C)必须在最开始。。D)可以任意 (2) C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符 A 。 A)必须为字母或下划线。。B)必须为下划线。 C)必须为字母D)可以是字母、数字和下划线中的任一种字符。 (3)下面四个选项中,均是正确的八进制数或十六进制数的选项是 B 。 A)-10 0x8f -011 B) 010 -0x11 0xf1 C) 0abc -017 0xc D) 0a12 -0x123 -0xa (4) C语言中int型数据在内存中占两个字节,则unsegned int取值范围是 A 。 A)0 ~ 65535 B)0 ~ 32767 C)-32767 ~ 32768 D)-32768 ~ 327687 (5) 若有定义:int a = 7; floa x = , y = ; 则表达式x + a % 3 * (int) (x + y) % 2/4 的值是 D 。 A) B) 0.00000 C) D) (6)已知ch是字符型变量,下面不正确的赋值语句是 B 。 A)ch = 5 + 9 ; B) ch= ' a + b '; C) ch = ' \ 0 '; D) ch= '7' + '6' ; (7) 设x , y和z是int型变量,且x = 3, y = 4 , z = 5 则下面表达式中值为0的

相关主题