文档库 最新最全的文档下载
当前位置:文档库 › c语言复习题(有答案)●

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

}

i=fun(vector,VSIZE);

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

}

答案:

int i,min=0;

for(i=1; i

if(list[min]>list[i]) min=i;

return min;

再参见函数一章的课件。

5、功能:找出一个大于给定整数且紧随这个整数的素数,并作为函数值返回。

#include "stdio.h"

#include"conio.h"

int fun(int n)

{

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

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

}

void main()

{

int m;

printf("Enter m: ");

scanf("%d", &m);

printf("\nThe result is %d\n", fun(m));

}

答案:

int i,k;

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

{

for(k=2;k

if(i%k==0) break;

if(k==i)return(i);

}

6、功能:用下列6种方法求两数和:①只用主函数;②用子函数接收和返回数据本身;③用子函数接收数据地址和返回本身;④在子函数中不用返回语句返回求和结果;⑤在子函数中用返回数据的地址返回求和结果;⑥用全局变量返回求和结果。

答案:

参见函数一章的课件。

7、功能:输入三个整数x,y,z,请把大的输出。用宏和函数两种方法。

提示:用“?:”运算符。

答案:

使用宏:

#include

#define F(x,y,z) z>(x>y?x:y)?z:x>y?x:y

main()

{int x,y,z;

scanf(“%d,%d,%d”,&x,&y,&z);

pirntf(“%d\n”,F(x,y,z));

}

使用子函数调用的方法:

自己编。

8、功能:用辗转相除法(欧几里得算法)求两个正整数的最大公约数和最小公倍数。(迭代)★答案:用函数调用的方法求最大公约数和最小公倍数。

int zgys(int a,int b) /*最大公约数*/

{ int k,r;

if(a

while(b!=0) {r=a%b;a=b;b=r;}

return(a); }

int zgbs(int a,int b) /*最小公倍数*/

{ int d;

if(a

if(b==0) d=0;

else{d=a;while(d%b!=0) d+=a;}

return(d); } /* “a*b/公约数==公倍数”*/

#include

void main(void)

{

int a,b,gys,gbs;

clrscr();

scanf(“%d,%d”,&a,&b);

gys=zgys(a,b);

gbs=zgbs(a,b);

printf(“%d,%d”,gys,gbs);

}

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)可能造成系统故障

汇编语言程序设计期末考试试卷及参考答案

【汇编语言程序设计】期末考试-试卷及参考答案

执行上述两条指令后,正确的结果是( B )。 A.(AX)=1001H; B.(AX)=0FFFH; C.(AX)=1000H; D.(AX)=0111H。 6.串指令中的目的操作数地址一定是由____A_ _提供。()A.ES:[DI] ; B.SS:[BP]; C.DS:[SI] ; D.CS:[IP]。 7.将DX的内容除以2,正确的指令是( C )。 A.DIV 2 ; B.DIV DX,2 ; C.SAR DX,1; D.SHL DX,1。 8. 用户为了解决自己的问题,用汇编语言所编写的程序,称为( B )。 A.目标程序; B.汇编语言源程序; C.可执行程序; D.汇编程序。 9.用一条指令仅实现将AX←BX+SI的方法是( D )。 A.XCHG AX,[BX][SI] ; B.MOV AX,[BX+SI]; C.LEA AX,BX[SI] ; D.LEA AX,[BX][SI]。 10.设SP初值为2000H,执行指令“PUSH AX”后,SP的值是( C )。 A.1FFFH; B.1998H; C.1FFEH; D.2002H。 2. C 二、指出下列指令的出错原因,并改正。(每小题2分,共12分) 1.MOV BX,DL;操作数类型不匹配,改正为:MOV BL,DL 或MOV BX,DX 2.MOV CS,AX;代码段寄存器CS不能作目的操作数,改正为MOV DS,AX 3.ADD AX,DS;段寄存器DS的内容不能作为加法指令的操作数,改正为 MOV BX,DS ADD AX,BX 4.TEST BX,[CX];不能使用CX实现寄存器间接寻址,改正为 MOV SI,CX TEST BX,[SI] 5.SUB [BX],[BP+SI];两个操作数不能同为存储器操作数,且两个操作数的数据类型不确定,改正为:MOV AX,[BX] SUB AX,[BP+SI] 或:MOV AL,[BX] SUB AL,[BP+SI] 6.SHL DX ;没有给出移位次数,改正为SHL DX,1或 SHL DX,CL 三、程序填空题(注意:每空只能填一条指令,并注释说明所填指令的作用!每空3分,共18分) 1.在表TABLE处存放着N个无符号字节数,求表中前10个字节数的总和并

汇编语言试题及参考答案

汇编语言试题及参考答案 一,填空题 1.ZF标志位是标志结果是否为零的,若结果,ZF为( 1 ),否则ZF为( 0 ).当ZF为1时,SF为( 0 ) 2.标号可以有两种类型属性.它们是( )和( ) 3.8位无符号整数的表示范围为0--255,写成16进制形式为( ),8位有符号整数的表示范围为-128--+127,写成16进制形式为( ) 4.伪指令DB,GROUP 和NAME 三个标号名字域必须有名字的是( ),不得有名字的是( ),可有可无名字的是( ). 5.循环程序通常由( )( )( )和循环结果外理四部分构成 6.在数值不达式中,各种运算符可可混合使用,其优先次序规则*,/( )于+,-;XOR,OR( )于AND,LT( )于GT 7. 宏指令定义必须由伪指令( )开始,伪指令( )结束,两者之间的语句称为( ) 8.调用程序与子程序之间的参数传递方法有四种,即堆栈法( )( )( ) 9.分别用一条语句实现下述指明的功能 (1)栈顶内容弹出送字变量AYW( ) (2)双字变量AYD存放的地址指针送ES和SI( ) (3)变量AY2类型属性送AH( ) (4)不允许中断即关中断( ) (5)将字符串'HOW ARE YOU!'存入变量AYB( ) (6)子程序返回调用程序( ) (7)地址表达式AYY[4]的偏移地址送字变量ADDR( ) (8)AX的内容加1,要求不影响CF( ) (9)BX的内容加1,要求影响所有标志位( ) (10)若操作结果为零转向短号GOON( ) 二,单选题 1.IBM PC微机中,有符号数是用( )表示的 1.原码 2.补码 3.反码 4.BCD码 2.把汇编源程序变成代码程序的过程是( ) 1.编译 2.汇编 3.编辑 4.链接

大学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语言程序设计适用时间 试卷类别 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程序设计语言期末考试题A有答案)

期末试题——C#程序设计语言(A卷) 说明:本试卷共四大题,试卷满分100分,考试时间120分钟。 一.判断题(每题1分,共10分,正确的打√,错误的打×) ( ) 1.“+、-、*、/、%、++、--均属于二元运算符。 ( ) 2.字符串类型属性引用类型。 ( ) 3.Visual Studio控件的属性窗口中,按钮“A->Z”点击后,属性列表会先按照功能分类排列属性后在每个单元中以名称排序。 ( ) 4.派生类可以继承基类的成员,以及方法的实现;派生的接口继承了父接口的成员方法,并且也继承父接口方法的实现。 ( ) 5.当创建派生类对象时,先执行基类的构造函数,后执行派生类的构造函数。 ( ) 6.隐式类型转换就是不需要声明目标类型就可以进行的转换? ( ) 7.如果基类没有默认的构造函数,那么其派生类构造函数必须通过base关键字来调用基类的构造函数。 ( ) 8.在C#中在派生类中重新定义基类类的虚函数必须在前面加override。 ( ) 9.C#中方法的参数中输出型参数(out)的实参在传递给形参前,不需要明确赋值,但需在方法返回前对该参数明确赋值。 ( ) 10.在类中可以重载构造函数,C#会根据参数匹配原则来选择执行合适的构造函数。 二.单项选择题(每题2分,共40分) 一、(说明:每题有且仅有一个正确答案,请将正确答案填入下表) 1.C#程序设计语言属于什么类型的编程语言:a A.高级语言 B.自然语言 C.机器语言 D.汇编语言 2.如有int a=11;则表达式(a++*1/3)的值是:b A.0 B.3 C.4 D.12 3.类的字段和方法的默认访问修饰符是:b A. public B. private C. protected D. internal 4.对于在代码中经常要用到的且不会改变的值,可以将其声明为常量。如圆周率PI始终为。现 在要声明一个名为PI的圆周率常量,下面哪段代码是正确的?b float PI;PI = ; float PI = ; const PI;PI = ; const PI = ; 5.请问经过表达式a=3+3>5?0:1的运算,变量a的最终值是什么?。c

汇编语言复习题(附答案)

汇编语言复习题 注:蓝色标记的为答案,此答案仅供参考,大家自己做一下或看以一下,认为不对的地方,可以提出来一起讨论一下,另外看一下课后老师布置的相应作业。在此文档最后最后附有课 后四、六章的答案,大家抓紧时间复习哦! 一、选择题 1. 把要执行的程序与库文件连接起来形成可执行文件的系统程序是(B )。 A. 汇编程序 B. 连接程序 C. 机器语言程序 D.源代码程序 2. 在8088/8086的寄存器组中,CPU确定下一条指令的物理地址时需要用到的寄存器对是 (C )。 A..SS 和SP B.DS 和DI C.CS 和IP D.ES 和SI 3. 为了使主机访问外设方便起见,外设中的每个寄存器给予一个(C )。 A.物理地址 B. 逻辑地址 C. 端口地址 D. 段地址 4. MOV AX, 3064H,该指令中源操作数采用的寻址方式是(A )。 A.立即 B. 直接 C. 寄存器相对 D. 寄存器间接 5. 换码指令的助记符是(C )。 A. XCHG B. LEAS C.XLAT D. MOV 6. 如果A> B (A、B有符号数)发生转移,应选择的条件转移指令是(JGE )。 7. 下列符号中,可用作标识符的是(C )。 A.MOV B.AX C.MSG1 D.1ABC 8. X DB 10H DUP (1 , 2)内存变量定义语句拥有了( A )个字节的存储空间。 A.20D B.10D C.20H D.10H 9. 当DF=0时,执行串操作指令MOVSB变址寄存器SI、DI的值将(C )。 A.不变 B. 减1 C. 加1 D. 无法确定 10. 如下指令可将AX寄存器内容改变的是(A )。 A. AND AX , BX B . TEST AX , BX C. CMP AX , BX D . XCHG AX , AX 11.16位CPU支持的I/O 地址范围是(D )。 A. 0~0FFFFFH B. 0~0FFFFH C. 0~0FFFH D. 0~0FFH 12. MUL CL指令实现的功能是(A )。 A.无符号乘法:AX AL X CL B.有符号乘法:AX AL X CL C.无符号乘法:DX AL X CL D .有符号乘法:DX AL X CL 13. DOS系统功能调用(INT 21H )中,显示字符串的功能号是(D )。 A.01H B.02H C.08H D. 09H 14. 在16位CPU读取指令时,需要用到的寄存器对是(C )。 A.SS 和SP B.DS 和DI C.CS 和IP D.ES 和SI 15. 下列指令中,源操作数(既第2操作数)属于基址加变址寻址方式是(B )。 A.MOV AX,23H B. MOV AX,[BX+SI] C.SUB AX,[BX] D. ADD AX,BX 16. 有内存变量定义语句:VAR DW 10 DUP(1 , 2), 1234H, VAR的属性TYPE LENGTH和

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、执行下列程序段后输出的结果是()。

汇编语言期末试卷复习附答案

选择题 1. 已知X=78,Y= -83则[X+Y]补=() A.0F5H B.0A1H C.0FBH D.65H 2. MOV AX, ES:COUNT[DI] 源操作数的寻址方式是() A.基址寻址 B.立即寻址 C.变址寻址 D.基址变址寻址 3. 指令MOV BX, MASK[BP],若MASK=3500H,SS=1200H,DS=1000H,BP=1000H,那么物理地址为() A.17500H B.16500H C.14500H D.13500H 4. 下列四组寄存器中,在段内寻址时可以提供偏移地址的寄存器组是() A.AX,BX,CX,DX B.BP,SP,IP,CS C.BX,BP,SI,DI D.BH,BL,CH,CL 5. 当执行指令ADD AX,BX后,若AX的内容为2BA0H,设置的奇偶标志位PF=1,下面的叙述正确的是() A. 表示结果中含1的个数为偶数 B. 表示结果中含1的个数为奇数 C. 表示该数为偶数 D. 表示结果中低八位含1的个数为偶数 6. 下列传送指令中,有语法错误的指令是()。 A.MOV CS,AX B.MOV DS,AX C.MOV ES,AX D.MOV SS,AX 7. MOV SP,3210H PUSH AX执行上述指令序理后,SP寄存器的值是()。 A.3211H B. 320EH C.320FH D. 3212H 8. 设(DH)=20H,执行NEG DH指令后,正确的结果是() A.(DH)=20H CF=1 B.(DH)=20H CF=0 C.(DH)=0E0H CF=0 D.(DH)=0E0H CF=1 9. 执行下面指令序列后,结果是() MOV AL,82H CBW A.AX=0FF82H B.AX=8082H C.AX=0082H D.AX=0F82H

完整版汇编语言试题及答案..doc

一,单项选择题 (每小题 1 分,共 20 分 1-10CCCCAADACB 11-20.ADBBAADDCC 1.指令 JMP FAR PTR DONE 属于 ( C A.段内转移直接寻址 B.段内转移间接寻址 C.段间转移直接寻址 D.段间转移间接寻址 2.下列叙述正确的是 ( A.对两个无符号数进行比较采用CMP 指令 ,对两个有符号数比较用CMP S 指令 B.对两个无符号数进行比较采用CMPS 指令 ,对两个有符号数比较用CM P 指令 C.对无符号数条件转移采用JAE/JNB 指令 ,对有符号数条件转移用JGE/J NL 指令 D.对无符号数条件转移采用JGE/JNL 指令 ,对有符号数条件转移用JAE/J NB 指令 3.一个有 128 个字的数据区 ,它的起始地址为 12ABH:00ABH, 请给出这个数据区最末一个字单元的物理地址是 ( A.12CSBH B.12B6BH

C.12C59H D.12BFEH 4.在下列指令的表示中 ,不正确的是 ( A.MOV AL,[BX+SI] B.JMP SHORT DONI C.DEC [BX] D.MUL CL 5.在进行二重循环程序设计时,下列描述正确的是 ( A.外循环初值应置外循环之外;内循环初值应置内循环之外,外循环之内 B.外循环初值应置外循环之内;内循环初值应置内循环之内 C.内、外循环初值都应置外循环之外 D.内、外循环初值都应置内循环之外,外循环之内 6.条件转移指令 JNE 的测试条件为 ( A.ZF=0 B.CF=0 C.ZF=1 D.CF=1 7.8086CPU在基址加变址的寻址方式中,变址寄存器可以为 ( A.BX 或 CX

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.

汇编语言基础试题

第一章基本知识 一、单项选择题(共40分,每题2分) 1.若十进制数为13 2.75,则其十六进制数为(B) A.21.3 B.84.C C.4.6 D.6 2.若[X补]=11111,则其十进制真值为(C) A.-31 B.-15 C.-1 D.31 3.某定点整数64位,含1位符号位,补码表示,则其绝对值最大负数为(A) A.-263 B.-264 C.-(263-1) D.-(263-1) 4.原码乘法是(D) A.用原码表示操作数,然后直接相乘 B.被乘数用原码表示,乘数取绝对值,然后相乘 C.乘数用原码表示,被乘数取绝对值,然后相乘 D.先取操作数绝对值相乘,符号位单独处理 5.在微机系统中分析并控制指令执行的部件是(C) A.寄存器 B.数据寄存器 C.CPU D.EU 6.已知X=76,则[X]补=(B) A.76H B.4CH C.0B4H D.0CCH 7.已知[X]补=80H, 则X=(D) A.80H B.0 C.0FFH D.-80H 8.已知[X]补=98H, 则[X]补/2=(A) A.0CCH B.4CH C.49H D.31H 9.已知X=78,Y=-83则[X+Y]补=(C) A.0F5H B.0A1H C.0FBH D.65H 10.在计算机的CPU中执行算术逻辑运算的部件是(A) A.ALU B.PC C.AL D.AR 11.将125转换成二进制数的结果(A) A.7DH B.7CH C.7EH D.7BH 12.将93H看成一个组合BCD码,其结果是(B) A.10010101 B.10010011 C.10000011 D.10000001 13.能被计算机直接识别的语言是(C) A.C语言 B.汇编语言 C.机器语言 D.面向对象语言

汇编语言试题及答案.

一,单项选择题(每小题1分,共20分 1-10CCCCAADACB 11-20.ADBBAADDCC 1.指令JMP FAR PTR DONE属于( C A.段内转移直接寻址 B.段内转移间接寻址 C.段间转移直接寻址 D.段间转移间接寻址 2.下列叙述正确的是( A.对两个无符号数进行比较采用CMP指令,对两个有符号数比较用CMP S指令 B.对两个无符号数进行比较采用CMPS指令,对两个有符号数比较用CM P指令 C.对无符号数条件转移采用JAE/JNB指令,对有符号数条件转移用JGE/J NL指令 D.对无符号数条件转移采用JGE/JNL指令,对有符号数条件转移用JAE/J NB指令 3.一个有128个字的数据区,它的起始地址为12ABH:00ABH,请给出这个数据区最末一个字单元的物理地址是( A.12CSBH B.12B6BH

C.12C59H D.12BFEH 4.在下列指令的表示中,不正确的是( A.MOV AL,[BX+SI] B.JMP SHORT DONI C.DEC [BX] D.MUL CL 5.在进行二重循环程序设计时,下列描述正确的是( A.外循环初值应置外循环之外;内循环初值应置内循环之外,外循环之内 B.外循环初值应置外循环之内;内循环初值应置内循环之内 C.内、外循环初值都应置外循环之外 D.内、外循环初值都应置内循环之外,外循环之内 6.条件转移指令JNE的测试条件为( A.ZF=0 B.CF=0 C.ZF=1 D.CF=1 7.8086CPU在基址加变址的寻址方式中,变址寄存器可以为( A.BX或CX

B.CX或SI C.DX或SI D.SI或DI 8.已知BX=2000H,SI=1234H,则指令MOV AX,[BX+SI+2]的源操作在(中。 A.数据段中偏移量为3236H的字节 B.附加段中偏移量为3234H的字节 C.数据段中偏移量为3234H的字节 D.附加段中偏移量为3236H的字节 9.执行如下程序:( MOV AX,0 MOV AX,0 MOV BX,1 MOV CX,100 A:ADD AX,BX INC BX LOOP A HLT 执行后(BX=( A.99

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

汇编语言单片机考试试题和答案

一.单项选择题(30分) 在中断服务程序中至少应有一条() A.传送指令 B.转移指令 C.加法指令 D.中断返回指令 2.当MCS-51复位时,下面说法准确的是() A.PC=0000H B.SP=00H C.SBUF=00H D.(30H)=00H 3.要用传送指令访问MCS-51片外RAM,它的指令操作码助记符是() A.MOV B.MOVX C.MOVC D.以上都行 4.ORG2000H LACLL3000H ORG 3000H RET 上边程序执行完RET指令后,PC=() A.2000H B.3000H C.2003H D.3003H 5.要使MCS-51能响应定时器T1中断,串行接口中断,它的中断允许寄存器IE的内容应是() A.98H B.84H C.42H D.22H 6.JNZREL指令的寻址方式是() A.立即寻址 B.寄存器寻址 C.相对寻址 D.位寻址 7.执行LACLL4000H指令时, MCS-51所完成的操作是( ) A保护PCB.4000HPC C.保护现场 D.PC+3入栈, 4000HPC 8.下面哪条指令产生信号() A.MOVX A,@DPTR B.MOVC A,@A+PC C.MOVC A,@A+DPTR D.MOVX @DPTR,A 9.若某存储器芯片地址线为12根,那么它的存储容量为() A. 1KB B. 2KB C.4KB D.8KB 10.要想测量引脚上的一个正脉冲宽度,则TMOD的内容应为() A.09H B.87H C.00H D.80H 11.PSW=18H时,则当前工作寄存器是() A.0组 B. 1组 C. 2组 D. 3组 12.MOVX A,@DPTR指令中源操作数的寻址方式是() A. 寄存器寻址 B. 寄存器间接寻址 C.直接寻址 D. 立即寻址 13. MCS-51有中断源() A.5 B. 2 C. 3 D. 6 14. MCS-51上电复位后,SP的内容应为( ) A.00H B.07H C.60H D.70H https://www.wendangku.net/doc/ef6543155.html,0003H LJMP2000H ORG000BH LJMP3000H 当CPU响应外部中断0后,PC的值是() A.0003H B.2000H C.000BH D.3000H 16.控制串行口工作方式的寄存器是() A.TCON B.PCON C.SCON D.TMOD 17.执行PUSHACC指令, MCS-51完成的操作是() A.SP+1SP, ACCSP B. ACCSP, SP-1SP C. SP-1SP, ACCSP D. ACCSP, SP+1SP 18.P1口的每一位能驱动() A.2个TTL低电平负载 B. 4个TTL低电平负载 C.8个TTL低电平负载 D.10个TTL低电平负载 19.PC中存放的是() A.下一条指令的地址 B. 当前正在执行的指令 C.当前正在执行指令的地址 D.下一条要执行的 指令 20.8031是()A.CPU B.微处理器 C.单片微机 D.控制器 21.要把P0口高4位变0,低4位不变,应使用指令( ) A.ORL P0,#0FH B.ORL P0,#0F0H C.ANL P0,#0F0H D.ANL P0,#0FH

相关文档
相关文档 最新文档