高级语言程序设计C

发布 2021-04-23 14:42:28 阅读 6367

高级语言程序设计(c)模拟题四。

一、选择题(本题共20道小题,每题2分,共40分。)

1.以下有4组用户标识符,其中合法的一组是()。a) for -sub caseb) 4d do size

c) f2_g3 if abcd) word void define答案:c

解析:标识符的命名规则:由字母、数字、下划线组成,第一个字符必须是字母或者下划线,标示符的命名不能同c语言的关键字相同。

2.若有下面的程序片段:

int a[12]=,p[3], pp, i;for(i=0; i<3; i++)p[i]=&a[i*4];pp=p;

则对数组元素的错误引用是。

a) pp[0][1]b) a[10c) p[3][1]d) *p+2)+2)答案:c

解析:表示p[0]的地址,而pp[0]也为一个指针,它和pp用法相同,故pp[0][1]则表示a[1]的地址,正确。b.正确。

c.数组p的最大下标为2,错误。

d. *p+2)+2)表示a[10],正确。

3.若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为。

a) a<>0b) !ac) a=0d) a答案:d

解析:对if(a)而言,如果a的值不为0,则if语句括号中表达式的值不为0,if为真,选d。

4.若已定义:

int a[ ]

a) 10 1 9 2 b) 9 8 7 6 c) 10 9 9 0 d) 10 10 9 1答案:d解析:

第一遍循环:x=10,y=10,x>8,输出10 10后,x=9,y=1.第二遍循环:

x=9>8,输出9 1后x=8,y=2。第三遍循环:x=8,不满足条件,循环结束,无输出。

6.下面程序的输出是void prtv(int *x)

printf("%d", x);}int main()

a) 23b) 24c) 25d) 26答案:d

解析:主函数传递给prtv函数的x值为25,在printf中,先对x自增,再输出x值为26。

7.下面能正确进行字符串赋值操作的语句是。

a)char s[5]=;b)char s[5]=;c) char *s;s="abcdef"; d)char *s; scanf("%s",s);答案:c解析:

a. {中的’“’也作为字符串中的一个字符,故右侧字符串长度为7>5,越界,错误。b.右侧字符的分割符应使用‘,’而不是‘、’错误。c.正确。

d. s是一个字符串常量,应在定义同时初始化且不能通过scanf函数或任何其他方式修改其值,错误。

8.设x,y,z,t均为int型变量,则执行以下语句后,t的值为x=y=z=1;t=++x||+y&&+z;

a)不定值b)2 c)1 d)0答案:c

解析:||和&&运算符的优先级高于赋值运算符=,所以t为一个逻辑值,其只能为0或1,又表达式++x||+y&&+z为真,故t=1。

9.设p1和p2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是。

a)k=*p1+*p2;b)p2=k;c)p1=p2;

d)k=*p1 *(p2);答案:b

解析:b中不能将一个整形变量的值赋给一个指针变量,应改为p=&k或者*p=k。

10.请读程序:

#include<>

#define sub(x,y) (x)*yint main()

上面程序的输出结果是。

a) 12b) 15c) 16d) 20答案:a

解析:printf函数中输出的内容等价于(a++)b++,由于自增运算符优先级高于*,所以又等价于(a++)b++)应先输出a*b,后进行自增运算。

11. sizeof(float)的结果是:a)4b)6c)8d)不确定答案:d

解析:sizeof操作符用来测定数据类型位长,但在不同的系统中,同一数据类型的位长并不一定相同,故不确定,选d。

12.若执行下面的程序时从键盘上输入3和4,则输出是int main()

a) 14b) 16 c) 18d) 20

答案:b解析:scanf输入a=3,b=4,s=a=3,a13.以下程序的输出结果是# include <>int main()

a)不确定的(因变量无定义)b)0 c)-1 d)1答案:b

解析:null实际上为系统定义的一个符号常量,它的值就为0,所以输出0,选b。

14.读程序:

#include<>f(char *s)

int main()

上面程序的输出结果是。

a) 3b) 6c) 8d) 0答案:b

解析:’\0’为字符串结束标志,t函数的作用实际为统计参数字符串的长度并返回给主函数,所以输出结果为字符串长度6,选b。

15.在下列叙述中,正确的一条是()。a)以下语句是正确的:

char c=ab”;b)一维数组的定义可采用下列格式:int a(10);c)下面的语句定义了一个二维数组:float a[3,4];

d)以下两个语句中的a[3][4]的含义相同:int a[3][4]; a[3][4]=1;答案:a

解析:c语言数组可以在定义时用字符串赋初值,故答案为a。其他项均不符合c语言关于数组的定义格式。

16.若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是a) *p=&a;scanf("%ld",p);

b) p=(long *)malloc(8);scanf("%ld",p);

c) scanf("%ld",p=&a);

d) scanf("%ld",&a);答案:a

解析:a中*p=&a;赋值语句错误,应改为p=&a;,才可以将p指针指向变量a,选a。

17.若已定义:inta[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是。

a) p+1 b) a+1 c) a++ d) +p答案:c

解析:a为常量指针,不能修改其值,故不能使用自增运算符,选c。

18.下面程序的输出是int main();printf("%d %d %d %d",my,your,his,her);return 0;}

a) 0 1 2 3 b) 0 4 0 10c) 0 4 5 15 d) 1 4 5 15答案:c

解析:枚举元素my没有赋初值系统自动赋值为0,同理,枚举元素his没有赋初值,根据枚举元素赋值规则,系统将his的值赋为它前面的your的值+1,选c。

19.以下程序输出结果是int main( )

int main(),p=a;表达式(*+p)++的值是答案:3

解析:++p表示a[1]的地址,*+p表示a[1]的值,(*p)++则表示a[1]++

7. c语言中,二维数组在内存中的存放方式为按___优先存放答案:行。

解析:c语言规则是二维数组以行优先方式存放在内存空间。

三、判断题(本大题共7小题,每题2分,共14分。)

1.虽然goto语句能提高程序运行效率,但为防止程序结构混乱应该禁用()

答案:错。解析:goto语句应该是慎用而非禁用。

2.条件表达式可以取代if语句,或者用if语句取代条件表达式()答案:错。

解析:if语句可由花括号包含多条执行语句,这是条件表达式所不能实现的,因此二者不能相互替换。

3.在c程序中对用到的所有数据都必须指定其数据类型()答案:错。

解析:声明变量必须指定数据类型,用#define声明常量不用指定数据类型,只需指定常量名。

4.可以对字符型数组进行整体输入、输出()答案:错。

解析:字符型数组无法整体进行输入,只能逐个输入输出。

5.函数中的静态变量在函数每次调用时,都会重新设置初值()答案:错。

解析:函数中的静态变量只在函数第一次被调用时设置初值,之后会自动保存为上次调用结束后的值。

6.实参和与其对应的形参共占用一个存储单元()答案:错。

解析:实参形参各分单元。

7.一个实型变量的值肯定是精确的()答案:错。

解析:实型变量的精度是有限的,并不精确,而整型变量的值则是精确的。

四、程序分析题(用列表法列出关键变量在运行过程中的值)

本题共3道小题,每题4分,共12分。)1.下面程序的运行结果是include <>int main()

答案:aabcd

解析:i=5,c[5]=c[4]=’0’;i=4,c[4]=c[3]=’d’;i=3,c[3]=c[2]=’c’;i=2,c[2]=c[1]=’b’;

i=1,c[1]=c[0]=’a’;

i=0,不满足条件,循环结束,输出”aabcd”。

2.以下程序的执行结果是include<

int main(),i,s=0;for(i=0;i<=2;i++)s=s+a[i][i];

printf("s=%d",s);}

答案:s=15

解析:将for循环拆分来看:i=0时,s=0+a[0][0]=0+1=1i=1时,s=1+a[1][1]=1+5=6i=2时,s=5+a[2][2]=6+9=15i=3时,循环结束。

输出s=15.

3.给出下列函数程序完成的功能void prnt(int n, int aa[ ]

printf("");return 0;}

若变量n中的值为24,则prnt函数共输出行,最后一行有个数答案:54

解析:print函数的功能是依次输出形参数组中的数组元素,并且每输出5个后换行。

五、编程题(本大题共2小题,每题10分,共20分)

1.从键盘输入一个一维数组,将这个数组逆序输出。答案。

#define n 5

int main()

int a[n]=,i,temp;printf(" original array:");for(i=0;ia[i]=a[n-i-1];a[n-i-1]=temp;}

printf(" sorted array:");for(i=0;iprintf("%4d",a[i]);

解析:程序主体包括三个部分:输入数组元素;实现数组元素的逆序;输出数组元素。

1输入数组元素:通过一个for循环,利用scanf函数依次输入数组元素。○

2实现数组元素的逆序:通过一个for循环,将数组前一半元素和后一半元素逐个交换。○

a[i]=a[n-i-1]。

3输出数组元素:通过for循环,利用printf函数逐个输出数组元素。○

2.编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串**现的次数。

例如,假定输入的字符串为:asd asasdfg asd as zx67 asd mklo,子字符串为:as,则应输出6。

答案:#include ""#include ""#include ""

int fun(char *str,char *substr)

int main(){

char str[81],substr[3];int n; clrscr();printf("enter 1:")gets(str);

printf("enter 2:")gets(substr);puts (str);puts(substr);

n=fun(str,substr);printf("n=%d",n);

解析:我们可以将程序拆分成几个部分:

首先利用gets函数写入两个字符串,然后通过子函数实现统计功能,再将统计值输出。在子函数中,通过一个for循环遍历主串元素,并依次比较每一个主串元素以及它后一个元素是否均与字串两个元素对应相等,如果是,则计数器加1,最终遍历结束后将计数器的值返回给主函数。

高级语言程序设计C

重庆理工大学考试试卷。学号姓名考试科目 c语言程序设计 a 卷共 8 页。注意 所有答案必须写在答题卷上,否则不能得分。一 单项选择题 共30题,每题1分,共30分。1.结构化程序设计的3种结构是。a 顺序结构 选择结构 循环结构 b 分支结构 等价结构 循环结构。c 多分支结构 赋值结构 等价结构...

高级C语言程序设计复习

一选择题。1 下列数据中,为字符串常量的是 a m b you c hello d basic 2 若y为int 型变量,则执行以下语句后,y的值是 y 8 y y y y a 64 b 56 c 112 d 48 3 下面是一个初始化指针的语句 int px a 其中指针变量的名字应该是 a px...

高级语言程序设计 C试卷

华南理工大学计算机学院。高级语言程序设计 c i 试卷。学生证号姓名。注意事项 1.本试卷共五大题,满分100分,考试时间120分钟 2.所有答案请写在答卷上,试卷和答卷同时提交 一 单项选择题 每小题2分,共20分 1 下列字符列中,合法的长整型常量是 a 4.18e3 b 0.46793 c 4...