回 帖 发 新 帖 刷新版面

主题:算术表示式问题

代码如下:(刚学,很菜,前辈们多包涵)

#include<stdio.h>
void main()
{
 float x,y,z;
 x=2.5,y=4.7;
 int a;
 a=7;
 z=x+a%3*(int)(x+y)%2/4;
 printf("%f/n",z);
}

首先我对x+a%3*(int)(x+y)%2/4理解是:x+y强制为整形得7,然后3*7=21,然后21%2=1
再是7%1=0,0/4=0。所以光这个式子应该是2.5+0=2.5.答案也是如此,不知道理解得对不对。程序运行有问题,错误显示为a的定义好象不正确。一时想不明白,望指教,谢谢.

回复列表 (共9个回复)

沙发

#include<stdio.h>
void main()
{
 int a,b;
 a=2,b=3;
 float x,y,z;
 x=3.5,y=2.5;
 z=(float)(a+b)/2+(int)x%(int)y;
 printf("%f\n",z);
 }

还有这个,算术表达式子的答案是3.5,式子应该还是理解正确的,就是自己写
出来,怎么就不对了。这个RUN的时候错误出在float后面不正确。望指点。

板凳

定义变量放在函数开始,
#include<stdio.h>
void main()
{
    float x,y,z;

    int a,b;
    a=2,b=3;
    x=3.5,y=2.5;
    z=(float)(a+b)/2+(int)x%(int)y;
    printf("%f\n",z);
}
/**/
#include<stdio.h>
void main()
{
 float x,y,z;
 int a;

 x=2.5,y=4.7;
 a=7;
 z=x+a%3*(int)(x+y)%2/4;
 printf("%f/n",z);
}
这样就可以了。

3 楼

恩,我从新改了程序,果然正确了,

答案分别是:2.5000000;3.5000000

谢谢,我会继续努力的。

4 楼

你们用的是tc吧
只有tc下才要求变量的声明都在语句块最前面
还有那个不正确的void main尽早规范化吧

5 楼

实在不好意思,刚开始学,不大明白。提问:

1.void main为什么是不规范的,我学的那本(就是机械工业出版社,黑色封面,外国人写的,听说很出名的)C语言教材里面也是用void main开头的。
  这是不规范的,那么的应该用什么?
  不规范导致的结果是什么?就是使用void main的不规范结果。

2."只有tc下才要求变量的声明都在语句块最前面"
   其他有哪些通常用的编程软件,不用这样,举几个例子,我想先了解一下。

谢谢。

6 楼

恩 void main 我平时用也放在前边 ,期待规范格式

7 楼

雪光风剑 的签名好象有写 “请大家自觉采用c99标准中的int main”,
我今天用int main 写了一下,果然也是行的。

但是为什么要要说“void main是国产教材的典型误区”呢?
void main明明是出现在国外著名教材里的。

8 楼

看到别人的签名了。

基本上写上:

int main()

结尾上:

return 0;

就不会有什么warning出现。不错不错,规范化。

9 楼


这里a只是被声明了,并没有被定义,当然会出错的。

我来回复

您尚未登录,请登录后再回复。点此登录或注册