帮忙看几道C语言的期末题目(终)~~谢谢!

11.以下程序中,不合法的函数调用语句是
void fun( float x[ ]) { …… } main( )
{ float a[9],b[4][5]; A)f(a+5); B)f(b); C)f(a[4]); D)f(b[2]); }
B和C都是错的吧?它们错在哪里??

18.下面程序的运行结果是
{ char ch[7]="12ab56"; int i,s=0;
for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2) s=10*s+ch[i]-'0'; printf("%d\n",s); }
A)1 B)1256 C)12ab56 D)12
为什么是1,我怎么算的是15?

1.以下选项中,均符合C常量形式的是
A)’\123’, 1e5-2 B) 0xffce, ‘\\’ C) 0246, ‘10’ D) 102, 123
答案给的是B!!A这样写不对吗:1e5-?? C中的0246表示八进制的246,难道也错了吗?

8. 有一函数关系见表,下面程序段中不能正确表达上面关系的是

A)if(x==0) y=10000; else y=1.0/x; B)if(x) y=1.0/x; else y=10000;
C)y=10000; if(x!=0) y=1.0/x; D)y=1.0/x; if(x==0) y=10000;
这一题怎么看觉得都是正确的啊?

11.都是错的。因为定义的函数是fun,而调用时却是f,通不过编译,提示未定义错误。若不计此,C是错误的,因为a[4]不是指针,而fun的形参是数组即指针;B也是错误的,因为b是二维数组而不是一维数组,类型不配。若是多选题则B、C是答案,若是单选题则是题错了。

18.因为for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2)中控制变量是i+=2,所以只操作了1,下一次就操作a了,可是a不在ch[i]>='0'&&ch[i]<='9'之内,循环就跳出了。

1.A不对啊!指数的写法是1.5e2或1.5E+2之类,而不是1e5-2;C中是'10'不对,你见过这种写法吗?但D为什么不对呢?是多选题吗?

8.D错误的。当x=0时直接报错,中止执行!追问

谢谢了~~~D) 102 应该是10的二次方,没有复制出来~~~~
可不可以再帮我看看
http://zhidao.baidu.com/question/537808315?quesup2&oldq=1&sort=6
这个帖子上面的问题!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-03
11. B是二维数组
18. 程序只执行了一次,第二次CH[i]=‘a’;
1.A中间我看到了 1e5-2,你认为计算机怎么解释e是个什么东西,你有定义么?嗯,还有字符的\确实貌似是个特殊字符。
C 0246,我真没有看出来它哪里写着八进制的...至少计算机是不可能认识的,除非你像0xFFFF,这样子的标识。

8.木有看出来那个不能表示该逻辑关系...

学习了,其他几位高手的讲解,获益,感谢!
第2个回答  2013-04-03
C,不应传float,应该传float指针。 B是数组的数组(二维数组),相当于指针的指针
A, 因为for循环第二次时, i=2, ch[2]='a',已经不满足for循环条件了。
A和C中字符串应该用双引号
D不对,如果x==0,那么1.0/x会出错的!
第3个回答  2013-04-03
11.C
18.A(关键是i+=2,判断完‘1’后直接跳到了‘a’。跳到‘a’之后循环条件不满足了,不会再加后面的‘5’)
1、A
8、A
第4个回答  2013-04-03
11、
fun(b); b为二维数组的首地址,而fun函数只接受一维数组首地址作为参数。参数类型不匹配
fun(a[4]); a[4]是一个float型的值·不是数组·参数类型不匹配

18、
for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2) 意思是取字串ch奇数位的数字~满足条件的就只有1··
所以s = 0*10 + 1 = 1
1、
'\123'这个的写法不对,字符串常量是双引号的"\123"···
'10' 这个也是不对的,字符常量没有10·只有0~9···0246是常量哈
D怎么不对呢·都是整数啊·应该也是常量猜对啊·-。-·
8、
AD不能吧·注意x=0·表示x被赋值为0··不是x等于0