题引
纸质周任务主要是各种运算符以及其优先级
对于各种符号有一个大致的了解与应用
下列给出优先级表
1.
题目:
已知 int x = 5, y = 5, z = 5; 执行语句x %= y + z后, x 的值为多少?
result :
5
解析:
按照优先级,首先运算y+z=10,再运算x%10=5
2.
题目:
下列程序运行结果为?
#include <stdio.h> int main(){ int a = 3, b = 3, c = 1; c = 5 ? a++: b--; printf("%d\n", c); return 0; }
result:
3
解析
这一题使用了三目运算符,可将其等价为:
if(c=5)c=a++; else c=b--;
c=5条件一定成立,所以c=a++,即c=3
输出3
3.
题目:
下面程序的运行结果是?
#include <stdio.h> int main(){ int a = 1,b = 10; do{ b -= a; a++; }while(b-- < 0); printf("a = %d,b = %d\n",a,b); }
result:
a=2,b=3
解析:
这一题使用do-while语句
意思为:首先执行b-=a,a++;当b- - < 0时跳出循环,输出此时的a,b的值
注意一点,判断时为b- -<0,代表自减操作前的b进行判断
结果较为容易求出
4
题目:
下面程序段运行的结果是?
#include <stdio.h> int main(){ int x,y; for(y = 1; y < 10;){ y=((x = 3 * y, x + 1), x - 1); } printf("x=%d, y=%d\n",x,y); return 0; }
result:
x=15,y=14
解析:
这一题使用逗号表达式,并且要考虑优先级
即依次按逗号进行运算,取最后一个逗号后的表达式
此题先运算x=3*y,再运算x+1,最后运算x-1,并且将x-1的值赋给y
当y>=10时,跳出循环,输出x与y的值
5.
以下程序的输出结果是?
#include <stdio.h> int main(){ int x = 10,y = 10,i; for(i = 0; x > 8; y = ++i) printf("%d,%d",x--,y); return 0; }
result:
10,109,1
解析:
这一题涉及for循环判断条件的应用
for循环结束条件为x>8,所以输出两组解
注意到两组解之间没有换行,所以结果如上,实际为10,10和9,1
注意使用++i与i++在for循环中,循环的次数不会发生改变
原因在于
无论是++i还是i++,都是在循环最后进行
6.
题目:
#include <stdio.h> int main(){ int i,sum; for(i = 1;i < 5; i++){ sum += i; } printf("%d\n",sum); return 0; }
result:
随机数
解析:
没有给sum初始化,sum的值为随机数
7.
题目:
已知 char a[] = “Beijing”; 则数组a所占的存储空间是几个字节?
result:
8
解析:
一个字母的存储空间为1字节
注意字符串末尾’/0‘同样为1字节
8.
题目:
当执行下面程序时,如果输入abc,则输出结果是?
#include <stdio.h> #include <string.h> int main(){ char str[10] = "12345"; gets(str); strcat(str,"def"); printf("%s\n",str); return 0; }
result:
abcdef
解析:
此题涉及gets输入字符串特点以及strcat(字符串连接)函数
通过gets输入abc覆盖了str数组之前的元素1
之后通过strcat函数将‘def’连接到新的str数组后面
之后输出str数组
9.
题目:
已知A的ASCII码值是65,并有如下定义:
#include <stdio.h> struct person{ char name[10]; int age; }classes[10] = {{"LiMing",29},{"HongGang",21},{"WangFang",22}};
下列表达式中,值为72的是__
A、 classes[0]->age + classes[1]->age + classes[2]->age
B、 classes[1].name[0]
C、 classes[1].name[5]
D、 classes -> name[5]
result:
B
解析:
A:->符号适用于结构体指针,代表指向结构体中的某个元素,所以A选项使用错误(非指针)
B:正确,结构体的第二项的name数组的第1个元素(H)的ASCll码值为72
C:结构体的第二项的name数组的第6个元素(a)的ASCII码值为97
D:代表**结构体的第一项的name数组的第6个元素(g),ASCII码值为103
get通过指针导入,如果想覆盖部分,例如从第二个字符串开始覆盖,只需gets(str+1)
strcat函数同样如此 ↩︎