简单C程序题!

来源:百度知道 编辑:UC知道 时间:2024/06/18 05:20:56
(1)一维数组的声明中正确的是
A int a[ ]; B int n =10,a[n];
c int a[10+1]={0}; D int a[3]={1,2,3,4};
为啥选C啊,其他的错在哪?
(2) 已知有函数f的定义如下:
int f(int a,int b)
{ if(a<b)return(a,b);else return(b,a); }
在main函数中若调用函数f(2.3)
得到的返回值为什么是3而不是2和3
这里还有个第二题呢!

第一个问题比较简单
A既没有确定数量也没有赋予初始值;
B中数组的定义里面的数字必须是常量,不能是变量;
C是对的,所有的值(a[0]--a[10])都是0
D是只有3个元素(a[0]--a[2])却赋了4个值

第二个问题是一个逗号表达式的考察
逗号表达式是
“表达式a,表达式b,……,表达式n”的形式
逗号表达式中的每一个表达式可以进行分别的计算,比如表达式b是a++那么运算完成后a就已经自加。
逗号表达式的值是逗号表达式最后一个表达式的值,也就是表达式n的值。那么题目中的a,b的值就是b;b,a的值就是a。这个程序实现的是返回较大数的功能。

答案是自己打的……希望能给分

楼上说的很对;
补充下,楼主要想返回两个数可以这样:
void f(int a,int b,int *c,int *d)
{if(a<b) { *c = a; *d = b;}
else { *c = b; *d = a;}
调用是用 f(a,b,&x,&y);
a,b的值就给x和y了。
同理可以返回一个数组。

(1)因为数组在定义时必须声明数组的大小,A是错的。声明时不能有变量,B是错误的。D越界了。C是初始化。
(2)你的函数实现的是输出两个值中较大的一个。()实现的功能是return后面那个数。

(1)A 未定义数组长度
B 下标之能是整型常量或整型表达式
D 数组越界
(2) 一个函数只能返回一个函数值,如果需要通过函数调用改变两个及以上的数据则应该使用指针

A错在没有确定个数
B错在不能用变量
D错在个数错误

return只能 return一个数字