校软件班招新考试A卷 题解
选择题:
第一题:A
参考资料:
1 标识符必须以字母a~z、 A~Z或下划线开头,后面可跟任意个(可为0)字符,这些字 符可以是字母、下划线和数字,其他字符不允许出现在标识符中。
2 标识符区分大小写字母
3 标识符的长度,c89规定31个字符以内,c99规定63个字符以内
4 C语言中的关键字,有特殊意义,不能作为标识符
5 自定义标识符最好取具有一定意义的字符串,便于记忆和理解。
A:C语言中有关键字while,但那是小写,A项While是大写,正确 参考2
B:标识符必须以字母,下划线开头,B项以数字开头,错误 参考1
C:C语言中有关键字 main ,错误 参考4
D:标识符不容许出现别的字符 如D项中的&,错误 参考1
第二题:A
C语言是面向过程的语言,但C语言的基本单位是函数
面向过程vs面向对象:
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
参考链接:https://blog.csdn.net/Edward_Wong/article/details/39533245
子例程:
一般地认为,子例程是某个主程序的一部分代码,该代码执行特定的任务并且与主程序中的其他代码相对独立。 子例程又被称为子程序、过程、方法、函数等。 在主程序中可以调用子例程来执行。
第三题:D
A:main函数可以放在任何地方,程序执行的入门是main
B:C语言区分大小写
C:C语言总是从main函数开始执行
D:正确
第四题:B
参考资料:
运算符优先级:https://zh.cppreference.com/w/c/language/operator_precedence
++,--操作符 :http://c.biancheng.net/cpp/html/460.html
int a = -1, b = 4;
int k = !(b-- <= 0) && (++a < 0);
printf(“%d %d %d”, k, a, b);
对于 k 的值,要看运算符的优先级来判断
首先执行括号里面的运算,两个括号同时进行,
(b-- <= 0) 先执行b-- ,b=3,然后判断b<=0的值 逻辑判断只有 真,假,对应1和0,
此括号为 0
(++a <0) 先执行++a,a=0, 然后判断 a<0 的值,为假,0
括号内运算完毕之后,执行!运算,第一个括号是假,所以!0=1
最后执行 && 运算, 1&&0 == 0 ,假,所以 k=0
第五题:C
int array[12] = {1, 4, 7, 10, 2, 5, 8, 11, 3, 6, 9, 12};
int i = 10; 则 array[array[i]]
首先明确一个概念,array[12]的下标是从0-11的,没有12;
数的时候,从0开始,array[0]==1
嵌套数组,先看最内层的值 array[i]=9,array[9]==6
填空题:
(1) IDE:集成开发环境,一类辅助开发计算机程序的应用软件
(2) 关机是:shutdown -s -t 30 考察cmd基础命令
(3) 二进制数111010011,其对应的八进制数为:__723_________,对应的十进制数为:_____467_____,
对应的十六进制数为:______1D3_____。
参考:https://jingyan.baidu.com/article/495ba84109665338b30ede98.html
(4) int a = 5, b = 2; 那么 a / b = ____2____________
1) C语言中 int型正数除法向下取整 / ,负数除法的取整方式和编译器有关
2) 参考:https://blog.csdn.net/a197p/article/details/45506821
(5) 2 逗号表达式
1) http://www.cnblogs.com/hnrainll/archive/2011/08/03/2126660.html
2) %运算符:取模运算符,整除后的余数
(6) LLP64,LP64
1) 参考:https://www.cnblogs.com/lsgxeva/p/7614856.html
(7) Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器。
参考:https://www.cnblogs.com/bravestarrhu/archive/2012/05/02/2479461.html
(8) 在当前目录下创建文件夹,http://www.runoob.com/linux/linux-comm-mkdir.html
(9) 随机存取存储器
(10) 浏览器服务器模式,(万维网)
(11) 百度吧,IDE一大堆。。。
(12) Internet是在美国较早的军用计算机网ARPAnet的基础上经过不断发展变化而形成的。
(13) 程序 = 数据结构 + 算法
(14) 百度,高级语言。。很多
(15) Win+E
判断题:
(1) 对,参考:https://blog.csdn.net/u013372487/article/details/45498677
(2) 错,https://zhidao.baidu.com/question/87432718.html?qbl=relate_question_0
(3) 错,汇编程序的语言是对应CPU的汇编语言
(4) 对
(5) 对,外存储介质就是硬盘
(6) 错,加载到内存就可以执行了
(7) 对
(8) 错,http代表超文本传输协议
(9) 错
程序分析题:
(1)
1 #include <stdio.h> 2 3 int main(void) { 4 5 int a[ ] = {2, 3, 4, 5, 6, 7, 8, 9}; 6 7 int i, r = 1; 8 9 for (i = 0; i <= 4; i++) { 10 11 r *= a[i]; 12 13 } 14 15 printf(“%d”, r); 16 17 return 0; 18 }
输出:720 (根据for循环,执行连乘,从a[0]--a[4],2*3*4*5*6)
(2)
1 #include <stdio.h> 2 int main(void) { 3 char w[20], a[5][10] = {"abcde", "fghij", "klmno", "pqrst", "uvwxy"}; 4 for (int i = 0; i < 5; i++) { 5 w[i] = a[i][i]; 6 } 7 w[5] = '\0'; 8 printf("%s", w); 9 return 0; 10 }
输出:agmsy
a[5][10]
|
0 |
1 |
2 |
3 |
4 |
0 |
a |
b |
c |
d |
e |
1 |
f |
g |
h |
i |
j |
2 |
k |
l |
m |
n |
o |
3 |
p |
q |
r |
s |
t |
4 |
u |
v |
w |
x |
y |
w[5]=’\0’ 字符串默认的结束标识为’\0’
(3)
(1) 以下程序拟计算 sum = 1 + 1 / 2 + 1 / 3 + … + 1 / 50。
1 #include <stdio.h> 2 3 int main(void) { 4 5 int i = 1; 6 7 double sum = 1.0; 8 9 do { 10 11 i++; 12 13 sum += 1 / i; 14 15 }while(i < 50); 16 17 printf("sum = %lf", sum); 18 19 return 0; 20 21 }
但是在运行时并不能得到预期结果,请作答:
① 哪里错了
Int i=1;
② 为什么错了
1/i 的值为总为0
③ 应该怎么修改
double i =0 ;