搜档网
当前位置:搜档网 › C语言程序设计试题及答案

C语言程序设计试题及答案

C语言程序设计试题及答案
C语言程序设计试题及答案

《C语言程序设计》(卷)考核班级

学生数印数考核方式闭卷考核时间120 分钟

(本试卷包括第一卷和第二卷,答卷时间总共120分钟)

第一卷

第一部分:基础知识(20项,共40分)

1.一个C语言程序是由()组成的。

A.主程序B.子程序C.函数D.过程

2.转换说明符%x的输出形式是()。

A.十进制B.八进制C.十六进制D.二进制

3.若a、b均为int型变量,且a=100,则关于循环语句for(b=100;a!=b;++a,++b) printf ( “------------“) ;的正确说法是()。

A.循环体只执行一次B.死循环

C.循环体一次也不执行D.输出-----------

4.若x、y、z均为int 型变量,则执行下列语句后的z值为()。

x=1; y=2; z=3; z=(x>y)?z :y ; z = (z

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

5.下面标识符中,合法的用户标识符为()。

A.P#Ad B.12a C.char D._int

6.‘A’+ 3 的结果是()。

A.’A’B.’D’的ASCⅡ码C.65 D.3

7.语句char str[20];说明str是一个字符串,最多能表示()。

A.20个字符B.19个字符C.18个字符D.21个字符

8.将int 型变量n转换成float型变量的方法是()。

A.float n B.(float)n C.float(n) D.21个字符

9.以下不正确的描述是()。

A.使用while和do-while循环时,循环变量初始化的操作应在循环语句之前完成B.while循环是先判断表达式后执行循环体语句

C.do-while和for循环均是先执行循环体语句,后判断表达式

D.for、while、do-while循环中的循环体均可以由空语句构成

10.在循环中使用break 语句的功能是()。

A.使程序的执行跳出break所在的那一重循环

B.使程序执行结束

C.跳出包含此break语句的所有循环

D.终止本次循环,继续下次循环

11.下面是一个初始化指针的语句:int *px = &a;其中指针变量的名字应该是()。

A.*pz B.a C.px D.&a

12.若指针px为空指针,则()。

A.px指向不定B.px的值为零

C.px的目标为零D.px的地址为零

13.对于语句int *px[10],以下说法正确的是()。

A. px是一个指针,指向一个数组,数组的元素是整数型。

B. px是一个数组,其数组的每一个元素是指向整数的指针。

C. A和B均错,但它是C语言的正确语句。

D. C语言不允许这样的语句。

14.具有相同基类型的指针变量P和数组变量Y,下列写法中不合法的是()。A.P = Y B.*P = Y[i]

C.P + &Y[i] D.P = &Y

15.已知static int a[]={5,4,3,2,1},*p[]={a+3,a+2,a+1,a},**q=p,则表达式*(p[0]+1)+**(q+2)的值是()。

A.5 B.4 C.6 D.7

16.已知for(;n>=1;n--),下列语句实现将S2所指字符数组中前n个字符复制到S1所指字符数组中,其中代码不正确的是()。

A.*S1++=*S2++ B.S1[n-1]=S2[n-1]

C.*(S1+n-1)=*(S2+n-1) D.*(++S1)=*(++S2)

17.调用函数的实参与被调用函数的形参应该有如下关系()。

A.只要求实参和形参个数相等B.只要求形参和实参顺序相同

C.只要求实参和形参数据类型相同D.上述三点均需具备

18.联合体成员的数据类型()。

A.相同B.可以不同也可以相同

C.长度一样D.是结构体变量

19.由系统分配和控制的标准输出文件为()。

A.键盘B.磁盘C.打印机D.显示器

20.C语言标准库函数fread(fd,buffer,n)的功能是()。

A.从文件fd中读取长度不超过n个字节的数据送入buffer指向的内存区域

B.从文件fd中读取长度不超过n-1个字节的数据送入buffer指向的内存区域

C.从文件fd中读取长度不超过n个字符送入buffer指向的内存区域

D.从文件fd中读取长度不超过n-1个字符送入buffer指向的内存区域

第二部分:简单程序(12项,共30分)

21.下列程序

main()

{ int x,y,z;

x=y=2;z=3;

y=z++-1;

printf(“%d\t%d\t”,x,y);

y=++x-1;

printf(“%d \t%d\n”,x,y);

y=z---1;

printf(“%d\t%d\t”,z,y);

y=--z-1;

printf(“%d\t%d\n”,z,y);

}

运行后输出的数据为???_______。

A. 3 1 4 2

B. 3 1 3 3

C. 2 2 3 2

D. 2 1 3 2

2 4 1

3 2

4 2 2 3 3 2 1 1 3 1 2

22.下列程序

main()

{ int i,j;char *a,c;

a=”computer”;

printf(“%s”,a);

for(i=0,j=7;i

{ c=a[i];

*(a+i)=*(a+j);

a[j]=c;

}

printf(“->%s\n”,a);

c=a[j-1,i=2+j];

printf(“a[%d]=%c\n”,i,c);

}

运行后输出的数据为___ .

A. computer->computer

B. computer->retupmoc

a[3]=u a[5]=m

C. computer->retupmoc

D. computer->retupmoc

a[4]=p a[2]=t

23.下列程序

int sum(int n)

{ int p=1,s=0,i;

for(i=1;i<=n;i++) s+=(p*=i);

return s;

}

main()

{ printf(“sum(5)=%d\n”,sum(5));

}

运行后输出的数据为_ ___

A.sum(5)=151

B.sum(5)=152

C.sum(5)=153 Dsum(5)=155

24.下列程序

main()

{ static int a[]={5,6,7,3,2,9};

int s1,s2,i,*ptr;

s1=s2=0;

ptr=&a[0];

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

{ s1+=*(ptr+i);

s2+=*(ptr+i+1);

}

printf(“s1=%d,s2=%d\n”,s1,s2);

}

运行后输出的数据为_____

A.s1=18,s2=14

B.s1=14,s2=32

C.s1=14,s2=18

D.s1=15,s2=19

25.下列程序

int c=1;

main()

{static int a=5;int b=6;

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

func();

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

func();

}

func()

{ static int a=4;int b=10;

a+=2;

c+=10;

b+=c;

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

}

运行后输出的数据为_ ___.

A. a=5 b=6 c=1

B. a=5 b=6 c=1 a=6 b=21 c=11 a=7 b=17 c=11 a=5 b=6 c=11 a=5 b=6 c=11 a=8 b=31 c=21 a=9 b=17 c=21

C. a=5 b=6 c=1

D. a=5 b=6 c=1 a=6 b=21 c=11 a=7 b=17 c=11 a=6 b=21 c=11 a=7 b=17 c=11 a=8 b=31 c=21 a=9 b=38 c=21 26.已知

struct student

{char ﹡name;

int student_n;

char grade;

};

struct student temp,*p=&temp;

https://www.sodocs.net/doc/985384819.html,=”chou”;

则下面不正确的是_______。

表达式值

A.p→name chou

B.(*p)→name+2 h

C.*p→name+2 e

D.*(p→name+2) o

27.下列程序

#define MAX 10

main()

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

sum=1;

for(i=0;i

sum-=a[i];

printf(“SUM=%d”,sum);

}

程序运行结果是:

A.SUM=55

B.SUM=-54

C.SUM=-55

D.SUM=54

28.下列程序

void inv(int*x,int n)

{int *p,t,*i,*j,m=(n-1)/2;

i=x;

j=x+n-1;

p=x+m;

for(;i

{ t=*i;

*i=*j;

*j=t;

}

return;

}

main( )

{ static int i,a[10]={3,7,9,11,0,6,7,5,4,2};

inv(a,10);

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

printf(“%d,”,a[i]);

}

程序运行结果:

A.0,2,3,4,5,6,7,7,9,11

B.11,9,7,7,6,5,4,3,2,0

C.3,7,9,11,0,6,7,5,4,2

D.2,4,5,7,6,0,11,9,7,3

29.下列程序

main()

{ int a[10],b[10],*pa,*pb,i;

pa=a;pb=b;

for(i=0;i<3;i++,pa++,pb++)

{*pa=i;*pb=2*i;

printf(“%d\t%d\n”,*pa,*pb);

}

printf(“\n”);

pa=&a[0];

pb=&b[0];

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

{*pa=*pa+i;

*pb=*pb*i;

printf(“%d\t%d\n”,*pa++,*pb++);

}

}

运行后输出的数据为______。

A. 0 0

B.0 0

C. 0 0

D. 0 0

1 2 1 2 1 2 2 2

2 4 2 4 2 4 2 4

0 0 0 0 0 0 0 0

2 2 2 2 1 2 1 2

4 8 2 4 2 4 4 8

30.下列程序

copy_string(from,to)

char *from,*to;

{ while(*from) *to++=*from++;

*to=?\0?;

}

main()

{ static char s1[ ]=”c_program.”;

static char s2[80];

copy_string(s1,s2);

printf(“%s\n”,s2);

copy_string(“123”,s2);

printf(“%s\n”,s2);

}

运行后输出的数据为()。

A. c_program 123

B.123

C. c_program123

D. c_program

123

31.下列程序:

#include

main()

{ char a[40],b[40];

int i,j;

printf(“Enter the string:”);

scanf(“%s”,a);

i=j=0;

while(a[i]!=?\0?)

{ if(!(a[i]>=?\0?&&a[i]<=?9?))

{ b[j]=a[i]; j++;

}

++i;

}

b[j]=?\0?;

printf(“%s”,b);

}

运行后输出的结果是()。

A. 把键盘输入的字符串显示在屏幕上

B. 把键盘输入的字符串中的数字字符删掉,然后显示该字符串

C. 把键盘输入的字符串中的字符0和9删掉,然后显示该字符串

D. 只保留由键盘输入的字符串中的字母数字,然后显示该字符串

32.下列程序

#include

main()

{ char a[80];

int i,j;

printf(“Enter the string:”);

scanf(“%s”,a);

i=0;

while(a[i]!=?\0?)

{ if(a[i]>=?A?&&a[i]<=?Z?)

a[i]=a[i]-…A?+?a?;

}

printf(“%s”,a);

}

运行后输出的结果是()。

A. 把键盘输入的字符串中的大写字母变换成小写字母,然后显示变换后的字符串。

B. 把键盘输入的字符串中的数字字符删除掉,然后显示该字符串。

C. 把键盘输入的字符串中的小写字母变换成大写字母,然后显示变换后的字符串。

D. 把键盘输入的字符串原封不动地显示在屏幕上。

第二卷

说明:(1)第二卷含二大题,均属填空题,每题各有5个空栏,在阅读和理解原题程序的基础上,在空栏处填入适当的字符、语句,以构成一个正确的C语言程序。

(2)每空栏填对得3分,两大题共10个空栏,全填对得30分。

试题一

一个整数称为完全平方数,是指它的值是另一个整数的平方。如81是个完全平方数,因为它是9的平方。下列程序是在三位的正整数中寻找符合下列条件的整数:它既是完全平方数,且三位数字中又有两位数字相同:例如144(12*12)、676(26*26)等,从程序中找出并输出所有满足上述条件的三位数。

程序如下:

main()

{ int n,k,a,b,c;

for(k=1; ;k++)

{______①______

if(n<100) _____②_____

if(n<999) _____③_____

a=n/100;

b=_____④_____

c=n%10,

if(flag(a,b,c))

printf(“n=%d=%d*%d\n”,n,k,k);

}

}

flag_____⑤_____

{ return(!(x-y)*(x-z)*(y-z));

}

试题二

以下程序所列函数replace(char *s1,char *s2,char str1,char *str2)的功能是将已知字符串s1中的所有与字符串str1相同的子串替换成字符串str2,并将替换后所生成的新的字符串存于字符数组s2中。

说明:生成字符串s2的过程是一个循环,顺序访问字符串s1的每个字符;当从某个字符开始不能构成与str1相同的子字符时,就把该字符拷贝到数组s2,当从某个字符开始能构成一个与str1相同的子字符串时,就将字符串str2的各字符拷贝到字符数组s2,并继续访问字符串s1中那个子串之后的字符,直至字符串s1被访问完毕,字符复制即告结束。

下列程序运行的结果是输出:

ABCXYZdefg abABCXYZd abab

程序如下:

replace(char *s1,char *s2,char *str1,char *str2)

{ char *t0,*t1,*t2;

while( ⑥)

{ for(t0=s1,t1=str1;*t1!=’\0’&& ⑦;t0++,t1++);

if(*t1!=?\0?)

*s2++= ⑧;

else { for(t1=str2;*t1!=?\0?;)

*s2++= ⑨;

⑩;}

}

*s2=?\0?;

}

main()

{ char s1[]=”abcdefg ababcd abab.”;

char s2[80];

repla ce(s1,s2,”abc”,”ABCXYZ”);

printf(“%s\n”,s2);

}

参考答案

第一卷

一.基础知识(20项,共40分)

1.C

2.C

3.C

4.A

5.D

6.B

7.B

8.B

9.C 10.A 11.C 12.B 13.B 14.D 15.A 16.D 17.D 18.B 19.D 20.A

二.简单程序

21.C 22.B 23.C 24.C 25.A 26.B 27.B 28.D 29.A 30.D 31.B 32.A

第二卷试题一:①n=k*k ②continue③break④n%100/10或(n-100*a)/10或n/10-(n/100)*10⑤int x,int y,int z 试题二:

⑥*s1或s1!=’\0’⑦*t0==*t1或*t1==*t0 ⑧*s1++

⑨*t1++ ⑩s1=t0或s1=s1+strlen(str1)

《C语言程序设计》(卷)考核班级

学生数印数考核方式闭卷考核时间120 分钟(本试卷包括第一卷和第二卷,答卷时间总共120分钟)

第一卷

说明:(1)第一卷全部为选择题,每题可供选择的答案中,只有一个正确答案。

(2)答本卷的题目时,要在标准答题纸上编号对应的栏口中,用铅笔将正确答案涂黑。在试题上直接勾划不得分。

(3)本卷共分70分,其中第1—26题每题2分,第27—32题每题3分。

第一部分:基础知识(20题,共40分)

1、一个C语言的源程序中,()。

(A)必须有一个主函数(B)可以有多个主函数

(C)必须有主函数和其他函数(D)可以没有主函数

2、下列数据中,为字符串常量的是()。

(A)‘A’(B)“house”(C)How do you do.(D)’$abc’

3、若有定义:int a=8,b=5,c;,执行语句c=a/b十0.4;后,c的值为()。

(A)1.4 (B)1 (C)2.0 (D)2

4、设有int x=11;则表达式(x++*l/3)的值为()。

(A)3 (B)4 (C)11 (D)12

5、执行x=5>1+2&&2||2*4<4-!0后,x的值为()。

(A)-l (B)O (C)1 (D)5

6、以下变量x、y、z均为double类型且已正确赋值,不能正确表示数学式子:(x)/(y×z)的c语言表达式是()。

(A)x/y*z (B)x*(1/(y*z)) (C) x/y*1/z (D)x/y/z

7、设有以下说明语句

struct ex

{int x;float y; char z;}example;

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

(A)struct是结构体类型的关键字(B)example是结构体类型名

(C)x,y,z都是结构体成员名(D)struct ex是结构体类型

8、假定w、x、y、z、m均为int型变量;有如下程序段:

w=1;x=2;y=3;z=4;

m=(w

则该程序段执行后,m的值是()。

(A)4 (B)3 (C)2 (D) 1

9、在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是()。

(A) 地址传递(B) 单向值传递

(C) 由实参传给形参,再由形参传回实参(D) 传递方式由用户指定

10、以下定义语句中,错误的是()。

(A)int a[]={1,2};(B) char *a[3];

(C)char s[10]="text";(D) int n=5,a[n];

11、下列程厅执行后的输出结果是()。

main()

{ char arr[2][4];strcpy(arr,"you");strcpy(arr[1],"me");

arr[0][3]='&';

printf("%s\n",arr);

}

(A)you&me (B)you (C) me (D)err

12、标有/* */的语句的执行次数是()。

int y,i;

for(i=O;i<20;i++)

{ if(i%2==0)

continue;

y+=i; /* */

}

(A) 20 (B) 19 (C) 10 (D) 9

13、若用数组名作为函数调用的实参,传递给形参的是()。

(A) 数组的首地址(B) 数组第一个元素的值

(C) 数组中全部元素的值(D) 数组元素的个数

14、下列语句执行后的结果是()。

y=5;p=&y;x=*p++;

(A) x=5,y=5 (B) x=5,y=6 (C) x=6,y=5 (D) x=6,y=6

15、执行下面的语句后,表达式*(p[0]+1)+**(q+2)的值为()。

int a[]={5,4,3,2,1},*p[]={a+3,a+2,a+1,a},**q=p;

(A) 8 (B) 7 (C) 6 (D) 5

16、经过下面的语句后

int i,a[10],*p;

定义后,下列语句中合法的是()。

(A) p=100:(B) p=a[5];(C) p=a+2;(D) p=&(i+2);

17、若有以下说明和语句,则对pup中sex域的正确引用方式是()。

struct pupil

{char name[20];

int sex;

}pup,*p;

p=&pup;

(A)p.pup.sex (B)p->pup.sex (C)(*p).pup.sex (D)(*p).sex

18、若已定义了如下的共用体类型变量x,则x所占用的内存字节数为()。union data

{ int i;

char ch;

double f;

}x;

(A) 7 (B) 11 (C)8 (D) 10

19、若有下面的说明和定义:

struct test

{ int m1;char m2;float m3;

union uu{ char u1[5];int u2[2];}ua;

} myaa;

则sizeof(struct test)的值是()。

(A) 12 (B) 16 (C) 14 (D)9

20、若要打开: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:\\userl\\abc.txt","w")

第二部分:简单程序(12题,共30分)

21、以下程序的运行情况是()。

main()

{int i=1,sum=0;

while(i<10)

sum=sum+1;

i++;

printf("i=%d,sum=%d",i,sum);

}

(A) i=10,sum=9 (B) i=9,sum=9 (C) i=2,sum=l (D) 运行出现错误

22、若输入B,以下程序的运行结果为()。

main()

{ char grade;scanf("%c",&grade);

switch(grade)

{case 'A':printf(">=85");

case 'B':

case 'C':printf(">=60");

case 'D':printf("<60");

default:printf("error");}

}

(A)>=85 (B)>=60 (C)>=60<60error (D) error

23.有如下程序main()

{ int x=23;

do

{ printf("%d",x--);}while(!x);

}

该程序的执行结果是()。

(A)321 (B)23 (C)不输出任何内容(D)陷入死循环

24.有如下程序

int func(int a,int b)

{ return (a+b);}

main()

{int x=2,y=5,z=8,r;

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

}

该程序的输出结果是()。

(A) 12 (B) 13 (C)14 (D)15

25.以下程序的输出结果是()。

main()

{ int a,b;

for(a=1,b=1;a<=100;a++)

{ if(b>=10) break;

if(b%3==1)

{ b+=3;continue;}

}

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

}

(A)101 (B) 6 (C)5 (D)4

26.以下程序的输出结果是()。

int a,b;

void fun()

{ a=100;b=200;}

main()

{ int a=5,b=7;

fun();

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

}

(A) 100200 (B)57 (C)200100 (D)75

27.下面的程序执行后,文件test.t中的内容是()。

#include

void fun(char *fname,char *st)

{ FILE *myf; int i;

myf=fopen(fname,"w");

for(i=0;i

fclose(myf);

}

main()

{ fun("test.t","new world");fun("test.t","hello,");}

(A) hello,(B)new,worldhello (C) new,world (D)hello,rld

28.以下程序的运行结果是()。

#include

main(){

static char s[30]="abcdefg";

static char t[]="abcd";

int i,j;

i=0;

while(s[i]!='\0')

i++;

j=0;

whi1e(t[j]!='\0')

{ s[i+j]=t[j];

j++;}

s[i+j]='\0';

printf("%s\n",s);

}

(A) abcdabcdefg (B)abcdefg (C)abcd (D)abcdefgabcd 29.有如下程序

main()

{ char ch[2][5]={"6937","8254"},*p[2];

int i, j, s=0;

for(i=0;i<2;i++) p[i]=ch[i];

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

for(j=0;p[i][j]>'\0';j+=2)

s=10*s+p[i][j]-'0';

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

}

该程序的输出结果是()。

(A)69825 (B)63825 (C)6385 (D)693825

30.若已建立如下图所示的单向链表结构

在该链表中,指针p,s分别指向图中所示结点,则不能将s所指的结点插入到链表末尾仍构成单向链表的语句组是()。

(A) p=p->next;s->next=p;p->next=s;

(B) p=p->next;s->next=p->next;p->next=s;

(C) s->next=NULL;p=p->next;p->next=s

(D) p=(*p).next;(*s).next=(*p).next; (*p).next =s;

31.请选择正确的运行结果填入()中。

include

int x,y;

num()

{

int a=15,b=10;

int x,y;

y=a-b;

y=a+b;

return;

}

main()

{ int a=7,b=5;

x=a+b;

y=a-b;

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

}

(A) 12,2 (B) 5,25 (C)2,12 (D)不确定

32.以下程序的输出结果是()。

#define M(x,y,z) x*y+z

main()

{ int a=1,b=2,c=3;

printf("%d\n",M(a+b,b+c,c+a));}

(A)19 (B)17 (C)15 (D)12

第二卷

说明:(1)第二卷含两大题,均属填空题,每题各有5个空栏,在阅读和理解原题程序的基础上,在空栏处填入适当的字符、语句,以构成一个正确的C语言程序。

(2)每空栏填对得3分,两大题共10个空栏,全对得30分。

试题一:

有一函数,实参传来一个字符串,统计此字符串中字母、数字、空各和其他字符的个数,在主函数中输入字符串以及输出上述的结果。

int letter,digit,space,others;/*是全局变量*/

main()

{int count(char _____(1)_____);

char text[80];

printf("\nlnput string:\n");

____(2)___;

printf("string:");

puts(text);

letter=O;

digit=O;

space=O;

others=O;

_____(3)_____;

printf("letter:%d,digit:%d,space:%d,other:%d\n",letter,digit,

space,others); }

int count(char str[])

{int i;

for(i=O;str[i]!='\0';i++)

if((____(4)____>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))

letter++;else if(str[i]>='0'&&str[i]<='9')

digit++;

else if(str[i]==' ')

space++;

else

____(5)____;

}

试题二:

把下列程序补充完整,实现两个字符串的比较,即自己写个strcmp函数,函数原型

为:int strcmp(char *p1,char *p2)

设p1指向字符串s1,p2指向字符串s2。要求:当s1=s2时,返回值为0。当sl<>s2时,返回它们两者的第一个不同的字符的ASCII码差值(如“BOY”与“BAD”,第二个字母不同,“O”与“A”之差为79-65=14);如果s1>s2,则输出正值;如果sl

main()

{ int m;

char ___(6)____,str2[20],*p1,*p2;

printf("Input two string:\n");

scanf("%s",strl);

scanf("%s",___(7)______);

p1=&strl[0];

p2=_____(8)_____;

m=strcmp(p1,p2);

printf("result:%d,\n",m);

}

strcmp(char ___(9)_____,char *p2)

/*两个字符串比较的函数*/

{ int i;

____(10)______;

while(*(pl+i)==*(p2+i))

if(*(p1+i++)=='\0') return(0);

return(*(pl+i)-*(p2+i)); /*不等时返回结果为第一个不等字符ASCII码的差值*/

}

参考答案

第一卷

第一部分:基础知识

1.A

2.B

3.B

4.A

5.C

6.A

7.B

8.D

9.B 10.D

11.A 12.C 13.A 14.A 15.D 16.C 17.D 18.C 19.A 20.B

第二部分:简单程序

21.D 22.C 23.B 24.D 25.D 26.B 27.A 28.D 29.C 30.A 31.A 32.D

第二卷

试题一:

1、str[]

2、gets(text)或scanf(“%s”,text)

3、count(text)

4、str[i]

5、others++

试题二:6、str1[20] 7、str2 8、&str2[0] 9、*p1 10、i=0

C语言程序设计》(卷)考核班级

学生数印数考核方式闭卷考核时间120 分钟

(本试卷包括第一卷和第二卷,答卷时间总共120分钟)

第一卷本卷共70分,其中第1~26题每题2分,第27~32题每题3分。

第一部分:基础知识

1、一个C语言程序是从______开始执行的。

A、程序中的第一个语句

B、包含文件(头文件)的第一个函数

C、名为main的函数

D、程序中的第一个函数

2、语句while(!E) { ……}中的条件!E等价于_____

A、E==0

B、E!=1

C、E!=0

D、~E

3、若有以下类型说明语句:

char w;

int x;

float y;

double z;

则表达式w*x+z-y的结果为_____类型。

A、float

B、double

C、int

D、char

4、一个函数返回值的类型是由____决定的

A、return语句中的表达式类型;

B、定义函数时所指定的函数类型

C、调用该函数的函数的类型

D、调用函数时临时类型

5、设x、y、z和k都是int型变量,则执行下列表达式后,变量x的值为_____. x=(y=4,z=16,k=32);

A、4

B、16

C、32

D、52

6、有以下程序:

main( )

{ int i=10,j=1;

printf(“%d,%d\n”,i--,++j);

}

执行后输出的结果是________

A、9,2

B、10,2

C、9,1

D、10,1

7、以下指针s的指字符串的长度为_______

char *s=”\t\?Name \\Address\n”;

A、19

B、15

C、18

D、-12

8、设有语句int a=3;则执行了语句a+=a-=a*a;后,变量a的值是____

A、3

B、0

C、9

D、-12

9、对于下面的for循环语句,可以断定它____。

for(x=0,y=0;(y!=123)&&(x<4);x++)

printf(“--------“);

A、是无限循环(死循环)

B、循环次数不定

C、共执行4次循环

D、共执行3次循环

10、设有以下语句,则_______不是对a数组元素的正确引用,其中0 i 10.

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

int *p=a;

A、a[p-5]

B、*(&a[i])

C、a[i]

D、*(a+i)

11、为了判断两个字符串s1和s2是否相等,应当使用______

A、if(s1==s2)

B、if(s1=s2)

C、if(strcmp(s1,s2))

D、if(strcmp(s1,s2)==0)

12、对于C语言程序中的函数,下列叙述中正确的是______

A、函数的定义不能嵌套,但函数调用可以嵌套

B、函数的定义可嵌套,但函数的调用不能嵌套

C、函数的定义和调用均不能嵌套

D、函数的定义和调用均可嵌套

13、有以下程序

main()

{ int i;

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

switch(i)

{ case 1: printf(“%d”,i);

case 2: printf(“%d”,i);

default: printf(“%d”,i);

}

}

执行后输出的结果是______

A、011122

B、012

C、012020

D、120

14、假定有以下变量定义:int k=7, x=12;则能使值为3的表达式是____

A、x%=(k%=5)

B、x%=(k-k%5)

C、x%=(k-k%5)

D、(x%=k)-( k%=5)

15、以下程序的输出结果是_____

main()

{ int x=4,y=8;

x+=y;y+=x;

printf(“%d %d\n”,x,y);

}

A、12 20

B、4 8

C、12 12

D、8 4

16、有以下程序执行后输出的结果是_____

main()

{ int x[8]={8,7,6,5,0,0},*s;

s=x+3;

printf(“%d\n”, s[2]);

}

A、随机值

B、0

C、5

D、6

17、以下函数的功能是______

fun(char *s1,char *s2)

{ int i=0;

while(s1[i]==s2[i] &&s2[i]!=?\0?)

i++;

return(s1[i]==?\0?&&s2[i]==?\0?);

}

A、将s2所指字符串赋给s1

B、比较s1和s2所指字符串的大小,若s1比s2的大,函数值为1,否则函数值为0

C、比较s1和s2所指字符串是否相等,若相等,函数值为1,否则函数值为0

D、比较s1和s2所指字符串的长度,若s1比s2的长,函数值为1,否则函数值为0

18、以下叙述中正确的是____

A、全局变量的作用域一定比局部变量的作用域范围大

B、静态(static)类型变量的生存期贯穿于整个程序的运行期间

C、函数的形参都属于全局变量

D、未在定义语句中赋初值的auto变量和static变量的初值都是随机值

19、有以下程序,执行后输出的结果是____

main()

{ int i=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

20、以下函数abc的功能是____

int abc(char *ps)

{ char *p;

p=ps;

while(*p++);

return (p-ps);

}

A、比较两个字符串的大小

B、求字符串的长度

C、将串ps复制到串p中

D、以上三种说法都不对

第二部分:简单程序

21、以下程序的输出结果是:_____

main( )

{ int i=10,j=10;

printf(“%d ,%d\n”,++i+j++,j--);

}

A、21,10

B、20,10

C、21,9

D、20,9

22、以下程序的输出结果是:__________

main( )

{ int m=5;

if (m++>5)

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

else

printf(“%d \n”,m--);

}

A、7

B、6

C、5

D、4

23、当a=1, b=3, c=5, d=4时,执行下面一段程序后,x的值为____

if (a

if(c

x=1;

else if(a

if(b

x=2;

else

x=3;

else

x=6;

else x=7;

A、1

B、2

C、3

D、6

24、以下程序企图把从终端输入的字符输出到名为abc.txt的文件中,直到从终端读入字符#号时结束输入和输出操作,但程序有错。出错的原因是_______

#include

main( )

{ FILE *fout;

char ch;

fout=fope n( …abc.txt?,?w?);

ch=fgetc(stdin);

while(ch!=?#?)

{fputc(ch,fout);

ch=fgetc(stdin);

}

fclose(fout);

}

A、函数fopen调用形式有误

B、输入文件没有关闭

C、函数fgetc调用形式有误

D、文件指针stdin没有定义

25、有以下程序,执行后输出结果是______

main()

{union {unsigned int n;

unsigned char c;

}ul;

ul.c=?A?;

pri ntf(“%c\n”,ul.n);

}

A、产生语法错

B、随机值

C、A

D、65

26、有以下程序,执行后输出结果是_____

main()

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

int i,k=2;

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

printf(“%d ”, m[k][i]);

A、4 5 6

B、2 5 8

C、3 6 9

D、7 8 9

27、以下程序运行后,输出结果是_______

int func(int a, int b)

{ static int m=0,i=2;

i+=m+1;

m=i+a+b;

return(m);

}

main()

{ int k=4,m=1,n;

n=func(k, m);

printf(“%d, ”, n);

n=func(k, m);

printf(“%d ”, n);

}

A、8, 15

B、8, 16

C、8, 17

D、8, 8

28、在执行以程序时,如果从键盘上输入:ABCdef,则输出结果为:____ #include

main( )

{ char ch;

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

{ if(ch>=?A?&&ch<=?Z?)

ch=ch+32;

else if(ch>=?a? && ch<=?z?)

ch=ch-32;

printf(“%c”,ch);

}

printf(“\n”);

}

A、ABCdef

B、abcDEF

C、abc

D、DEF

29、有以下程序,执行后输出结果是____

int *f(int *x, int *y)

{ if(*x<*y)

return x;

else

return y;

}

main( )

{ int a=7,b=8,*p,*q,*r;

p=&a;

q=&b;

r=f(p,q);

printf(“%d,%d,%d\n”,*p,*q,*r);

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

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语言程序设计试卷及答案

C语言程序设计试卷及 答案 IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】

C语言程序设计 一、单项选择题(共15小题,每题4分,共60分) 1、下列有关C语言的叙述中错误的是()。 A)C语句必须以分号结束B)任何一个C程序中有且只有一个主函数 C)复合语句在语法上可被看作一条语句D)C程序中对数据的任何操作都可由运算符实现 2、以下不能定义为用户标识符的是()。 A)MAINB)_HJC)2ongD)LINE1 3、以下能正确定义一维数组的是()。 A)inta[5]={0,1,2,3,4,5};B)inta[5]=”012345”; C)chara[]=”012345”;D)chara[5]={0,1,2,3,4,5}; 4、以下关于main()函数的说法,正确的是。 A)main()必须是程序的第一行B)main()可以有参数 C)一个程序可以有多个main()D)main()可以被用户自定义的函数调用 5、设charstr1[10]=“ABCDE”,str2[10]=“xyz”; 则执行语句printf(“%d”,strlen(strcpy(str1,str2)));后的输出结果是()。 A)9B)8C)5D)3 6、若用数组名作为函数调用的实参,则传递给形参的是()。 A)数组的首地址B)数组第一个元素的值C)数组中全部元素的值D)数组元素的个数 7、在C程序中,若未在函数定义时说明函数类型,则函数默认的类型为()。 A)void?B)double?C)int?D)char 8、下面不能正确进行字符串赋值操作的语句是()。

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

《C语言程序设计》模拟试卷A 一、单项选择题(每题2分,共20分) 1、下列有关C语言的叙述中错误的就是(D)。 A) C语句必须以分号结束 B) 任何一个C程序中有且只有一个主函数 C) 复合语句在语法上可被瞧作一条语句 D) C程序中对数据的任何操作都可由运算符实现 2、以下不能定义为用户标识符的就是(C)。 A) MAIN B) _HJ C) 2ong D) LINE1 3、以下能正确定义一维数组的就是(C)。 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}; 4、执行下列程序段后输出的结果就是(C)。 x = 9; while (x > 7) { printf(“*”); x- -; } A) **** B) *** C) ** D) * 5、设char str1[10] = “ABCDE”, str2[10] = “xyz”; 则执行语句 printf(“%d”, strlen(strcpy(str1, str2))); 后的输出结果就是(D)。 解析: strcpy(str1,str2); 后,str1[] 里就是"XYZ", Z 后面有字符串结束符 strcpy(str1,str2); 执行后,函数返回的就是str1, 因为str1[] 里就是新值"XYZ", 而 strlen(strcpy(str1,str2)) 就就是strlen(str1的新值),所以得3。 strlen 统计到字符串结束符以前,即,不计入字符串结束符。 A) 9 B) 8 C) 5 D) 3 6、若用数组名作为函数调用的实参,则传递给形参的就是(A)。

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

51汇编语言程序设计

第四章MCS-51汇编语言程序设计 重点及难点: 单片机汇编语言程序设计的基本概念、伪指令、单片机汇编语言程序的三种基本结构形式、常用汇编语言程序设计。 教学基本要求: 1、掌握汇编语言程序设计的基本概念; 2、掌握伪指令的格式、功能和使用方法; 3、掌握顺序结构、分支结构和循环结构程序设计的步骤和方法; 4、掌握常用汇编语言程序设计步骤和方法。 教学内容 §4.1汇编语言程序设计概述 一、汇编语言的特点 (1)助记符指令和机器指令一一对应,所以用汇编语言编写的程序效率高,占用存储空间小,运行速度快,因此汇编语言能编写出最优化的程序。 (2)使用汇编语言编程比使用高级语言困难,因为汇编语言是面向计算机的,汇编语言的程序设计人员必须对计算机硬件有相当深入的了解。 (3)汇编语言能直接访问存储器及接口电路,也能处理中断,因此汇编语言程序能够直接管理和控制硬件设备。 (4)汇编语言缺乏通用性,程序不易移植,各种计算机都有自己的汇编语言,不同计算机的汇编语言之间不能通用;但是掌握了一种计算机系统的汇编语言后,学习其他的汇编语言就不太困难了。 二、汇编语言的语句格式 [<标号>]:<操作码> [<操作数>];[<注释>] 三、汇编语言程序设计的步骤与特点 (1)建立数学模型 (2)确定算法 (3)制定程序流程图 (4)确定数据结构 (5)写出源程序 (6)上机调试程序 §4.2伪指令 伪指令是程序员发给汇编程序的命令,也称为汇编命令或汇编程序控制指令。 MCS- 51常见汇编语言程序中常用的伪指令:

第四章MCS-51汇编语言程序设计91 1.ORG (ORiGin)汇编起始地址命令 [<标号:>] ORG <地址> 2.END (END of assembly)汇编终止命令 [<标号:>] END [<表达式>] 3.EQU (EQUate)赋值命令 <字符名称> EQU <赋值项> 4.DB (Define Byte)定义字节命令 [<标号:>] DB <8位数表> 5.DW (Define Word)定义数据字命令 [<标号:>] DW <16位数表> 6.DS (Define Stonage )定义存储区命令 [<标号:>] DW <16位数表> 7.BIT位定义命令 <字符名称> BIT <位地址> 8.DA TA数据地址赋值命令 <字符名称> DATA <表达式> §4.3单片机汇编语言程序的基本结构形式 一、顺序程序 [例4-1]三字节无符号数相加,其中被加数在内部RAM的50H、51H和52H单元中;加数在内部RAM的53H、5414和55H单元中;要求把相加之和存放在50H、51H和52H单元中,进位存放在位寻址区的00H位中。 MOV R0 ,# 52H ;被加数的低字节地址 MOV R1 ,# 55H ;加数的低字节地址 MOV A ,@ R0 ADD A ,@ R1 ;低字节相加 MOV @ R0 , A ;存低字节相加结果 DEC R0 DEC R1 MOV A ,@ R0 ADDC A ,@ R1 ;中间字节带进位相加 MOV @ R0 , A ;存中间字节相加结果 DEC R0 DEC R1 MOV A ,@ R0 ADDC A ,@ R1 ;高字节带进位相加 MOV @ R0 , A ;存高字节相加结果 CLR A

8086汇编语言程序设计

实验1 简单汇编语言程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握简单汇编语言程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG 工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG 工具调试程序,验证程序的正确性。 1. 若X、Y、R、W 是存放8 位带符号数字节单元的地址,Z 是16 位字单元的 地址。试编写汇编程序,完成Z←((W-X) ÷5-Y)?(R+ 2) 。 2.试编写一个程序,测试某数是否是奇数。如该数是奇数,则把DL 的第0 位置1,否则将该位置0。 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

实验2 分支及循环程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握分支程序和循环程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。 1.编写汇编程序,统计某存储区若干个数据中英文字母的个数,并将结果在屏幕上显示。 2.从键盘任意输入一组字符数据,请编写汇编程序将该组数据加密后在屏幕上显示。参考加密方法是:每个数乘以2。(说明:本题的加密方法,同学们可以自己拟定) 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

实验3 子程序程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握子程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。 1.编程以十进制形式和十六进制形式显示AX的内容,并把两个显示功能分别封装成子程序dispDEC和dispHEX。 2.设在以EXAMSCORE为首地址的数据缓冲区依次存放某班10名同学5门功课的成绩,现要统计各位同学的总分,并将总分放在该学生单科成绩后的单元,并调用第1个程序封装好的子程序,以十进制方式显示统计情况,显示格式自行设计。请编程完成此功能。数据缓冲区参考数据定义如下: EXAMSCORE DB 01 ;学号 DB 89,76,54,77,99 ;单科成绩 DW ? ;该学生的总分 DB 02 ;学号 DB 79,88,64,97,92 ;单科成绩 DW ? ;该学生的总分 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

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. 用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。

C语言程序设计模拟试题2(附答案)

《C语言程序设计》模拟试卷二 一、填空题。(每空2分,共30分) 1.设有变量说明语句 int x=1,y=2; 则执行下述printf语句的输出结果是___1.000000___ _____。 printf("%f\n",1.0+x/y); 2.执行下述程序 #include main() { int x,y; scanf("%2d%*2s%1d",&x,&y); printf("%d\n",x+y); } 若从键盘输入 12345671 则程序的输出结果是__17______。 3.以下程序的功能是:从键盘上输入若干名学生的成绩(百分制,可带小数,以输入负数或0为结束标志),统计并输出最高成绩和最低成绩。请填空。 #include main() {

float x,amax,amin; scanf("%f",&x); amax=x; amin=x; while ( X>0&&X<=100 ) { if (x>amax) amax=x; else if (x

_k++ _________; d=1.0/(k*(k+1)); } while (k<=n); printf("%f\n",s); 5.执行下述程序的输出结果是_-3 -4 0 4 4 3___ ____。 #inclued main() { int a[6],i; for (i=0;i<6;i++) { a[i]=9*(i-2+4*(i>3))%5; printf("%3d",a[i]); } printf("\n"); } 6.执行下述程序时的输出结果是____6_____ ________。 #include main() { int a[]={2,4,6,},*ptr=&a[0],x=8,y,z; for (y=0;y<3;y++) z=(*(ptr+y)

C语言程序设计试题与答案D

绝密★启用前学院 学年第二学期期末考试 级专业()《 C语言程序设计》试卷D 一、单项选择题(本大题共15小题,每小题2分,共30分) 1、以下正确的C语言自定义标识符是() A._la B.2a_ C.do D.a.12 2、在C语言中,错误 ..的常数表示是() A.0L B.-0x6aL C.′6′D.1.234E3.5 3、设int a,x=2;执行语句a=x>0?3*x:(x=10);后,变量x的值是() A.1 B.2 C.6 D.10 4、设有以下程序段: int x=2,y=2,z=0,a; a=++x||++y&&z++; printf(″%d,%d,%d\n″,x,y,z); 执行后输出的结果是() A.2,2,0 B.3,3,1 C.3,2,0 D.3,2,1 5、逗号表达式a=2*6,a*3,a+5的值是() A.12 B.17 C.36 D.41 6、设int a[2][3]={{1},{2,3}};,则元素a[1][0]的值是() A.0 B.1 C.2 D.3 7、C语言中,错误 ..的int类型的常数是() A.1E5 B.0 C.037 D.0xaf 8、在C语言中,′a′和″a″存储所占用的字节数分别是() A.1,1 B.1,2 C.2,1 D.2,2 9、设int x;,则以下语句中错误 ..的输入是() A.scanf (″%d″,x); B.scanf (″%d″,&x); C.scanf (″%o″,&x); D.scanf (″%x″,&x); 10、在C语言中,运算符″=″和″==″的功能分别是() A.关系运算和赋值运算B.赋值运算和关系运算 C.都是关系运算D.都是赋值运算 11、设int x[]={1,2,3,4,5},*p=x;,则值为3的表达式是() A.p+=2, *p++ B.p+=2, *++p C.p+=2, p++ D.p+=2, ++*p 12、设for(i=0, j=10; (j>0)&&(i<4); i++, j--);,该语句的循环次数是() A.0 B.3 C.4 D.无限 13、设函数定义如下: float f1 (float a, float b) { return (a+b); } 若有float x=1.1, y=2.2;,则以下语句中正确的函数调用是() A.printf (″%f″, f1(x)); B.printf (″%f″,f1(&x, y)); C.printf (″%f″,f1(*x,*y)); D.printf (″%f″,f1(x, y)); 14、若有说明:int i,j=7,*p=&i;则与i=j;等价的语句是()。 A. i=*p; B. *p=*&j; C. i=&j ; D. i=**p; 15、设char str1[10]=″ABCDE″,str2[10]=″XYZ″;则执行语句: printf(″%d″,strlen(strcpy(str1,str2))); 后的输出是()。 A. 3 B. 5 C. 8 D. 9 二、填空题(本大题共10小题,每小题2分,共20分) 16、一个C语言程序的基本组成单位是___________________。 17、求字符串的有效长度的系统函数名是___________________。 18、设float a [4][5];,则数组a中第一维下标的最大值是___________________。 19、设int a; float b; char c; long d; double e; , 则表达式a/c-b+d-e值的类型是 ______________。 20、设int a=2;,则执行a+=a*=15;后,变量a的值是__________。 21、一个C语言程序的执行起点是__________。 22、设double y[4][5];,则数组y中元素的个数是__________。 23、设int x=7,y=3,则表达式x%y+x/y的值是__________。 24、一个short型变量所占内存的字节数是____________________。

C语言程序设计试题集及答案

单项选择题 (002) 阅读程序题 (018) 程序填空题 (039) 编写程序题 (070) 一、单项选择题 导读:单项选择题要求从给出的四个备选答案中,选出一个最符合题意的答案。本类习题主要检查对C语言基本概念的掌握情况,读者可根据学习进度选做部分习题。在完成习题的过程中,不但要选出正确的答案,而且要清楚不正确的选项错在何处,以加深对概念的理解。对于掌握不准的问题,应该通过上机实验来检验。 【1.1】以下不正确的C语言标识符是____。 A) int B) a_1_2 C) ab1exe D) _x 【1.2】以下是正确的C语言标识符是____。 A) #define B) _123C) %d D) \n

【1.3】下列四组字符串中都可以用作C语言程序标识符的一组是。 ??? A) print B) i\am C) Pxq D) str_l ??? _3d one_half My->book Cpp ??? oodbs tart$it line# pow ??? aBc 3pai His.age while 【1.4】下面各选项组中,均是C语言关键字的组是。 A) auto,enum,include B) switch,typedef,continue C) signed,union,scanf D) if,struct,type 【1.5】下列不属于C语言关键字的是。 A) default B) register C) enum D) external 【1.6】C语言程序从main()函数开始执行,所以这个函数要写在____。 A) 程序文件的开始B) 程序文件的最后 C) 它所调用的函数的前面D) 程序文件的任何位置 【1.7】下列关于C语言的叙述错误的是____ A) 大写字母和小写字母的意义相同 B) 不同类型的变量可以在一个表达式中 C) 在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型 D) 同一个运算符号在不同的场合可以有不同的含义 【1.8】在C语言中,错误的int类型的常数是。 A) 32768 (超过了范围) B) 0 C) 037 D) 0xAF 【1.9】执行语句printf("%x",-1);屏幕显示____。 A) -1 B) 1 C) –ffff D) ffff 【1.10】已知long i=32768;执行语句printf("%d",i);屏幕显示____。 A) -1 B) -32768C) 1 D) 32768 【1.11】已知long i=65539; 执行语句printf("%d",i);屏幕显示____。 A) 65539 B) -3 C) 3D) 程序不能执行 【1.12】在C语言中,整数-8在内存中的存储形式是。 A) 1111 1111 1111 1000B) 1000 0000 0000 1000 C) 0000 0000 0000 1000 D) 1111 1111 1111 0111 【1.13】C语言中字符型(char)数据在内存中的存储形式是____。

《汇编语言程序设计》考核方式

考核方式与要求 期末总成绩构成:期末开卷考试60% + 平时作业10% + 实验和实验报告30%。 1、试卷考核方式与要求 “汇编语言程序设计”的课程要求是使学生具有一定的程序设计能力。虽然课程是通过80x86微处理机来开展教学的,但学习的重点不仅仅是学会80x86指令的语法和规范,更重要的是通过多读程序、多练习编写程序来掌握程序设计的基本方法和技术,要求学生在工作中遇到其他机型,都应该能利用所掌握的方法和技术顺利解决实际问题。因此,我们在教学过程的各个环节,特别是具有指挥棒作用的考核环节中,着重体现了“能力培养是首位”的指导思想。 为此,汇编课一直实行多元化考核方式,在考核评分上,平时练习和上机实验占40%,期末考试占60%。期末考试实行开卷考试,这样学生平时学习的关注点就会放在分析问题和编程实现的方法上,有利于学生开阔思路,发挥自身创造力。每年设计开卷考试的考题是有一定难度的,教师必须非常熟悉课程的知识点、重点和难点,以及体现这些知识和能力水平的多种题目类型。 2、实验方式与要求 实验的目标为:加强课堂上相关理论和技术学习的有效性;提高学生上机编程和调试的能力;培养学生科学实践的理念和独立分析问题、解决问题的能力。其设计思想是:实验内容兼顾基础性和综合性,实验题目由简单→复杂,程序功能由单一→综合,实验安排有基本要求题+自选题,实验题类型有验证型和自主创新设计型。 √实验课组织形式: 1.系教学实验室按课程要求负责上机环境配置及实验设备管理; 2.以班为单位组织上机实验,并将上机时间安排表发至每位同学; 3.每单元实验课安排一位助教(助博)负责实验指导和答疑; 4.学生每做完一个实验即可提交老师验收,老师将实验运行结果记录下来作为实验成 绩的依据。验收时教师要注意发现比较突出的好的实验例题(完成时间短、程序运行效率高); 5.要求提交实验报告,根据实验报告及实验运行结果的记录,评出实验成绩,实验成 绩一般占总成绩的30%。 √教师指导方法: 1.大课集体指导。每学期实验前教师安排一次实验指导课,讲解实验方法和实验要求; 2.每次实验课都安排助教(助博)进行个别或集体的实验指导和答疑; 3.对具有共性的、问题比较多的实验,主讲教师在课堂上再进行集体指导; 4.每学期对实验中出现的问题,对照实验题目进行分析、总结,以利于以后的教学。 5.对于实验中有创新点的学生,还可以请他上讲台为同学们介绍他的设计思路,引发大家展开讨论。

C语言程序设计试卷及答案

C 语言程序设计 笔试试题 试卷说明: 1. 笔试卷面总分100分,取卷面成绩的70%计入总分; 2. 综合成绩为平时成绩(10%)和实验成绩(20%)之和,占总分的30%; 3. 答题时禁止拆开试卷钉,试卷背面即为草稿纸; 4. 答题时间120分钟。 一、单项选择题。将正确答案填入下面框中。 (本题16分,每小题1分) 1. 有以下程序 main() {int a=1,b=0; if(!a) b++; else if(a==0) if(a) b+=2; else b+=3; printf(“%d\n ”,b); }则程序输出( A )。 A) 0 B) 1 C) 2 D) 3 2. 有以下定义:int a; long b; double x,y;则下列正确的是( A )。 A) a%(int)(x-y) B) a=x!=y C) (a*y)%b D) y=x+y=x 3. 若有定义 int (*p)[3];则下列说法正确的是( C )。 注意行为规范 遵守考试纪律

A) 定义了基类型为int的三个指针变量 B) 定义了一个名为*pt、具有三个元素的整型数值 C) 定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组 D) 定义了基类型为int的具有三个元素的整型数组 4. 有以下程序段 main() { int x=10; while(x--); printf("x=%d\n",x);} 则最后的输出结果是:( B)。 A) x=0 B) x= -1 C) x=1 D)while构成无限循环 5. 有以下程序: int fun() {static int x=1; x *= 2; return x;} main( ) { int i,s=1 ; for(i=1 ;i<=2 ;i++) s=fun() ; printf(“%d\n ”,s) ;} 执行后的输出结果为( D)。 A) 0 B) 1 C) 8 D) 4 6. void main( ){ int k=011; printf("%d\n",k++); } }程序输出结果是( D ) A)12 B) 11 C) 10 D) 9 7. 以下C语言标识符中,不合法的是( C)。 A) _2 B) a_b C) a--b D) AaBc 8. C语言允许函数类型默认定义,此时该函数值隐含的类型是( B)。 A) float B) int C) long D) double 9. 以下程序段运行结果是( B)。 enum weekday{aa,bb=2,cc,dd,ee}week=ee;

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

C语言程序设计模拟试题. 一、填空题. 1. C语言程序的三种基本结构是顺序结构,选择结构,循环结构。 2.if语句控制表达式只有其值为非0表示逻辑值“真”,其值为0表示逻辑值“假”。 3.说明语句:int b[10]; 定义了数组b有10个整型元素,这些数组元素的下标是从0开始,最大为9。 4. 有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]=0,a[2][1]=6. 5. 设x,y,z均为int 型变量,C语言描述”x或y中有一个小于z”的表达式是x

8. 在C语言中,十进制数30的八进制表示形式是036 ,十六进制表示形式是0x1e 9. C程序是由函数组成的。一个C程序由一个main()函数和若干个子函数构成。函数的构成可分为两部分:函数说明(或函数头) 和函数体。 10.标识符是指程序中的符号常量、变量、函数等对象的名称。在C语言中,标识符只能由字母、数字和下划线组成,且第一个字符必须为字母或下划线。 11.在C语言中整型常量有十进制、八进制和十进制三种表示方法。实型常量有小数形式和指数两种表示方法。 12.C语言中语句的作用是向计算机系统发出操作命令,从而完成一定的操作任务。C语句可以分为:表达式语句、函数调用语句、控制语句、复合语句和空语句等五种类型。 二、单项选择题) 1.一个C语言的执行是从 A (A)本程序的main函数开始,到main函数结束 (B)本程序文件的第一个函数开始,到本程序文件的 最后一个函数结束

河北工业大学汇编语言知识程序设计实验

汇编语言程序设计实验 网络*** *** 实验一 顺序与分支程序设计 一 、实验目的 1) 掌握顺序程序设计方法。 2) 掌握分支程序的结构及分支程序的设计,调试方法。 2) 学习数据传送及算术和逻辑运算指令的用法。 3) 熟悉在pc 机上建立、汇编、连接、调试和运行汇编语言程序的过程。 二、实验内容 1.实验六 从键盘上接收一位十进制数x ,计算y 值,并以十六进制形式显示出来,y 按下列公式计算。 ???????===-=+=) 6(2/) 5()4(2) 3(22 2 2X X X X X X X X X X Y 2..实验七 实验内容:从键盘上接收两个一位十六进制数x 和y ,然后再输入一个a-d 之间的一个字符,按下列要求计算。 a) 当输入字符为a ,则计算x+y ,并以十六进 制形式显示出来 b) 当输入字符为b ,则计算|x-y|,并以十六进制形式显示出来 c) 当输入字符为c ,则计算x*y ,并以十六进制形式显示出来 d) 当输入字符为d ,则计算x/y ,并以十六进制形式显示出来 三、实验代码 实验六 DATE SEGMENT X DB ?

DATE ENDS ;数据段 CODE SEGMENT ASSUME CS:CODE,DS:DATE START:MOV AX,DATE ;代码段 MOV DS,AX ;初始化ds寄存器 MOV AH,1 INT 21H ;读文件到缓冲区 CMP AL,33H ;比较指令 JB L0 ;A

C语言程序设计竞赛模拟试题

1、编写程序,从键盘上连续输入若干字符,直到回车换行符结束。统计并输出所输入的空格、 大写字母、小写字母,以及其他字符(不含回车换行符)的个数。 #include "" main() { char ch=' '; int i=0, j=0, k=0, m= ?1; do { if (ch>='a' && ch<='z') i++; else if (ch>='A' && ch<='Z') j++; else if (ch == ' ') m++; else k++; }while((ch=getchar())!='\n'); printf ("small letter = %d, capital letter = %d\n", i, j); printf ("space = %d, other = %d\n", m, k); } 编写程序,求100~999之间所有的水仙花数。所谓“水仙花数”,即是一个三位数,它个位、十位、百位数字的立方和,恰好等于该数本身。 #include "" main() { int i, j = 1; int nf, ns, nt; for (i =100; i<=999; i++) { nf = i%10; ns = i/10%10; nt = i/100; nf = nf * nf * nf; ns = ns * ns * ns; nt = nt * nt * nt; if ((nf + ns + nt) == i) { printf ("The %d's number is %d\n", j, i); j++; } } 编写程序,求1-1/2+2/3-3/4+4/5-5/6+6/7….-99/100= 4、编写程序,随机产生1-35个不重复的数,并打印结果。

汇编语言的编程步骤与调试方法

汇编语言的编程步骤与调试方法 一、汇编源程序的建立 1. 使用工具 (1)EDIT,记事本等文本编辑软件,编辑源程序,保存为.asm文 件; (2)ASM,MASM汇编程序,对源程序进行汇编,生成.obj文件- 目标文件,以及调试用.LST-列表文件和.CRF-交叉引用表; (3)Link连接程序,对使用的目标文件和库文件进行连接,生 成.exe文件,同时调试用.map-地址映像文件; 如果源程序无语法错误,上述三步将生成可运行的.exe文件, 如果运行结果无误,则完成对汇编程序的编程,如果运行后结果存 在错误,需要进行调试。 (4)Debug调试程序,对.exe文件进行调试,修改,直到程序正 确。 图3 目标程序生成步骤图2. 编程过程 (1)用文本编辑软件,编写扩展名为.asm的源文程序文件。 (2)用汇编程序对编好的源文件进行汇编。 命令行:masm [*.asm] ↙ 如果源文件中存在语法错误,则汇编程序将指出错误类型及位置,可根据这些信息重新编辑源文件,直至无语法错误,汇编后,将生成指定名称的目标文件.obj。 使用MASM50汇编程序进行汇编,输入命令行masm或者masm *.asm后,根据提示,输入文件名,在汇编没有错误的情况下,如屏幕所示:汇编程序可生成三个文件,*.obj,*.lst和*.crf。 *.obj-目标文件,用于连接生成可执行文件; *.lst-列表文件(可选),汇编语言汇编的机器语言与汇编语言对照表,可用于

调试; *.crf-交叉引用文件(可选),给出了用户定义的所有符号和对每个符号定义、引用的行号。 (3)目标文件的连接 命令行:link [*.obj] [*.obj] [*.lib] ↙ 连接程序,将多个目标程序及库文件,连接生成可执行的*.exe文件,同时可选择生成*.map文件。 *.map-地址映像文件,给出内存地址分配的有关信息。 下图所示屏幕,为Link连接两个目标文件,没有错误的情况下,生成*.exe 文件。 (4)执行程序 执行*.exe文件,观察程序运行结果,如果存在错误,需要进行调试。调试工具DEBUG是针对汇编语言程序设计的一种调试工具,熟练使用DEBUG有助于汇编语言程序员对于逻辑错误的调试。 二、汇编程序的调试

相关主题