c语言复习题(有答案)

c语言复习题(有答案)
c语言复习题(有答案)

思考题

不仅要会做这些题,更重要的是要掌握其相关知识点

一、一般填空题

1-1、调用fopen函数打开一文本文件,在“打开模式”这一项中,为输出(写)而打开需填入【1】. 1-2、调用fopen函数打开一文本文件,在“打开模式”这一项中,为追加而打开需填入【1】.

1-3、fopen函数的原形在头文件【1】中.

1-4、getchar函数的原形在头文件【1】中.

1-5、sqrt函数的原形在头文件【1】中.

1-6、如果函数不要求带回值,可用【1】来定义函数返回值为空.

答案:w或w+;a或a+;stdio.h ; stdio.h ; math.h ;void .

2-1、字符串“\1011234\\at”的长度(字符数)是【1】.

2-2、字符串“abc\103\\bcd”的长度(字符数)是【1】.

2-3、字符串“1\\t\x43\abx44”的长度(字符数)是【1】.

2-4、“a“在内存中占【1】个字节.

2-5、‘a’在内存中占【1】个字节.

2-6、“\71“在内存中占【1】个字节.

2-7、一维数组下标的最小值是【1】;数组char a[]=“china” ;在内存应占【1】个字节。

答案:8; 8; 9; 2;1;2 ;0;6.

3-1、设x=(5>1)+2, x的植为【1】.

3-2、表达式‘B’+15+‘\x41’+011+0x10的值是【1】.

3-3、表达式‘b’+5+‘\x42’+011+0x10的值是【1】.

答案:3;171;194;

4-1、假设所有变量都为整型,表达式(a=2,b=5,a>b?a++:b++,a+b)的值是【1】.

4-2、if(!a)中的表达式!a等价于【1】.

4_3、已知a=1,b=2,c=3,执行if(a>b>c) b=a;else b=c;a=4;b=8;后,b的值是【1】.

答案:8;a==0;8;

5-1、若所用变量都已定义,下列程序段的执行结果是【1】.

for(i=1;i<=5;i++);printf(“OK\n”);

5-2、执行语句char s[3]=”ab”,*p;p=s;后,*(p+2)的值是【1】.

5-3、若有以下定义和语句:int a[4]={0,1,2,3},*p; p=&a[2]; ,则*--p的值是【1】.

5-4、下列程序的输出结果是【1】,main(){int a=011;printf(“%d\n”,++a);}

答案:OK;’\0’;1;10

6-1、若宏定义为:#define y(x) 2+x, 则表达式a=3*y(3)的值为【1】.

6-2、若宏定义为:#define y(x) 2+x, 则表达式a=4*y(2)的值为【1】.

6-3、若宏定义为:#define y(x) 2/x, 则表达式a=4+3*y(3)的值为【1】.

答案:9;10;6 .

二、单项选择题

1-1、若以"a+"方式打开一个已存在的文件,则以下叙述正确的是()。

A:文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作

B:文件打开时,原有文件内容不被删除,位置指针移到文件开头,可作重写和读操作

C:文件打开时,原有文件内容被删除,只可作写操作

D:以上各种说法皆不正确

1-2、若执行fopen函数时发生错误,则函数的返回值是()。

A:地址值 B:0 C:1 D:EOF

1_3、若要打开A盘上user子目录下名为abc.txt的文件进行读、写操作,符合要求的是()。

A:fopen(“A:\user\abc.txt”, “r”) B:fopen(“A:\\user\\abc.txt”, “r+”) C:fopen(“A:\user\abc.txt”, “rb”) D:fopen(“A:\\user\\abc.txt”, “w”)

答案:A;B;B;

2-1、以下属于c语言预先规定的保留字是()。

A:int B:score C:aver D:sum

2-2、下列运算符中优先级最高的是()。

A:< B:+ C:&& D:!=

2-3、下面不正确的字符串常量是()。

A:‘abc’ B:’’12’12” C:”0” D:”“

2-4、运算对象必须是整型的运算符是()。

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

2-5、下面错误的常量是()。

A: 0xff B:1.2e0.5 C:2L D:’\72’

2-6、下列变量定义语句中,正确的是()。

A: char: a b c; B:char a; b; c; C:int x;z; D:int x,z;

2-7、sizeof(float)是()。

A:一个双精度型表达式 B:一个整型表达式 C:一种函数调用 D:不合法表达式

2_8、c语言的注释语句开头必须是()。

A:/ B:* C:/* D:’

2_9、设以下变量均为int类型,则值不等于7的表达式是()。

A:(x=y=6,x+y,x+1) B:(x=y=6,x+y,y+1) C:(x=6,x+1,y=6,x+y) D:(y=6,y+1,x=y,x+1)

2_10、C程序的语句结束符是()。

A:; B:: C:. D:换行

2_11、C语言中用于结构化程序设计的三种基本结构是()。

A:顺序结构、选择结构和循环结构 B:if、switch、break

C:for、while、do-while D:if、for、continue

2_12、C语言中,int、char和short三种类型的数据在内存中占用的字节数()。

A:由用户自己定义 B:均为两个字节 C:是任意的 D:由所用机器的字长决定

答案:A;B;A;A;B;D;B;C;C; A;A;D;

3-1、在一个c程序中()。

A:main函数必须出现在所有函数之前 B:main函数的位置没有特别限制

C:main函数必须出现在所有函数之后 D:main函数必须出现固定位置

3-2、已知函数原形声明为:float www(char a, char b); 该函数的类型为()。

A:指向字符型的指针 B:字符型 C:浮点型 D:指向浮点型的指针

3-3、与实际参数为整型数组名相对应的形式参数不可以定义为()。

A:int a[]; B:int *a; C:int a; D:int a[3];

3_4、全局变量的定义不可能在()。

A:函数内部 B:函数外面 C:文件外面 D:最后一行

3_5、putchar函数可以向终端输出一个()。

A:整型变量表达式的值 B:实型变量的值 C:字符串 D:字符或字符型变量值

3_6、数组名作为实际参数传给函数时,数组名被处理为()。

A:数组的长度 B:数组的元素个数 C:数组的首地址 D:数组中各元素的值

3_7、C语言中,当调用函数时()。

A:实参和虚参本身各占一个独立的存储单元 B:实参和虚参可以共用存储单元

C:实参和虚参可以由用户指定是否共用存储单元 D:由计算机自动确定是否共用存储单元

3_8、调用函数时,实参和虚参必须保持一致的是()。

A:在个数上 B:在类型上 C:在顺序上 D:在个数、类型、顺序上

答案:B;C;D;A;D;C;A;D;

4-1、int a=3,b=2,c=1; if(a>b>c)a=b; else a=c; 则a的值为()。

A:3 B:2 C:1 D:0

4-2、下列程序的输出为()。

main()

{ int y=10; while(y--); printf("y=%d\n",y); }

A: y=0 B: while构成无限循环 C: y=1 D: y=-1

4-3、假设所有变量都为整型,表达式(a=2,b=5,a>b?a++:b++,a+b)的值是().

A: 7 B:8 C: 9 D: 2

4-4、以下程序的输出结果是()。

main()

{ int i=010, j=10 ; printf("%d,%d\n",++i,j--); }

A: 11,10 B:9,10 C: 10,9 D: 10,9

4_5、设a=2,且a定义为整型变量,执行语句a+=a-=a*=a;后,a的值为()。

A: 12 B: 144 C: 0 D: 132

4-6、int a=1,b=2,c=3; if(a>c)a=b; a=c;c=b; 则c的值为()。

A:1 B:2 C:3 D:不一定

4-7、若变量a与i已正确定义,且i已正确赋值,合法的语句是()。

A: a==1 B:++i; C:a=a++=5; D:a=int(i);

4_8、strlen(“12\0345\n”)与strlen(“12\0845\n”)的测试结果分别是。

A:相同 B:2和5 C:5和2 D:5和5

4_9、设 char s[10]="\ta\017bc";则数组s所占的字节数是()。

A:9 B:10 C:6 D:7

4_10、设 char *s="\ta\017bc";则指针变量s指向的字符串所占的字节数是()。

A:9 B:5 C:6 D:7

4_11、若i=3,则printf("%d",-i++);输出的值和i的值分别为()。

A:相同 B:-3和4 C:5和2 D:5和5

答案:C;D;B;B; C; B;B;C;B;C;B;

5-1、一维数组定义的格式为:类型说明符数组名()。

A:[常量表达式] B:[整型表达式] C:[整型常量] 或[整型表达式] D:[整型常量]

5-2、以下能正确定义数组并正确赋初值的邮局语句是()。

A:int N=5,b[N][N]; B: int a[1][2]={{1},{3}};

C: int c[2][]={{1,2},{3,4}}; D: int d[3][2]={{1,2},{34}};

5_3、以下不正确的定义语句是()。

A:double x[5]={2.0,4.0,6.0,8.0,10.0}; B: int y[5]={0,1,3,5,7,9};

C: char c1[]={‘1’,’2’,’3’,’4’,’5’}; D: char c2[]={‘\x10’,’\xa’,’\x8’};

5_4、在C语言中,引用数组元素时,其数组下标的数据类型允许是()。

A: 整型常量 B:整型表达式 C: 整型常量或整型表达式 D: 任何类型的表达式

5_5、若有说明:int a[10];则对a数组元素的正确引用是()。

A:a[10] B:a[3,5] C:a(5) D:a[10-10]

3_6、下列数组定义中,正确的是()。

A:int a[][4]; B:int a[][]; C:int a[][][5]; D:int a[3][];

5_7、若有说明:int a[10];则对a数组元素的正确引用是()。

A:a[10] B:a[3,5] C:a(5) D:a[3>1]

答案:A;D;B;C;D;A;D;

6-1、相同结构体类型的变量之间可以()。

A: 相加 B:赋值 C: 比较大小 D: 地址相同

6_2、结构体类型的定义允许嵌套是指()。

A:成员是已经或正在定义的结构体型 B: 成员可以重名

C: 结构体型可以派生 D: 定义多个结构体型

6_3、有如下定义:struct student{char name[20];int age;}wang,*p;p=&wang;,以下不合法的引用为()。

A: p.age B: wang.age C: p->age D: (*p).age

6_4、在定义构造数据类型时,不能()。

A:说明变量 B:说明存储类型 C:初始化 D:末尾不写分号

6_5、当定义一个结构体变量时,系统分配给它的内存是()。

A:各成员所需内存量的总和 B:结构中第一个成员所需内存量

C:结构中最后一个成员所需内存量 D:成员中占内存量最大者所需的容量

6_6、enum a {sum=9,mon=-1,tue};定义了()。

A:枚举变量 B:3个标识符 C:枚举数据类型 D:整数9和-1

6_7、以下各选项企图说明一种新的类型名,其中正确的是()。

A:typedef v1 int; B:typedef v2=int;

C:typedef int v3; D:typedef v4: int;

答案:B;A;A;D;A;C;C;

7-1、若宏定义为:#define y 2+3, 则表达式y*3+3的值为().

A: 14 B:16 C: 18 D: 20

7-2、若宏定义为:#define y 2+3, 则表达式2+y*3的值为().

A: 11 B:13 C: 15 D: 17

7_3、有宏定义为#define Y(a,b) a+b ,则表达式2+Y(2,3)*3的值为().

A: 11 B: 13 C: 15 D: 17

答案:A;B;B;

8-1、如有int *p,a=5,b; 定义,则以下正确的程序段为()。

A: p=&b;scanf(“%d’,&p); B: p=&b; scanf(“%d’,*p);

C: scanf(“%d’,&b); p=b; D: p=&b;p=a;

8-2、若有语句:int a[3][4],*p[3]={a[0],a[1],a[2]}; 不能表示a[2][3]的元素的是()。

A: *(*(a+2)+3) B: *(*(p+2)+3) C: (p[2]+3) D: (*(p+2))

8_3、p1,p2为指向浮点的指针变量,则下列运算错误的是()。

A: *p1-*p2 B: p1++ C: *p1%*p2 D: p1-p2

8_4、有以下定义:int a[2][3];,则对数组元素的正确引用()是。

A: *(*(a+i)+j) B: (a+i)[j] C: *(a+i+j) D: a[i]+j

8_5、若有定义:int (*p)();,则该指针为()。

A: 指向整型的指针 B: 指向字符型的指针 C: 指向整型函数的指针 D: 指向字符型函数的指针

8_6、下列正确的定义是()。

①int i,*p=&i;②int *p=&i,i;③int *p,i;p=&i;④int *p,i;p=i;⑤int *p,i,p=&i;

A: ①③ B: ②④ C:②⑤ D:④①

答案:D;D;C;A;C;A;

三、多项选择题

1_1、下列选项中合法的标识符有()。

A: good_morning B:main C: stdio.h D: 8abc

答案:AB;

1_2、下列选项中合法的用户标识符有()。

A: page B:short C: _3com D: int

答案:AC;

1_3、下列选项中合法的用户标识符有()。

A: return B:f2_G3 C: a3-3 D: abc

答案: BD;

1_4、以下叙述正确的是()。

A:C语言严格区分大小写英文字母。 B:C语言用“;”作为语句分隔符。

C:C程序书写格式自由:一行内可以写几个语句,一个语句也可以写在几行。

D:可以使用/*…*/对C程序中的任何部分作注释。

答案:ABCD;

1_5、下列对逻辑运算符两侧的运算对象的数据类型描述不正确的是()。

A: 只能是0或1; B:只能是0或非0正数;

C: 可以是整型或字符型数据; D:可以是任何类型的数据;

答案:AB;

1_6、以下对switch语句和break语句中描述错误的有()。

A: 在switch语句中必须使用break语句; B:break语句只能用于switch语句;

C: 在switch语句中可以根据需要使用或不使用break语句; D:break语句是switch语句的一部分;

答案:ABD;

2_1、已定义c为字符型变量,则下列语句中错误的是()。

A: c=’97’; B:c=”97” ; C: c=97; D: c=”a”;

答案:ABD;

3_1、以下正确的是()。

A:预处理命令行必须以‘#’开始。 B:以‘#’开始的都是预处理命令行。

C:程序在执行过程中对预处理命令行进行处理。 D:#define ABCD是正确的宏定义。

答案:ABD;

4_1、在定义int a[2][3]之后,对a[i][j]的正确引用有()。

A: a[0][2] B: a[1,3] C: a[1>2][!1] D: a[2][0]

答案:AC;

4_2、以下对二维数组a正确初始化的是()。

A:static char word[]=’Turbo\0’; B:static char word[]={‘T’,’u’,’r’,’b’,’o’,’\0’};

C:static char word[]={“Turbo\0”}; D:static char word[]=”Turbo\0”;

答案:BCD;

5_1、以下4个选项中可以看作是一条语句的有()。

A: {;} B: a=0,b=0,c=0 ; C: if(a>0); D: if(b==0) m=1;n=2;

答案:ABC;

5_2、若a、b、c、d都是int型变量且已赋初值0,则正确的赋值语句是()。

A: a=b=c=d=100 ; B: d++; C: c+b; D: d=(c=22)-(b++);

答案:ABD;

5_3、设有以下定义:int a=0;double b=1.25;char c=’A’;

#difine d 2 ,则正确的语句是()。

A: a++; B: b++; C: c++; D: d++;

答案:ABC;

6_1、以下述说中正确的是()。

A:一个c源程序可以由一个或多个函数组成。 B:一个c源程序必须包含一个main()函数。

C:c源程序的基本组成单位是函数。 D:在c源程序中,注释说明只能位于一条语句的最后。答案:ABC;

6_2、以下对C语言中的函数描述不正确的是()。

A:可以嵌套定义,不可以嵌套调用。 B:不可以嵌套定义,可以嵌套调用。

C:可以嵌套定义,也可以嵌套调用。 D:嵌套定义和嵌套调用都不允许。

答案:ACD;

四、程序填空

1、功能:计算平均成绩并统计90分以上人数。成绩数据以一负数作为结束标志。

#include

void main(void)

{

int n,m;float grade,average;

/***********SPACE***********/

average=n=m=【?】;

while(1)

{

/***********SPACE***********/

【?】("%f",&grade);

if(grade<0) break;

n++;

average+=grade;

/***********SPACE***********/

if(grade<90)【?】;

m++;

}

if(n) printf("%.2f%d\n",average/n,m);

}

答案: 1). 0 或 0.0 2). scanf 3). Continue

2、功能:找出一维数组中最大值和此元素的下标,数组元素的值由键盘输入。

#include "stdio.h"

void main()

{

int a[10],*p,*s,i;

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

/***********SPACE***********/

scanf("%d", 【?】);

/***********SPACE***********/

for(p=a,s=a;【?】<10;p++)

if(*p>*s) s=p;

/***********SPACE***********/

printf("max=%d,index=%d\n",【?】,s-a);

}

答案:1). a + i 或 &a[i] 2). p-a 或 -a+p 3). *s 3、功能:输入学生成绩并显示。

# include

struct student

{

char number[6];

char name[6];

int score[3];

} stu[2];

void output(struct student stu[2]);

void main(void)

{

int i, j;

/***********SPACE***********/

for(i=0; i<2; 【?】)

{

printf("请输入学生%d的成绩:\n", i+1);

printf("学号:");

/***********SPACE***********/

scanf("%s", 【?】.number);

printf("姓名:");

scanf("%s", stu[i].name);

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

{

printf("成绩 %d. ", j+1);

/***********SPACE***********/

scanf("%d", 【?】.score[j]);

}

printf("\n");

}

output(stu);

}

void output(struct student stu[2])

{

int i, j;

printf("学号姓名成绩1 成绩2 成绩3\n");

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

{

printf("%-6s%-6s", stu[i].number, stu[i].name);

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

printf("%-8d", stu[i].score[j]);

printf("\n");

}

}

答案:

1). i++ 或 ++i 或 i=i+1 或 i+=1

2). stu[i]

3). &stu[i]

4、功能:输入两个整数x,y,请把这两个数由小到大输出。

#include

void main(void)

{

int x,y,t;

/***********SPACE***********/

scanf("%d%d",【?】);

/***********SPACE***********/

if (【?】)

/***********SPACE***********/

{【?】}

printf("small to big: %d %d\n",x,y);

}

答案:

1). &x,&y 或 &y,&x

2). x>y 或 x>=y 或 y

3). t=y;y=x;x=t; 或 t=y,y=x,x=t; 或 t=x;x=y;y=t; 或 t=x,x=y,y=t;

5、功能:输出结果为:

* * * * *

* * * * *

* * * * *

* * * * *

#include

void main(void)

{

/***********SPACE***********/

static char 【?】={'*','*','*','*','*'};

int i,j,k;

char space=' ';

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

{

printf("\n");

for(j=1;j<=3*i;j++)

/***********SPACE***********/

printf("%1c",【?】);

/***********SPACE***********/

for(k=0;k<【?】;k++)

printf("%3c",a[k]);

}

printf("\n");;

}

答案: 1). a[5] 或 a[] 2). space 或 ' ' 3). 5 或 =4

6、功能:下面函数为二分法查找key值。数组中元素已递增排序,若找到key则返回对应的下标,否则返回-1。

#include

fun(int a[],int n,int key)

{

int low,high,mid;

low=0;

high=n-1;

/***********SPACE***********/

while(【?】)

{

mid=(low+high)/2;

if(key

/***********SPACE***********/

【?】;

else if(key>a[mid])

/***********SPACE***********/

【?】;

else

return mid;

}

return -1;

}

void main(void)

{

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

int b,c;

b=4;

c=fun(a,10,b);

if(c==1)

printf("not found");

else

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

}

答案:1). low<=high 或 high>=low 2). high=mid-1 3). low= mid + 1 7、功能:计算圆周率的近似值。(π/4=1-1/3+1/5-1/7+…)

-------------------------------------------------------*/

#include

#include

void main(void)

{

int s;

/***********SPACE***********/

float n,【?】;

double t;

t=1;pi=0;n=1;s=1;

/***********SPACE***********/

while(【?】>=1e-6)

{

pi+=t;n+=2;s=-s;t=s/n;

}

/***********SPACE***********/

pi*=【?】;

printf("pi=%.6f\n",pi);

}

2 pi fabs(t) 4

五、程序改错

1、功能:编写函数fun求20以内所有5的倍数之积。

#define N 20

#include "stdio.h"

void main(void)

{

int sum;

sum=fun(5);

printf("%d以内所有%d的倍数之积为: %d\n",N,5,sum);

getch();

}

int fun(int m)

{

/**********FOUND**********/

int s=0,i;

for(i=1;i

/**********FOUND**********/

if(i%m=0)

/**********FOUND**********/

s=*i;

return s;

}

答案:

1). int s=1,i;

2). if(i%m==0) 或 if(!(i%m))

3). s*=i; 或 s=s*i; 或 s=i*s;

2、功能:编写一个程序模拟袖珍计算器的加、减、乘、除四则运算。

例如:输入3+5=或5-2=或3*4=或4/2=,求表达式结果。

#include

void main(void)

{

float x,y;

char operate1;

printf("Arithmetic expression\n");

/**********FOUND**********/

scanf("%f",x);

/**********FOUND**********/

while((operate1==getchar())!='=')

{

printf("result=");

scanf("%f",&y);

/**********FOUND**********/

switch(y)

{

case '+':

x+=y;

break;

case '-':

x-=y;

break;

case '*':

x*=y;

break;

case '/':

x/=y;

break;

}

}

printf("%f",x);

getch();

return;

}

答案: 1). scanf("%f",&x); 2). while((operate1=getchar())!='=') 3). switch(operate1)

3、功能:编写函数求2!+4!+6!+8!+10+12!+14!。

#include "stdio.h"

long sum(int n)

{

/**********FOUND**********/

int i,j

long t,s=0;

/**********FOUND**********/

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

{

t=1;

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

t=t*j;

s=s+t;

}

/**********FOUND**********/

return(t);

}

void main(void)

{

printf("this sum=%ld\n",sum(14));

getch();

}

答案:1). int i,j;

2). for(i=2;i<=n;i=i+2) 或 for(i=2;i<=n;i+=2) 或 for(i=2;i<=n;i++,i++)

3). return(s); 或 return s; 或 return (s);

4、功能:找大于m的最小素数

#include

#include

int fun(int m)

{ int i,k;

for(i=m+1;;i++)

/**********FOUND**********/

{ for(k=2;k

/**********FOUND**********/

if(i%k=0) break;

/**********FOUND**********/

if(k

}

}

答案:1). <=

2). ==

3). >

5、功能:统计出若干个学生的平均成绩,最低分以及得最低分的人数。

例如:输入10名学生的成绩分别为92,87,68,56,92,84,67,

75,92,66,则输出平均成绩为77.9,最低高分为56,得最低分

的人数为1人。

#include "stdio.h"

float Min=0;

int J=0;

float fun(float array[],int n)

{

int i;float sum=0,ave;

Min=array[0];

for(i=0;i

{

if(Min>array [i]) Min=array [i];

/**********FOUND**********/

sum=+array [i];

}

/**********FOUND**********/

ave=sum\n;

for(i=0;i

/**********FOUND**********/

if(array [i]=Min) J++;

return(ave);

}

main( )

{

float a[10],ave;

int i=0;

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

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

ave=fun(a,10);

printf("ave=%f\n",ave);

printf("min=%f\n",Min);

printf("Total:%d\n",J);

getch();

}

sum+=array[i]; ave=sum/n; if(array [i]==Min) J++; 6、功能:一个已排好序的一维数组,输入一个数number,要求按原来

排序的规律将它插入数组中.

main( )

{

int a[11]={1,4,6,9,13,16,19,28,40,100};

int temp1,temp2,number,end,i,j;

/***********FOUND***********/

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

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

printf("\n");

scanf("%d",&number);

/***********FOUND***********/

end=a[10];

if(number>end)

/***********FOUND***********/

a[11]=number;

else //是小于或等于最后那个数

{

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

{

/***********FOUND***********/

if(a[i]

{

temp1=a[i];

a[i]=number;

for(j=i+1;j<11;j++) //后面所有的数后移一个位置

{

temp2=a[j];

a[j]=temp1;

temp1=temp2;

}

break;

}

}

}

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

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

}

for(i=0;i<10;i++) end=a[9]; a[10]=number; if(a[i]>number)

六、程序设计

1、功能:编写函数fun计算下列分段函数的值:

x^2+x+6 x<0且x≠-3

f(x)= x^2-5x+6 0≤x<10且x≠2及x≠3

x^2-x-1 其它

#include "stdio.h"

float fun(float x)

{

/**********Program**********/

/********** End **********/

}

void main(void)

{

float x,f;

printf("Input x=");

scanf("%f",&x);

f=fun(x);

printf("x=%f,f(x)=%f\n",x,f);

//yzj();

}

答案: float y;

if (x<0 && x!=-3.0)

y=x*x+x+6;

else if(x>=0 && x<10.0 && x!=2.0 && x!=3.0)

y=x*x-5*x+6;

else y=x*x-x-1;

return y;

2、功能:求一组数中大于平均值的数的个数。

例如:给定的一组数为1,3,6,9,4,23,35,67,12,88时,函数值为3。

#include "stdio.h"

int fun(int a[],int n)

{

/**********Program**********/

/********** End **********/

}

void main(void)

{

int a[10]={1,3,6,9,4,23,35,67,12,88};

int y;

y=fun(a,10);

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

//yzj();

}

答案:

int i,k=0;

float s=0,ave;

for(i=0;i

s+=a[i];

ave=s/n;

printf("%f ",ave);

for(i=0;iave)k++;

return k;

3、功能:编写函数求表达式的和(n的值由主函数输入)。

1-1/2+1/3-1/4+......+1/n

例如:当n=20时,表达式的值为0.668771。(迭代)★

#include "stdio.h"

float sum(int n)

{

/**********Program**********/

/********** End **********/

}

void main(void)

{

int n;

scanf("%d",&n);

printf("sum=%f\n",sum(n));

//yzj();

//getch();

}

答案:

float s=0;

int i,k=1;

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

{ s=s+k*1.0/i;

k=-k;

}

return(s);

4、功能:把20个随机数存入一个数组,然后输出该数组中的最小值。其中确定最小值的下标的操作在fun函数中实现,请给出该函数的定义。

思考:还可有哪3种修改参数的方法?并同时考虑若定义了指向元素的指针,访问元素的4种方法。建议试一试。

#include "stdio.h"

#define VSIZE 20

int vector[VSIZE] ;

int fun(int list[],int size)

{

/**********Program**********/

/********** End **********/

}

void main()

{

int i;

for (i=0;i

{

vector[i]=rand();

printf("Vector[%d]=%6d\n",i,vector[i]);

}

c语言程序设计试题答案

习题7 7.1选择题。 (1)下列对字符串的定义中,错误的是: A 。 A) char str[7] = "FORTRAN"; B) char str[] = "FORTRAN"; C) char *str = "FORTRAN"; D) char str[] = {'F','O','R','T','R','A','N',0}; (2)以下程序段的输出结果是:____D_________ char a[] = "ABCDE" ; char *p = NULL; for (p=a; p main() { static char a[5]; a = "abcde" ; printf("%s\n", a); }

B) #include <> main() { static char a[7]= "goodbye!"; printf("%s\n", a) ; } C) #include <> main() { char a[5] = "abcde"; printf("%s\n", a) ; } D) #include <> main() { static char a[]="abcde"; printf("%s\n", a) ; } (4)阅读下列函数,函数功能为___A_____。 void Exchange(int *p1, int *p2) { int p; p = *p1; *p1 = *p2; *p2 = p; } A)交换*p1和*p2的值B)正确,但无法改变*p1和*p2的值 C)交换*p1和*p2的地址 D)可能造成系统故障

c语言试题及答案

1、以下正确的说法是( B ) (A) 用户若需要调用标准库函数,调用前必须重新定义 (B) 用户可以重新定义标准库函数,若如此,该函数将失去原有含义 (C) 系统根本不允许用户重新定义标准库函数 (D) 用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调 2、以下正确的函数声明形式是( A ) (A) double fun(int x, int y) (B) double fun(int x; int y) (C) double fun(int x, int y); (D) double fun(int x,y); 3、以下正确的函数形式是( D ) (A) double fun(int x, int y) { z=x+y; return z;} (B) fun(int x,y) { int z; return z;} (C) fun(x,y) { int x,y; double z; z=x+y; return z;} (D) double fun(int x, int y) { double z; z=x+y; return z;} 4、以下正确的说法是( A ) 在C语言中 (A) 实参和与其对应的形参各占用独立的存储单元 (B) 实参和与其对应的形参共占用一个存储单元 (C) 只有当实参和与其对应的形参同名时才共占用存储单元 (D) 形参是虚拟的,不占用存储单元 5、若调用一个函数,且此函数中没有return语句,则正确的说法是( A ) 该函数 (A) 没有返回值 (B) 返回若干个系统默认值 (C) 能返回一个用户所希望的函数值 (D) 返回一个不确定的值 6、以下不正确的说法是( B ) C语言规定 (A) 实参可以是常量、变量和表达式 (B) 形参可以是常量、变量和表达式 (C) 实参可以为任意类型 (D) 形参应与其对应的实参类型一致 7、以下正确的说法是( C ) (A) 定义函数时,形参的类型说明可以放在函数体内 (B) return后边的值不能为表达式 (C) 如果函数值的类型与返回值类型不一致,以函数值类型为准 (D) 如果形参与实参的类型不一致,以实参类型为准 8、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( B ) (A) 地址传递 (B) 单向值传递 (C) 由实参传给形参,再由形参传回给实参 (D) 由用户指定传递方式

嵌入式C语言经典笔试题目

嵌入式c语言经典笔试题目 1 .用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1) #define语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2)懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。 3)意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。 4)如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。记住,第一印象很重要。 2 .写一个"标准"宏MIN,这个宏输入两个参数并返回较小的一个。 #define MIN(A,B)((A)<= (B) ? (A) : (B)) 这个测试是为下面的目的而设的: 1)标识#define在宏中应用的基本知识。这是很重要的。因为在嵌入(inline)操作符变为标准C的一部分之前,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。 2)三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码,了解这个用法是很重要的。 3)懂得在宏中小心地把参数用括号括起来 4)我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事? least = MIN(*p++, b); 3.预处理器标识#error的目的是什么? 如果你不知道答案,请看参考文献1。这问题对区分一个正常的伙计和一个书呆子是很有用的。只有书呆子才会读C语言课本的附录去找出象这种问题的答案。当然如果你不是在找一个书呆子,那么应试者最好希望自己不要知道答案。 死循环(Infinite loops) 4.嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢? 这个问题用几个解决方案。我首选的方案是: while(1) { } 一些程序员更喜欢如下方案: for(;;) { } 这个实现方式让我为难,因为这个语法没有确切表达到底怎么回事。如果一个应试者给出这个作为方案,

大学C语言考试试题及答案

精选考试类文档,如果您需要使用本文档,请点击下载! 祝同学们考得一个好成绩,心想事成,万事如意! 大学C语言考试试题及答案 姓名成绩 温馨提示:同学们,经过培训学习,你一定积累了很多知识,现在请认真、仔细地完成这张试题吧。加油! 一单项选择题 1. 在C语言中,以 D 作为字符串结束标志 A)’\n’ B)’ ’ C) ’0’ D)’\0’ 2.下列数据中属于“字符串常量”的是( A )。 A.“a” B.{ABC} C.‘abc\0’ D.‘a’ 若干个字符构成字符串 在C语言中,用单引号标识字符;用双引号标识字符串

选项B,C,分别用{}和’’标识字符串 选项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 6.下列C语言用户标识符中合法的是( B )。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是( C )。 A) %x B) a+b C) a123 D) 123 8、下列四组字符串中都可以用作C语言程序中的标识符的是( A )。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 9.C语言中的简单数据类型包括(D )。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是 C 。 A)2.5 B)2 C)1 D)3 11.如果int a=3,b=4;则条件表达式"a

C语言程序设计期末考试选择题题库

第一章1、一个C程序可能出现的错误有(A)A,以上都包括 B,逻辑错误 C,运行错误 D,语法错误 2、C程序中一般可以包含几个函数(D) A.1个 B.多个 C.0个 D.至少一个 3.C语言属于程序设计语言的哪个类别(B) A.机器语言 B.高级语言 C.面向对象语言 D.汇编语言 4.以下关于C语言描述错误的是(B) A.一个C程序总是从main函数开始执行 B.一个C程序可以包含多个main函数 C.每个语句的最后必须有一个分号 D.C语言的注释符是以"/*"开始并以"*/"结束

5、在调试过程中,逻辑错误是指(C) A.所书写的语句,不符合C的语法。 B.在从obj生成exe文件的过程中,如果函数名书写错误,可能产生的错误。 C.程序的运行结果不符合题目要求。 D.在exe文件的执行过程中,产生运行异常。 第二章 1、16位的二进制数可以表示的整数的范围是(C) A.[-32768,32768] B.[-32767,32768] C.[-32768,32767] D.[-32767,32767] 2、C语言中的实型数据包括(A) A.float和double B.int和float C.float和char D.int和double 3、以下不合法的字符常量是(C) A.'2' B.'A' C.'ab'

4、在以下各组标识符中,均是合法的C语言标识符是(A) A.abc,A_4d,_student,xyz_abc B.auto,12-a,a_b,ab5.x C.A_4d,_student,xyz_abc,if D.abc,a_b,union,scan 5、若有定义:chara;intb;floatc;doubled; 则表达式a*b+d-c值的类型为(A) A.char B.float C.double D.int 6、类型修饰符unsigned不能修饰(D) A.char B.longint C.int D.float 7、若有定义:doublex=1,y; 执行语句,则y的值是(B) A,1 B,2.0

(完整版)C语言试题及答案解析

C语言 一、选择题(第题2分,共20分) 1.一个C程序的执行是从 A 。 A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序文件的第一个函数开始,到本程序main函数结束 D) 本程序的main函数开始,到本程序文件的最后一个函数结束 2.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为 C 。 x=(i=4,j=16,k=32) A) 4 B) 16 C) 32 D) 52 3.设C语言中,一个int型数据在内存中占2个字节,则unsigned int 型数据的取值范围为 C 。 A) 0~255 B) 0~32767 C) 0~65535 D) 0~2147483647 4.设有说明:char w; int x; float y; double z;则表达式w*x+z-y值的数据类型为 D 。 A) float B) char C) int D) double 5. putchar函数可以向终端输出一个 D 。 A) 整型变量表达式 B) 实型变量值 C) 字符串 D) 字符或字符型变量值 6. printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式 B ;如果字符串长度小于5,则输出按方式 C 。 A) 从左起输出该字符串,右补空格 B) 按原字符长从左向右全部输出 C) 右对齐输出该字符串,左补空格 D) 输出错误信息 7.判断char型变量ch是否为大写字母的正确表达式是 C 。 A) ‘A’<=ch<=‘Z’ B) (ch>=‘A’)&(ch<=‘Z’) C) (ch>=‘A’)&&(ch<=‘Z’) D) (‘A’<= ch)AND(‘Z’>= ch) 8.已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是 B 。 if(x>y) z=x; x=y; y=z; A) x=10, y=20, z=30 B) x=20, y=30, z=30 C) x=20, y=30, z=10 D) x=20, y=30, z=20 9.以下程序段______C__. x=-1; do{ x=x*x; } while(!x); A)是死循环 B)循环执行二次 C)循环执行一次 D)有语法错误 10.以下正确的描述是___B____. A)continue语句的作用是结束整个循环的执行

c语言笔试题(答案)(精心整理)

笔试题 一、填空题(每个空4分,共28分) 1)struct tagABC { char name[10]; char sex; long sno; float score[4]; }*pAbc;(四字节对齐) pAbc=NULL; 那么,执行pAbc+=2;之后pAbc的值为(64 ) 2)如下代码,最终value的值是(8) int *p1,*p2; int value; p1=(int*)0×400; p2=(int*)0×408; value = p2-p1; 3)如下代码,printf的结果为(2) #include〈stdio.h〉 #include〈string.h〉 void main(void) { char acNew[20]= “\\0\0”; printf(“%d\n”,strlen(acNew)); } 4) 有如下程序段,运行该程序的输出结果是(33) main () { int y=3,x=3,z=1; printf(“%d%d\n”,(++x,y++),z+2); } 5)设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后,n的值为(2)6)struct tagAAA { Unsigned char ucId:1; Unsigned char ucPara0:2; Unsigned char ucState:6; Unsigned char ucTail:4; Unsigned char ucAvail; Unsigned char unTail2:4; Unsigned long ulData; }AAA_S 问:AAA_S在字节对齐分别为1,4情况下,占用的空间大小分别是多少?( 9)(12 )

C语言考试试题

试题 课程名称C语言程序设计适用时间 试卷类别 A 适用专业、年级、班 一、选择题(每小题2分, 2×25=50分) 1.下列叙述错误的是( )。 A) C程序中的每条语句都用一个分号作为结束符B) C程序中的每条命令都用一个分号作为结束符 C) C程序中的变量必须先定义,后使用 D) C语言以小写字母作为基本书写形式,并且C语言要区分字母的大小写 2.以下叙述不正确的是( )。 A) 一个C源程序必须包含一个main函数B) 一个C源程序可由一个或多个函数组成 C) C程序的基本组成单位是函数D) 在C程序中,注释说明只能位于一条语句的后面 3.C语言中最简单的数据类型包括( )。 A)整型、实型、逻辑型B)整型、实型、字符型 C)整型、字符型、逻辑型D)字符型、实型、逻辑型 4.C语言中运算对象必须是整型的运算符是( )。 A)%= B)/ C)= D)<= 5.若变量a,i已正确定义,且i已正确赋值,合法的语句是( )。 A)a= =1 B)++i;C)a=a++=5;D)a=int(i); 6.下列运算符中优先级最高的是( )。 A) < B) + C) && D) ! = 7.设有说明:char w;int x;float y;double z;则表达式w*x+z-y 值的数据类型是( )。 A) int B) float C) double D) char 8.设x和y均为int型变量,则语句:x+=y;y=x-y;x-=y;的功能是( )。 A)把x和y按从大到小排列B)把x和y按从小到大排列C)无确定结果D)交换x和y中的值 9.设整型变量a,b的值均为8, printf("%d,%d",(a++,++b),b--);的输出是( )。 A)8,8 B)8,7 C)9,9 D)8,9 10.若有语句scanf("%d%d",&a,&b);要使变量a,b分别得到10和20,正确的输入形式为( )。 A)10 20 B)10,20 C)1020 D)10:20 11.判断char型变量ch是否为大写字母的正确表达式是( )。 A)'A'<=CH<='Z' B) (CH>='A')& (CH<='Z') C)(CH>='A')&& (CH<='Z') D) ('A'<=ch)AND('Z'>=ch) 12.有如下程序 main( ) { int x=1,a=0,b=0; switch(x) { case 0: b++; case 1: a++; case 2: a++;b++; } printf("a=%d,b=%d\n",a,b);} 该程序的输出结果是( )。 A) a=2,b=1 B) a=1,b=1 C) a=1,b=0 D) a=2,b=2 13.以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出,程序如下: main( ) { int n,k; float score,sum,ave; sum=0.0; for(n=1;n<=10;n++) { for(k=1;k<=4;k++) { scanf("%f",&score); sum+=score; } ave=sum/4.0; printf("NO%d:%f\n",n,ave); } } 上述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确。这条语句是( )。 A) sum=0.0; B) sum+=score; C) ave=sun/4.0; D) printf("NO%d:%f\n",n,ave);

c语言程序设计期末试题B(含答案)

c语言程序设计期末试题B(含答案) 一单项选择题(每小题1分,共10分) 1. A 2. C 3. D 4. A 5. B 1.以下4组用户定义标识符中,全部合法的一组是() A)_total clu_1 sum B)if -max turb C)txt REAL 3COM D)int k_2 _001 2.以下程序的输出结果是() #include main( ) { int a = 1, b = 2, c = 3; printf(“%d”, c>b>a); } A) 2 B) 1 C) 0 D) 3 3.以下正确的叙述是() A) 在C语言中,main函数必须位于文件的开头 B) C语言每行中只能写一条语句 C) C语言本身没有输入、输出语句 D) 对一个C语言进行编译预处理时,可检查宏定义的语法错误 4.设有定义:int a,*pa=&a; 以下scanf语句中能正确为变量a读入数据的是() A)scanf("%d",pa); B)scanf("%d",a); C)scanf("%d",&pa); D)scanf("%d",*pa); 5.若有以下程序段, int c1=1,c2=2,c3; c3=1.0/c2*c1; 则执行后,c3中的值是() A) 0 B) 0.5 C) 1 D) 2 6. D 7. D 8. A 9. C 10. D 6.能正确表示逻辑关系:“a≥=10或a≤0”的C语言表达式是() A) a>=10 or a<=0 B)a>=0|a<=10 C)a>=10 &&a<=0 D)a>=10‖a<=0 7.执行下面的程序时,将1、2、3、4分别赋给a、b、c、d,正确的输入是() main( ) { int a,b,c,d; scanf(“%d,%d,%d%d”,&a,&b,&c,&d); … } A)1 2 3 4 B)1 2 3,4 C) 1,2,3,4 D) 1,2,3 4

c语言试题及答案

C语言部分 一、选择题(每小题2分,共10分) (下在各小题,分别有一个或多个正确答案,请将所有正确答案的编号,填写在该小题题干后的括号内。错选或漏选均不得分)。 1、若定义:int a[2][3]{0,2,4,6,8,10};以下描述正确的有( A,C,D, E ) A、*(a+1)为元素6的地址 这里a+1=a[1]的地址;*(a+1)的值是6,故A正确。 B、*(a[1]+1)的值为2 为8,故B不正确 C、**(a+1)+2的值为8 这里a+1是一个指针,指向的是a[1]. *(a+1)为a[1],a[1]指向的是a[1][0]. **(a+1)为6,加2得8,故C正确; D、a[0]与a相同 因二者都是指针,指针的地址都是指向数组中的第一个元素的地址,故D正确。 E、a[1][2]的值为10 它是指第二行的第三个元素,为10,正确 2、对函数的正确使用方法描述( A,C,D )。 A、用数组做函数参数时,必须在主调函数和被调函数中分别定义数组 B、实参数组元素和形参数组元素类型可以不一致 C、形参数组长度可以不指定 D、形参数组长度可以大于实参数组长度 E、数组名做参数属于值传递 3、对静态变量的正确描述( A,B,D,E )

A、静态局部变量在静态存储区内分配单元() B、静态外部变量可以赋初值,也可以不赋初值 C、静态外部变量的作用与外部变量相同 D、静态局部变量在函数调用结束时,仍保存其值,不会随着消失。 E、静态局部变量只赋一次初值 4、下列描述正确的是( A ,C)。 A、由main 函数及其参数argc和* argv[]可以实现命令行方式 B、使用fclose关闭文件时,先释放文件指针,再写缓冲区数据到文件中 //先写缓冲区数据到文件中,再释放文件指针 C、字符数组并不要求它的最后一个字符是‘\0’ //是的,以字符指针指向的字符串才要求,因为只有这样,才能知道字符串的长度,而在字符数组中,不用\0,一样可以知道到哪里是字符数组的结尾。 D、‘A’和“A”都是字符串常量 E、若char*S=“\ta\017bc”;则指针变量S指向的字符串所占的字节数是7 5、在缓冲文件系统中用于读写的函数有( A,B,D ) A、putchar () B、fread() C、rewind () D、purw() E、fseek() 二、程序阅读,并给出运行结果(共10分,每题5分)。 (1)main() { unsigned a,b,x int n; a=0x763 输出结果: n=6;

c语言笔试题目及答案

c语言笔试题目及答案 C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。下面是c语言笔试题目及答案,请参考。 c语言笔试题目及答案 一、选择题((1)~(10)每小题2分,(11)~(50)每小题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选 项涂写在答题卡相应位置上,答在试卷上不得分。 (1)数据的存储结构是指________。 A)存储在外存中的数据 B)数据所占的存储空间量 C)数据在计算机中的顺序存储方式 D)数据的逻辑结构在计算机中的表示 答案:D 评析:数据的逻辑结构在计算机存储空间中的存放形式形式称为数据的存储结构(也称数据的物理结构)。 (2)下列关于栈的描述中错误的是________。 A)栈是先进后出的线性表

B)栈只能顺序存储 C)栈具有记忆作用 D)对栈的插入与删除操作中,不需要改变栈底指针 答案:B 评析:栈是一种特殊的线性表,又称先进后出表(FILO—First In Last Out)。 (3)对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是 ________。 A)冒泡排序为n2 B)冒泡排序为n C)快速排序为n D)快速排序为n(n一1)/2 答案:D 评析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n/2遍的从前往后扫描和n/2遍的从后往前扫描,需要比较次数为n(n-1)/2。快速排序法的最坏情况比较次数也是n(n-1)/2。 (4)对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为________。 A)log2n B)n/2 C)n D)n+l 答案:C 评析:顺序查找过程中,如果被查找的元素是线性表中的最后一个元素,或者元素不在线性表中,则需要与线性表中所有的元素进行比较。对长度为n的线性表进行顺序查找,在最坏情况下需要比较

C语言考试试卷及答案

2011-2012学年第一学期 C语言程序设计A 课程A卷考试题 共 4 页此第 1 页成绩 一、单项选择题(每小题2分,共40分) 1. C语言中合法的字符常量是() A.n B.’\n’ C.110 D.”n” 2. 有以下程序: main( ) { char ch=’A’; printf(“ch(1)=%d,ch(2)=%c\n”,ch,ch+1); } 程序运行后的输出结果是() A. ch(1)=65,ch(2)=A B. ch(1)=97,ch(2)=A C. ch(1)=65,ch(2)=B D. ch(1)=97,ch(2)=B 3. 能表示a不能被2整除且a、b不相等,但a、b的和等于0的C语言逻辑表达式是() A. a==-b&&a%2==0 B. a!=b&&a+b==0&&a%2 C. !(a%2)&&a==-b D.a%2==0&&a+b==0 4. 以下程序段中语句” printf("i=%d,j=%d\n",i,j);”的执行次数是() int i, j; for(i=3;i ;i--) for(j=1;j<5;j++) printf("i=%d,j=%d\n",i,j); A. 12 B. 20 C. 15 D. 24 5. 执行以下程序段后,x[2]的值是() int x[10]={1,2,3,4,5,6,7,8,9,10},i,j,t; i=0;j=9; while(i

C语言程序设计模拟试题1附答案

《C语言程序设计》模拟试卷一 一、单项选择题(每题2分,共30分) 1、下列有关C语言的叙述中错误的是()。 A) C语句必须以分号结束 B) 任何一个C程序中有且只有一个主函数 C) 复合语句在语法上可被看作一条语句 D) C程序中对数据的任何操作都可由运算符实现 2、以下不能定义为用户标识符的是()。 A) MAIN B) _HJ C) 2ong D) LINE1 3、下列符号中用来表示C语言中的回车换行的是()。 A) \r B) \n C) \b D) \t 4、如有如下定义:int a=1,则语句printf(“%d,%d”, a, ++a);的运行结果为()。 A) 1, 1 B) 1, 2 C) 2, 2 D) 2, 1 5、已知ch为字符型变量,下面表达式中正确的是()。 A) ch=’\xff ’B) ch=’\ff ’C) ch=’ ff ’D) ch=” ff ” 6、以下能正确定义一维数组的是()。 A) int a[5]={0,1,2,3,4,5}; B) int a[5]=”012345”; C) char a[ ]=”012345”;D) char a[5]={0,1,2,3,4,5}; 7、以下语句中能正确定义变量并赋初值的是()。 A) char c=65; B) float f=f+1.1; C) double x=12.3e3.6; D) int m=n=2.0; 8、在执行下列程序时输入:1357924,则程序的运行结果为()。 main( ) { int x, y; scanf(“%2d%2d”,&x,&y); printf(“%2d”,x*y); } A) 13 B) 1357 C) 74 D) 741 9、执行下列程序段后输出的结果是()。

C语言程序设计试题集与答案解析

一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C语言是由________组成的。 7. C语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10. 程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。

13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C程序的执行均是由执行_________开始。 15. 函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C 语句 组成的执行部分。 16. C语言程序中一条简单语句是以________字符作为结束符的。 17. C语言是结构化、________的程序设计语言。 18. 由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19. 用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 20.

C语言试题库(带答案解析)~排版

一、选择题 1、以下不能定义为用户标识符的是( )。 (A) MAIN (B) _HJ (D) LINE1 2、以下不能定义为用户标识符的是( ) (A) If (B) H_J (D) LINE12 3、下面属于C 语言标识符的是( )。 (A) 2ab (B) @f (C) b 4、下列符号中用来表示C 语言中的回车换行的是( )。 (A) \r (C) \b (D) \t 5、在计算机系统中,可执行程序是( ) (A) 源代码 (B)汇编语言代码 (D) ASCII 码 6、在Visual C++ 环境下,C 源程序文件名的默认后缀是( )。 (A) .obj (B) .txt (D) .doc 7、Microsoft Visual C++ 中,C 语言可执行程序的扩展名是:( ) (B) obj (C) c 或cpp (D) txt 8、C 程序由( )组成。 (A)子程序 (B) 主程序和子程序 (D) 过程 9、C 程序的基本组成单位( )。 (A) 数据类型 (B) 变量和常量 (D) 表达式 10、C 语言中主函数的个数是( )。 (A) 2个 (C) 任意个 (D) 10个 11、一个 C 程序的执行是从( ) (B)本程序文件的第一个函数开始,到本程序文件最后一个函数结束. (C)本程序文件的第一个函数开始,到本程序main 函数结束. (D) 本程序的main()函数开始,到本程序文件的最后一个函数结束. 12、以下叙述正确的是 (A)在C 语言程序中,main 函数必须放在其他函数的最前面 (C)在C 语言程序中,只有main 函数才可单独进行编译 (D)每个后缀为.C 的C 语言源程序都应该包含一个main 函数 13、设变量a 是整型,b 是实型,c 是双精度型,则表达式2+’a’+b*c 值的数据类型是( )。 (A) int (B) float 14、以下选项中表示一个合法的常量是(说明:符号□表示空格) A) 9□9□9 C) D) 15、以下选项中非法的字符常量是 A)'\102' B)'\65' C)'\xff' 16、以下选项中,能表示逻辑值“假”的是 A)1 B) D) 17、下列关系表达式中,结果为“假”的是 A)(3+4)>6 C) 3<=4||3 D)(3<4)==1 18、关于C 语言变量,以下说法不正确的是( ) (A) 变量名由程序员定义,必须符合标识符的命名规则。 (B) 变量是程序运行过程中其值可以改变的量。 (D) 变量命名时应尽量做到见名知意。 19、关于C 语言中数的表示,以下叙述正确的是 B)只要在在允许范围内整型和实型都能精确表示 C)只有实型数在允许范围内能精确无误的表示,整型数会有误差 D)只有八进制表示的数在不会有误差 20、设有语句int a=3;,则执行了语句a+=a=a*a;后,变量a 的值是 。 A .3 B .0 C .9 21、在C 语言中,要求运算数必须是整型的运算符是 。 B ./ C .< D .! 22、C 语言中最简单的数据类型包括 。 A .整型、实型、逻辑型 C .整型、字符型、逻辑型 D .整型、实型、逻辑型、字符型 23 、在C 语言中,合法的字符型常量是 。 B ."A" C .65 D .A 24、若已定义x 和y 为double 型变量,则表达式x=1 ,y=x+3/2的值是 。 A .1 B .2 D . 25、设正x 、y 均为整型变量,且x=10,y=3,则以下语句的输出结果是 。 printf("%d,%d\n",x--,--y); A .10,3 B .9,3 C .9,2 26、若有定义int a=8,b=5,C;,执行语句C=a/b+;后,C 的值为 。 A . C . D .2 27、以下选项中,不正确的赋值语句是 。 A .++t; B .n1=(n2=(n3=0)); C .k=i==j; 28、设x 和y 均为 int 型变量,则语句:x+=y,y=x-y;x-=y;的功能是 。 A .把x 和y 按从大到小的顺序排列 B .把x 和y 按从小到大的顺序排列 C .无确定结果 29、以下程序的输出结果是 。 #include <> main() { char c='z'; printf("%c",c-25); } B .Z C .z-25 D .y 30、已知字母A 的ASCII 码为十进制数的65,以下程序的输出结果是 。 #include <> main() { char ch1,ch2; ch1='A'+'5'-'3'; ch2='A'+'6'-'3'; printf("%d,%c\n",ch1,ch2); B .B,C C .C,D D .不确定的值 31、若k 是int 型变量,则以下程序片段的输出结果是 。 k=-3; if(k<=0) printf("####"); printf("&&&&"); B .&&&& C .####&&&& D .有语法错误,无输出结果 32、关于以下程序,说法正确的是 。 #include <> main()

嵌入式C语言面试题汇总(超经典)

第一部分:基本概念及其它问答题 1、关键字static的作用是什么? 这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用: 1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。 大多数应试者能正确回答第一部分,一部分能正确回答第二部分,同是很少的人能懂得第三部分。这是一个应试者的严重的缺点,因为他显然不懂得本地化数据和代码范围的好处和重要性。 2、“引用”与指针的区别是什么? 答、1) 引用必须被初始化,指针不必。 2) 引用初始化以后不能被改变,指针可以改变所指的对象。 3) 不存在指向空值的引用,但是存在指向空值的指针。 指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。 流操作符<<和>>、赋值操作符=的返回值、拷贝构造函数的参数、赋值操作符=的参数、其它情况都推荐使用引用。 3、.h头文件中的ifndef/define/endif 的作用? 答:防止该头文件被重复引用。 4、#include 与#include “file.h”的区别? 答:前者是从Standard Library的路径寻找和引用file.h,而后者是从当前工作路径搜寻并引用file.h。 5、描述实时系统的基本特性 答:在特定时间内完成特定的任务,实时性与可靠性。 6、全局变量和局部变量在内存中是否有区别?如果有,是什么区别? 答:全局变量储存在静态数据区,局部变量在堆栈中。 7、什么是平衡二叉树? 答:左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1。 8、堆栈溢出一般是由什么原因导致的? 答:1.没有回收垃圾资源 2.层次太深的递归调用

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

中国民航大学2009-2010学年第二学期 《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) 与机器字长有关 8、下列四组(八进制或十六进制)常数中,正确的一组是(【8】)。【8】 A) 016 0xbf 18 B) 0abc 017 0xa C) 010 -0x11 0x16 D) 0A12 7FF -123 9、下列四组转义字符中,合法的一组是(【9】)。 【9】 A)‘\t’‘\\’‘\n’ B)‘\’‘\017’‘\x’

C语言程序设计期末考试试题(含答案)

C语言程序设计 期末考试试题及其答案 一、单项选择题(本大题共20题,每题2 分,共40分) 1、以下不是C语言的特点的是( ) A、C语言简洁、紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件进行操作 D、C语言移植性好 2、以下不正确的C语言标识符是( ) A、ABC B、abc C、a_bc D、ab.c 3、一个C语言程序是由( ) A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是( ) A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性 5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为( ) A、int B、float C、double D、不确定 6、在C语言中,char型数据在内存中的存储形式是( ) A、补码 B、反码 C、源码 D、ASCII码 7、有如下程序,输入数据:12345M678<cR>后(表示回车),x的值是( ) 。 #include main(){ int x; float y; scanf("%3d%f",&x,&y); } A、12345 B、123 C、45 D、345 8、若有以下定义int a,b; float x,则正确的赋值语句是( ) A、a=1,b=2 B、b++; C、a=b=5 D、b=int(x); 9、以下程序的执行结果是( )

#include { int i=10,j=10; printf("%d,%d\n",++i,j--); } A、11,10 B、9,10 C、11,9 D、10,9 10、巳知字母A的ASCII码是65,以下程序的执行结果是( ) #include main() { char c1='A',c2='Y'; printf("%d,%d\n",c1,c2); A、A,Y B、65,65 C、65,90 D、65,89 11、下列运算符中优先级最高的是( ) A、< B、十 C、% D、!= 12、设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0是( ) 。 A、’x’&&’y’ B、x<=y C、x||y+z&&y-z D、!((x<y)&&!z ||1) 13、判断char型变量cl是否为小写字母的正确表达式为( ) A、’a’<=c1<=f’z’ B、(c1>=a)&&(c1<=z) C、(‘a’>=c1) (‘z’<=c1) D、(c1>=’a’)&&(c1<=’z’) 14、字符串"a"在内存中占据的字节个数为( ) A、0 B、 1 C、 2 D、 3 15、下面有关for循环的正确描述是( ) A、for循环只能用于循环次数已经确定的情况 B、for循环是先执行循环体语句,后判定表达式 C、在for循环中,不能用break语句跳出循环体 D、for循环体语句中,可以包含多条语句,但要用花括号括起来 16、下面程序的运行结果是( ) #include main() {int num=0; while(num<=2) {num++; printf(“%d ,num); } } A、 1 B、 1 2 C、 1 2 3

相关文档
最新文档