两道c语言题目求解

第一题:有以下程序#definef(x)(x*x)main(){inti1,i2;i1=f(8)/(4);i2=f(4+4)/(2+2);printf("%d,%d\n"... 第一题:有以下程序
#define f(x)(x*x)
main()
{int i1,i2;
i1=f(8)/(4);
i2=f(4+4)/(2+2);
printf("%d,%d\n",i1,i2);
}
程序运行的输出结果是_____
A.64,28 B.4,4 C.4,3 D.64,64
答案是C,我很奇怪,为什么i2会变小呢?
第二题:以下程序输出的结果是_______
main()
{struct cmplx{int x,int y} cnum[2]={2,4,3,1};
printf("%d\n,cnum[0].y/cnum[0].x*cnum[1].y");
}
A.0 B.2 C.3 D.6
这题选B。我奇怪的是cnum[2]这不是一个只有两个元素的一维数组么,为什么数组中有四个元素;还有前面的struct cmplx,不是只声明了 一个结构体类型么,结构变量都没有~~~最后~~~为什么会有这么一个答案我也不清楚。
另外加个小问题。
include<stdio.h>
main()
{char c1='1',c2='2';
c1=getchar();c2=getchar();
putchar(c1);putchar(c2);}
我奇怪的是,char类型后面跟的如果是整形,不是不能加''么,只有字符的时候才能加''么~~
对不起了各位,第一题是我写错了。应该是i1=f(8)/f(4);
i2=f(4+4)/f(2+2);
展开
 我来答
百度网友21b1471
2010-03-18 · TA获得超过227个赞
知道答主
回答量:35
采纳率:0%
帮助的人:43万
展开全部
第一题可能是题目印错了,如果的确是你所写的那样;答案是16,6
#define f(x)(x*x)
main()
{int i1,i2;
i1=f(8)/f(4); //看一下除数
i2=f(4+4)/f(2+2);//除数
printf("%d,%d\n",i1,i2);
}
这样答案就是C,

第二道题,题目可以这样看
main()
{
struct cmplx
{
int x;
int y;
}cnum[2];

cnum[0].x=2;
cnum[0].y=4;
cnum[1].x=3;
cnum[1].y=1;

printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].y);
}

第三题 c1='1'对应的是字符1,对应的十进制为49;
如果c1=49,则等同于c1='1'字符;
而c1=1对应的是ASCII第二个字符,也就是这个“☺”
azhi61ming
2010-03-18 · TA获得超过250个赞
知道小有建树答主
回答量:290
采纳率:0%
帮助的人:197万
展开全部
第一题:i1=(8*8)/(4)=16 i2=(4+4*4+4)/(2+2)=6
我看原题的意思应该是
#define f(x)(x*x)
main()
{int i1,i2;
i1=f(8)/f(4);
i2=f(4+4)/f(2+2);
printf("%d,%d\n",i1,i2);
}
结果才会选c
实践就是最好的证明,我运行过了。结果就是16,6
第二题不能运行,乱七八糟的错误一大堆。
第三题:include前面要加 # .
至于你问的问题??
你是不是想说char类型变量赋值如果是数字就不能用‘’括起来(记住,字符串的话用双引号,单个字符都是用单引号的)?ASCLL码里面有0-9这几个数字,他们可以是字符,也可以是数值。原题有加单引号,是字符。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
askme163
2010-03-18 · TA获得超过150个赞
知道答主
回答量:116
采纳率:0%
帮助的人:80.8万
展开全部
第一道:#define f(x)(x*x)这个宏替换将i1=f(8)/(4)替换为:i1=(8*8)/(4*4);i2=f(4+4)/(2+2)=4;替换成:i2=(4+4*4+4)/(2+2*2+2)=3;其实,宏替换就好比复制,它只是机械性负责复制,而不会识别运算符的优先级之类,所以用的时候要特别小心
第二道问题是问题,cnum[2]={2,4,3,1}结构不明,不知道是你抄错还是什么原因;
第三,在C语言中,是把双引号中的数据看成字符的,而不数据,就比如"1",这样的表示说明它只是一个字符,而不是表示大小的数据。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2010-03-18
展开全部
1.

i1=f(8)/(4);
经过宏替换后就成了:
i1=(8*8)/(4);
所以i1=16

i2=f(4+4)/(2+2);
经过宏替换后就成了:
i2=(4+4*4+4)/(2+2);
所以,i2=6

所以i2<i1,而且答案是错的.

2.

struct cmplx{int x,int y} cnum[2]={2,4,3,1}

这个式子定义了一个struct cmplx类型的结构体数组cnum,它有两个该结构体类型的元素,cnum[0]和cnum[1],cnum[0]有两个成员变量,分别是cnum[0].x和cnum[0].y,而且在定义时分别被初始化为2和4,cnum[1]也有x和y两个成员变量并且在定义时被初始化为3和1

3.
后面的'1'和'2'都是字符,不是整数1和2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式