几道C语言问题!!!

希望各位能给出下面几道题详细的解答过程(运算过程),有些地方不是很懂,谢谢了!!!马上要考试了,在线等呀!!

1.假定所有变量均已正确定义,则下列程序段运行后y的值是 。
int a=0,y=10;
if(a=0) y--;
else if(a>0) y++;
else y+=y;
A)20 B)11 C)9 D)0

2.对以下程序段的叙述正确的是_______.
int x=1;
do
{ x= -1*x; }
while(!x)
A) 是死循环 B) 循环执行一次 C)循环执行二次 D)有语法错误

3.循环“for(i=0,x=1;i=10&&x>0;i++);”的循环执行( )。
A)无限次 B)不确定次 C)10次 D)9次

4、执行语句”for ( i=0; i++<3 ; ) ;”后,变量i的值为( )。
A、2 B、3 C、4 D、5

5.设x和y均为int型变量,则执行以下的循环后,y的值为( )。
for(y=1,x=1;y<=50;y++)
{
if(x>=0) break;
if(x%2==1) {x+=5;continue;}
x-=3;
}
A)2 B)4 C)6 D)8

6。若有以下数组说明,则i=10;a[a[i]]元素数值是( )。
int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};
A)10 B)9 C)6 D)5

7 已知:(设整型2字节,字符型1字节,浮点型4字节)
struct
{ int i;
char c;
float a;
}test;
则sizeof(test)的值是 。
A) 4 B) 5 C) 6 D) 7

8、设有以下说明语句:
typedef struct stu
{ int a;
float b;
} stutype;
则下面叙述中错误的是( )。
A、struct是结构类型的关键字
B、struct stu是用户定义的结构类型
C、a和b都是结构成员名
D、stutype是用户定义的结构体变量名

9.对于同类型的指针变量,不可能进行的运算是( )。
A)- B)= C)+ D)==

10. 有如下程序
main()
{ char s[]=“ABCD”, *P;
for(p=s+1; p<s+4; p++) printf (“%s\n”,p); }
该程序的输出结果是
A) ABCD B) A C) B D) BCD
BCD B C CD
CD C D D

我要的不仅仅是答案,我有答案,我想知道是怎么解的,谢谢各位了,希望有详细的求解过程和解释!!!
各位能给出解答过程么?我也知道答案,就是不会解答,谢谢了!!!

1.A
if (a=0)-->不成立. 因为a=0是赋值,相当于if(0)

if(a>0)-->不成立;所以执行y+=y
-->结果:y=20
***********************************************
2.有两个选择
D:有语法错误,因为while(!x)后缺分号.
若不是上面情况则选B.原因是:
x=-1*x--->x=-1
!x-->!(-1)-->!(true)-->false
结果:退出循环.仅循环一次.
***********************************************
3.A
该题关键是判断语句"i=10&&x>0".
i=10&&x>0-->i=(10&&x>0)-->i=(true && ture)-->i=true-->true
因此永远循环.
***********************************************
4.C
第1次:i=0-->判断成立(0<3)-->i=1(i++<3,指先比较i<3,再i加1)
第2次:判断成立(1<3)-->i=2
第3次:判断成立(2<3)-->i=3
第4次:判断不成立(3<3)-->i=4
退出
结果:i=4
***********************************************
5.没有合适答案.
执行后,y=1.原因如下:
第1次:y=1-->判断成立(1<=50)
-->if(x>=0)-->条件成立-->break-->退出循环(并不进行y++操作)
结果:y=1
***********************************************
6.C
a(a(i))-->a(a(10))-->a(9)-->6
数组第1个元素为a(0)=1,a(1)=4,...
***********************************************
7.D
i-->1字节
c-->2字节
a-->4字节
1+2+4=7
结果:字节总数为7字节.
***********************************************
8.B
应该:stu是用户定义的结构类型,而不是struc stu.
***********************************************
9.C
C语言中规定不能进行指针"加"操作.
***********************************************
10.D
第1次循环:
s指向"ABCD"中"A"位置,p指向"ABCD"中"B"位置.
printf输出"B"开始的字符串.
第2次循环:
p加1-->指向"ABCD"中"C"位置,判断成立(s指向"A"位置).
printf输出"C"开始的字符串.
第3次循环:
p加1-->指向"ABCD"中"D"位置,判断成立.
printf输出"D"开始的字符串.
第4次循环:
p加1-->指向"ABCD"中"D"后面,与s相关4个地址位,条件不成立.
退出.
输出结果:
BCD
CD
D
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-06-04
1:C,x=0执行第一个if,y--;程序完后y=9
2:B,先执行do,完后x=-1,为假,while条件不成立,停止循环,只执行一次
3:A,循环条件i=10结果为10,是真,x>0,是真,因此死循环
4:C,i=3时循环条件不成立,但++还要执行一次,所以完了i=4
5:没答案,运行完行y=1;因为break后,y++不执行
6:C,a[a[10]]=a[9]=6
7:没答案,答案是8,内存对齐,int和char的size和为4,float为4,共8
8:B,名字加成员合起来才是完整的自定义结构
9:C,指针不能加
10:D,p从s+1开始,即B开始,每次往后移一格,输出之后的字符串
第2个回答  2010-06-05
1.A
if (a=0)-->不成立. 因为a=0是赋值,相当于if(0)

if(a>0)-->不成立;所以执行y+=y
-->结果:y=20

2.B
若不是上面情况则选B.原因是:
x=-1*x-->x=-1
!x-->!(-1)-->!(true)-->false
结果:退出循环.仅循环一次.

3.A
该题关键是判断语句"i=10&&x>0".
i=10&&x>0 i=10恒为真 判断条件只要看x>0,x=1,x>0也恒为真
因此永远循环.

4.C
第1次:i=0-->判断成立(0<3)-->i=1(i++<3,指先比较i<3,再i加1)
第2次:判断成立(1<3)-->i=2
第3次:判断成立(2<3)-->i=3
第4次:判断不成立(3<3)-->i=4
退出
结果:i=4

5.没有答案.
执行后,y=1.原因如下:
第1次:y=1-->判断成立(1<=50)
-->if(x>=0)-->条件成立-->break-->退出循环(并不进行y++操作)
结果:y=1

6.C
a(a(i))-->a(a(10))-->a(9)-->6
数组第1个元素为a(0]=1,a(1)=4,...

7.D
i-->1字节
c-->2字节
a-->4字节
1+2+4=7
结果:字节总数为7字节.

8.B
应该:stu是用户定义的结构类型,而不是struc stu.

9. C
指针相减可得偏移量 可以进行赋值和比较 相加无意义

10。D p=s+1即p存储s第1个元素开始的字符串 bcd 每++一次 指针位置向后移动一次

又复习了一下c语言 题目很有迷惑性
考试嘛,最好的方法还是背题库 考试的时候秒杀
第3个回答  2010-06-04
A a=0 赋值运算 值为a a==0 执行 y+=y
B x=-1 非0即为真 !x为假 执行一次
A i=10&&x>0 还是赋值运算符 i=10 为真 x永为1
C i等于3的时候不满足跳出循环 还要执行一次 ++
1 if(x>=0) break; 直接跳出了 y没变
C 从a0开始找 a10=9 a9=6
8 假设内存从0开始 i占用 0 1 c占用 2 a应从3号开始存 但float是最大元素 struct对齐方式应以float为准 即申请内存方式 每次申请4字节
i+a 占了前3字节 需要跳过3号内存 令申请4字节给 a 所以一共占8字节
D stutype 是结构名 他不是变量
C 指针相减可得偏移量 可以进行赋值和比较 相加无意义
D p=s+1即p存储s第1个元素开始的字符串 bcd 每++一次 指针位置向后移动一次
第4个回答  2010-06-04
1.C
2.B
3.A
4.C
5.正确答案为1,没选项
6.C
7.答案为12
8.B
9.B
10.D
相似回答