请教几道c语言题 求详解 主要解答我的问题就行,不好意思,题比较多辛苦了,回答得好的话,还有追加奖励。

22、执行以下语句后,y 的值为___A___。 int x,y,z; x=y=z=0; ++x || ++y && ++z;
0
1 不应该是先运算&&发现都为真,然后++x被短路了吗?这样应该选B啊?
2
不确定值
28、设函数fun的定义形式为 int fun(int a[],int n) { int s=0,i=0; for(i=0;i<n;i++)s+=a[i]; return s; } main() { int a[10]={1,2,3,4,5}; printf("sum=%d", fun(&a[2],2)); } 则程序的运行结果为___C___。
3
5
7 没明白这个7是怎么出来的,求详解
9
30、以下不正确的定义语句是___B___。
double x[5]={2.0,4,0,6,0,8,0,10.0};
int y[5]={0,1,3,5,7,9};
char c1[]={'1','2','3','4','5'};
char c2[]={'\x10','\xa','\x8'}; 请问 D中的'\x10','\xa','\x8都是什么意思?这算字符吗
32、以下能正确进行字符串赋值操作的是___D___。
char s[5]={"12345"};
char s[5]={'1','2','3','4','5',‘6’};
char *s;*s="12345"; C 为什么不对
char *s="12345";
35、下列程序的运行结果是___B___。 #include <stdio.h> #include <string.h> void f (char *s, int n) { char a,*q1,*q2; q1=s;q2=s+n-1; while(q1<q2) { a=*q1++; *q1=*q2--; *q2=a;} } main() { char b[]="ABCDEFG"; f(b, s
GAGGAGA
AGAAGAG 这题没明白求详解
GFEDCBA
AGADAGA
38、下列变量中合法的定义是__A___。
short _a=2-1
long if=0xabcL
double 1_d=1.5e2 C D都错在哪了求详解
15、若输入字符串:abcde<回车>,则以下while循环体将执行___A___次。 while((ch=getchar())=='e') printf("*");
1次
死循环 没明白求详解
0次
5次
19、下面程序段的运行结果是___B___。 i=1;s=1;a=0; do{a=a+s*i;s=-s;i++;}while(i<=10); printf("%d",a);
2
-2 怎么的数?我的的结果怎么不一样?求详解
3
0
24、若有说明:int a[][3]={1,2,3,4,5,6,7};则数组a第一维的大小是___B___。
2
3 为什么不是2
4
无确定值

22、答案是1,VS2010下编译结果是1

28、fun(&a[2],2)),传进去的数组是3,4,5,0,0,0,0,0

30、刚查了下,\x标示16进制,即\x10 就是 10进制的16,\xa 就是10进制的10

32、这只是定义了一个指针,没有指出指向哪里,不能赋值

35、你题目没打完吧

38、去看下变量定义规则,首字母不能使数字等,特殊字符不能当变量名等

15、输入abcde,ch=getchar() = ‘a’ ,=='e'不成立,故跳出循环,应该是0次,VS下测试没有*输出

19、VS下运行结果-5

24、如果是2那他只有6个数追问

非常感谢,你回答的已经很完整了
不好意思再把22,19题详细讲一下,分就全给你,谢谢!!

追答

22、++x 为真,对于||,前面真,后面就不用管了,必定真

19、其实就是 1-2+3-4+5-6+7-8+9-10
就是-5

追问

不好意思刚才忘问了
22题我刚查过书&&优先级高于|| ? 到底是谁得优先级高于谁
38 D是 float a=1.5e2.7 还有B和D哪错了?

追答

22、先操作++y && ++z ,然后操作 ||
有这样一个例子printf("%d",1||1&&0); 输出1 就能看出来了

38、B:if是关键字,不能当变量名
D:变量开头只能是字母或_,数字不行

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-01-07
22 '||'的优先级比'&&'高,算出++x为真,后面就不计算了
28 fun(&a[2],2) -> 传经去的数组为 a[2]开始的两个值,即为 3,4,求和当然是7
30 ‘\x’是转义符号,表示16进制,跟好面的数字组成一个值,算是一个8bit的字符。
32 数组只能在变量初始化的时候整体赋值,C是在变量初始化后赋值,要通过字符串操作函数如strcpy或者memcpy等来操作。
35 题目没写全,f(b, s后面是什么?
38 只看到3个选项,D在那里?double 1_d=1.5e2 错在变量不能以数字开头
15 看清楚题目“while循环体”,注意循环体指的是“printf("*")”这一句,只有输入为e的时候才会执行一次。
19 无解,我执行的结果是 -5
20 C语言语法如此,请看c语言教程。多维数组的数组长度是一样的,a[][3]的数字3已经决定了,a[0],a[1]]的长度都是3.追问

22题我刚查过书&&优先级高于|| ? 到底是谁得优先级高于谁
38 D float a=1.5e2.7
还有B哪错了?

第2个回答  2013-01-07
第一题:是A。
0
++x是1
||的运算方式是只要前面为1,则后面不进行运算,结果肯定唯一

++y && ++z这些实质上是没有运行的语句
第3个回答  2013-01-07
主要解答我的问题就行,不好意思,题比较多辛苦了,回答得好的话,还有追加奖励。
相似回答