C语言选择题

求解正确答案,附上解析,多谢!~

// 函数只要要有一个返回值,这个不成立,函数可以没有返回值,为void
// 第二个题看不完整,但可以判断是错误的。变量名不要求一致,只要函数参数类型一致即可。
// 函数的形参和对应的实参个数应相等,类型可以不兼容,这个不成立,首先,函数的形参和对应的实参个数不一定要求相等,像printf( )这样的函数就可以接受可变参数,实参的个数不确定。其次对于一般的函数,函数参数的类型如果不兼容,调用的时候必须进行强制转换,要不然无法编译通过。
// 函数的形参在被调用前是没有确定值的。这个是对的,因为函数的形参的值就是通过拷贝实参来进行参数传递的,实参通过压栈的方式来进行。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-04-29
自己做的仅供参考:
可能有不对的好久不看了,快忘光了!呵呵
aabcd
bddbd
dbdbd
35(数组说明的一般形式为:
类型说明符
数组名
[常量表达式],……;
不能在方括号中用变量来表示元素的个数,
但是可以是符号常数或常量表达式。
例如:
#define
FD
5
void
main()
{
int
a[3+2],b[7+FD];
……
}
是合法的。但是下述说明方式是错误的。
void
main()
{
int
n=5;
int
a[n];
……
}
问题:const变量
&
常量
为什么下面的例子在使用一个const变量来初始化数组,ANSI
C的编译器会报告一个错误呢?
const
int
n
=
5;
int
a[n];
答案与分析:
1)、这个问题讨论的是“常量”与“只读变量”的区别。常量肯定是只读的,例如5,
“abc”,等,肯
定是只读的,因为因为常量是被编译器放在内存中的只读区域,当然也就不能够去修改它。而“只读变量”则
是在内存中开辟一个地方来存放它的值,只不过这个值由编译器限定不允许被修改。C语言关键字const就是用
来限定一个变量不允许被改变的修饰符(Qualifier)。上述代码中变量n被修饰为只读变量,可惜再怎么修饰
也不是常量。而ANSI
C规定数组定义时维度必须是“常量”,“只读变量”也是不可以的。
2)、注意:在ANSI
C中,这种写法是错误的,因为数组的大小应该是个常量,而const
int
n,n只是一个变
量(常量
!=
不可变的变量,但在标准C++中,这样定义的是一个常量,这种写法是对的),实际上,根据编译
过程及内存分配来看,这种用法本来就应该是合理的,只是
ANSI
C对数组的规定限制了它。

32(b超出范围了,c不该用单引号,同理d也是)
33(别忘记空格也算一个,‘\0’不算它在计算数组长度是只是一标志)
34(好像就到a[4],没有a[5],它是不合法的)
35(感觉像是选这个,不太肯定)
39(基本概念)
40(c语言的规定)
41(结构体变量所占的内存长度是各成员内存长度的和)
42(s[0].x=1
s[0].y=2
s[1].x=2
s[1].y=7)
43(共用体变量中各成员公用一段存储单元,所以任一时刻即只能有一种数据类型放在内存单元,即在任一时刻
只有一个成员有效,其他没意义。在共用体中起作用的是最后一个元素)
44(4+w*4+w=4+2*4+2=14)
45(把break和continue的用法搞清楚,书中有我就不具体说了)
呵呵!上面都个人见解,仅供参考!
第2个回答  2014-06-02
看完题目,觉得这种题目就是在瞎扯蛋

对于第一个选项,标准C(ANSI C)中函数不准没有返回值,可以是void;而在VC 编译器中main()函数就允许没有返回值,所以不知道对错。
对于第二个选项,看不懂什么意思。
对于第三个选项,这个类型不兼容是不一样,还是完全不兼容...比如实参是int,形参是long long,这样的话会隐式类型转换,是可以的。
对于第四个选项,什么叫做函数的形参被调用前?如果说是函数被调用前形参没有确定值的话,MD,都没有用它你管他有没有值做什么。

总结,劝题主放弃这些脑残的题目吧,让C语言教育走向正轨吧
相似回答