C语言的题目,求解答!

7、设int a = 3;则表达式a<1&& - - a>1的运算结果和a的值分别是___
A、0和2 B、0和3 C、1和2 D、1和3

15、下列程序的输出结果是_____
struct abc
{ int a, b, c; };
main()
{ struct abc s[2]={{1,2,3},{4,5,6}};
int t;
t=s[0].b+s[1].a%s[0].c;
printf("%d \n",t);
}
A、2 B、3 C、4 D、7

若有定义:
struct
{int m,n;} s[2]={{1,2},{3,4}},*p=s;
则表达式++p—>m的值是____________;
则表达式(++p)—>n的值是____________;

7.B

15.B

表达式++p—>m的值是2
表达式(++p)—>n的值是3
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-07-07
B
B
2
3
4
#include<stdio.h>
#include<iostream>
using namespace std;

int main()
{
struct helo
{
int m,n;
};
helo s[2]={{1,2},{3,4}};
helo *p=s;
cout<<p->m<<endl;
cout<<(++p->m)<<endl;
cout<<(++p)->n<<endl;//此时P的地址是S[1]的

system("pause");
return 0;

}
如果不习惯cout 可以用printf 去代替
第2个回答  2010-07-07
我前面俩人前两题都对,可是第三题都不对

7.B 逻辑与规定了如过逻辑与运算符左侧表达式为假,则右侧表达式不计算。因为a<1为假,所以 - - a>1是不执行的,a 的值就无变化

15.B t=s[0].b+s[1].a%s[0].c t=2+4%3=3

2,4 p指针开始指向s[0],++p->m在这里啊,++和->都是单目运算符,要按照从右至左的顺序计算,即先算的是p—>m值为1,然后对它进行自增运算变为2
(++p)—>n指针p向后移动,p指针指向s[1],(++p)—>n的值为4

柒宝很有钱途 他给你的程序可以验证这个题的答案的,他的程序是对的。给答案给错了。。。
第3个回答  2010-07-11
7.B a<1为假,故不用算--a>1,所以a<1&&--a>1的值为0,又因为--a>1未执行,故a的值为3
15.B
2 4
因为->的优先级高于++,故先算->,所以答案为2;
第二问有了括号,则先算括号内的,所以答案为4.
你可以用编译系统运行一下。嘿嘿

参考资料:

相似回答