概述
1.假定 a 为一个数组名,则下面存在错误的表达式为?
A.a[i]
B.*a++
C.*a
D.*(a+1)
答案:B
当a为数组名时,可以当做一维指针进行取值运算,但是由于数组名等同于常量指针,所以不可以对数组名进行赋值运算所以当a为数组时, a=任意表达式 这样的计算都是非法的
B:a代表数组的地址,不能被改变
C:*a相当于a[0]是正确的
2.若重载运算符+,则相应的运算符函数名是运算符函数名应该为operator+
3.在32位机器上,下列代码中,sizeof(a)的值是?
答案:22字节
i是4字节
共用体u因为强制为2字节对齐(#pragma pack(2)),所以为14字节,color枚举类型的实例是4字节
4.下面代码段的输出为多少?
void main () {
float x=2.0,y;
if(x<0.0) y=0.0;
else if (x<10.0) y=1.0/x;
else y=1.0;
printf("%fn",y);
}
答案:0.500000
浮点不可以用==判断是否相等,但是可以用><比较大小
1.0/2.0等于0.5
5.C语言中最简单的数据类型包括整型、实型、字符型,不包括逻辑型
6.阅读以下程序,当输入数据的形式为25,13,10↙,正确的输出结果为?
void main() {
int x, y, z;
scanf("%d%d%d", &x, &y, &z);
printf ("x+y+z=%dn", x+y+z);
}
答案:无法确定
当一次scanf调用需要输入多个数据项时,如果前面数据的输入遇到非法字符,并且输入的非法字符不是格式控制字符串中的常规字符,那么,这种非法输入将影响后面数据的输入,导致数据输入失败。当输入为25,13,10时,a的值是25,y和z的值将无法预测,所以x+y+z的值是无法确定的
7.在C语言中,能代表逻辑值“真”的是非0的数
8.一个 C 语言程序是由函数组成,C语言程序包括主函数与其他函数
9.下面代码在64为系统下的输出为?
void print_array(int arr[])
{
int n = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i < n; i++)
printf("%d ", arr[i]);
}
int main()
{
int arr[] = {1, 2, 3, 4, 5};
print_array(arr);
return 0;
}
答案:1 2
数组名作为函数形参退化为指针,在64bit的机器中是8字节
所以n=8/4=2,打印两个数字
10.请阅读以下程序,其运行结果是?
void main() {
char c='A';
if('0'<=c<='9') printf ("YES");
else printf("NO");
}
答案:YES
关系运算符具有左结合性,所以(‘0’<=c<=‘9’)等价于((‘0’<=c)<=‘9’)。因c=‘A’,所以(‘0’<=c)的值为真,即为1,1<='9’的值为真,即为1,所以执行if后面的语句,输出YES
11.数组名作为实参数传递给函数时,数组名被处理为该数组的首地址;数组名作为形参时,数组名退化成指针
最后
以上就是平淡棒球为你收集整理的165-牛客网C语言刷题9的全部内容,希望文章能够帮你解决165-牛客网C语言刷题9所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复