主题:算术表示式问题
LOVELESS
[专家分:80] 发布于 2007-04-13 16:29:00
代码如下:(刚学,很菜,前辈们多包涵)
#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个回复)
沙发
LOVELESS [专家分:80] 发布于 2007-04-13 16:50:00
#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后面不正确。望指点。
板凳
233355750 [专家分:60] 发布于 2007-04-13 18:06:00
定义变量放在函数开始,
#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 楼
LOVELESS [专家分:80] 发布于 2007-04-14 13:32:00
恩,我从新改了程序,果然正确了,
答案分别是:2.5000000;3.5000000
谢谢,我会继续努力的。
4 楼
雪光风剑 [专家分:27190] 发布于 2007-04-14 18:14:00
你们用的是tc吧
只有tc下才要求变量的声明都在语句块最前面
还有那个不正确的void main尽早规范化吧
5 楼
LOVELESS [专家分:80] 发布于 2007-04-19 23:44:00
实在不好意思,刚开始学,不大明白。提问:
1.void main为什么是不规范的,我学的那本(就是机械工业出版社,黑色封面,外国人写的,听说很出名的)C语言教材里面也是用void main开头的。
这是不规范的,那么的应该用什么?
不规范导致的结果是什么?就是使用void main的不规范结果。
2."只有tc下才要求变量的声明都在语句块最前面"
其他有哪些通常用的编程软件,不用这样,举几个例子,我想先了解一下。
谢谢。
6 楼
kulerop [专家分:0] 发布于 2007-04-20 09:39:00
恩 void main 我平时用也放在前边 ,期待规范格式
7 楼
LOVELESS [专家分:80] 发布于 2007-04-23 03:08:00
雪光风剑 的签名好象有写 “请大家自觉采用c99标准中的int main”,
我今天用int main 写了一下,果然也是行的。
但是为什么要要说“void main是国产教材的典型误区”呢?
void main明明是出现在国外著名教材里的。
8 楼
LOVELESS [专家分:80] 发布于 2007-05-22 17:25:00
看到别人的签名了。
基本上写上:
int main()
结尾上:
return 0;
就不会有什么warning出现。不错不错,规范化。
9 楼
guyue85868 [专家分:50] 发布于 2007-05-25 16:04:00
这里a只是被声明了,并没有被定义,当然会出错的。
我来回复