大学计算机模拟考试常见试题与解析(二)

大学计算机模拟考试常见试题与解析(一)

第一题

Markdown

答案 A

A错在是以o开头而非0开头
以0开头数字是表示8进制,如013表示十进制的11.

D, 5L表示长整型的5

第二题

Markdown

答案 C
考察的是C语言的除法特性,只保留整数位,如1/2 = 0,此题用排除法较易。
不妨设a=1,b=2;
A 选项 a/b = 0, 0 * b = 0, 错误
B 选项 a/b = 0,0 * b = 0 , 0/ a = 0,错误
C 选项 a/b = 0, 0 * b = 0, 0+ a%b = 1, 1是等于a的, 正确
D 选项 a*b = 2, 2/a = 2, 2 * b = 4,错误

第三题

Markdown

答案B

讲道理main函数还是可以调用的。真的可以自己调用,在GCC编译器下,大家可以试一试以下代码。

#include <stdio.h>
main()
{
    printf("Hello World
");
    main();
}

结果就是屏幕上一直输出Hello World,停不下来而已。
至于VC的编译器,不太清楚是否会编译报错。

第四题

Markdown

答案B

A 选项, 揣摩一下出题人的意图,他可能是想让你选全部初始化为0的。如果你是想让0个元素第一个为10,其余为0,这个选项是没毛病的。
C 选项,花括号里没写值。
D 选项,不能用小括号。

第五题

Markdown

先看循环条件(y =123)&&(x < 4)
y=123返回的值是123,在条件判断时为真,(x< 4)当且仅当x< 4时返回真。然后直接看x的值就好了。循环是,x的值为0,1,2,3,当4时(x< 4)为假,退出循环。 故为4次。

答案B

第六题

Markdown

注意数组下标是为0开始的,故数组a的实际存储情况为

1 2 0
3 4 0
5 6 0

双层for循环是求解a[1][0]+a[1][1]+a[2][0]+a[2][1]+a[2][2] = 3+4+5+6 = 18

答案 A

第七题

Markdown

scanf(“格式控制字符串”,地址表列)
故地址表列里面需要是变量的地址

A 选项,p已经保存了变量n的地址,此时scanf(“%d”,p)即可。&p表示的是指针p的地址,故错误。
B 选项,* p表示对n的引用,不是地址,错误。
C 选项,p没有进行初始化,即没有指向任何一个变量,故将n赋值给*p,是没有意义的,错误。
D 选项,首先将p指向n,然后将m的值赋给p,即赋给n,结果导致n为5。

* 答案 D*

第八题

Markdown

在声明二维数组的时候,第二维的数量不能为空!

答案 D

第九题

Markdown

看while里面的if,当p[i]%2 !=0时为真,否则为假。故求上面数组的奇数的和即可。

答案 C

第十题

Markdown

按照题意写出a数组即可
分别是10 9 8 7 6 5 4 3 2 1
注意数组的下标。
简单方法是,a[2]在上面for循环求得时候,i = 2,故a[2] = 8,同理a[5] = 5,a[8] = 2; 最后结果852

答案 C

第十一题

Markdown

%x表示以十六进制输出,%o表示以八进制方式输出。

答案B

注意在输入声明变量的时候如果是int a=0x10表示10是十六进制数,若是int a = 010 表示10是八进制数。

第十二题

Markdown

注意C语言区分大小写,故IF不等同于if,所有的关键字(void, int break, for, while等等)都不是合法标识符。
合法标识符不能以数字开头,以下划线或者字母开头是允许的。
答案 A

第十三题

Markdown

考察双目运算符,逗号表达式,赋值语句。
逗号表达式,从左往右依次计算,整个表达式的值,为最后一个表达式的结果。
首先a=2,b=5,然后判断a是否大于b,若是,a自增1,否则b自增1,显然应该是b自增1,最后整个表达式的值为a+b=2+6=8.

答案8

第十四题

Markdown

刚才十一题提到了%x表示以十六进制输出,%o表示以八进制方式输出,故先将97(a的ASCII码)转换成十六进制与八进制,然后输出。
注意,允许地址表列中实际要输出的数据个数多,多余的将被省略。若地址表列中的个数比实际输出的少,则输出随机数字。
第二个printf中,需要注意%%表示输出一个%,则后面的d不构成格式控制字符串%d,故会单独输出d,由于没有要求输出数字,则地址表列的k被忽略掉。

答案C

原文地址:https://www.cnblogs.com/pengwill/p/7367078.html