C语言考试系统,double s;s=0.0;系统不给分;提供的答案是s=0;
两者执行结果相同。是系统问题还是真的不能s=0.0;
望高人指点迷津!!!
0和0.0没有区别。
C语言编程时常量写为0时,系统默认其是一个整型常量int,写0.0时系统默认其是双精度浮点型常量double。
在定义局部变量时不赋值的话,则对静态变量来说,编译时自动赋初值0或空字符。而对自动变量来说,如果不赋值,它的值是一个不确定的值。
扩展资料
当用%d去读double类型数据时,得到的为零,因为int型只取低32为付给整型变量,item=1.000000时转化成int型为0
1#include<stdio.h>
2intmain()
3{
4inti,j,n;//item,s;
5doubleitem,s;//当用%d去读double类型数据时,得到的为零,
6//因为int型只取低32为付给整型变量,item=1.000000时转化成int型为0
7scanf("%d",&n);
8s=0;
9for(i=1;i<=n;i++)
10{
11item=0;
12for(j=1;j<=i;j++)
13{
14item=item+1;
1516s=s+item;
17}
18}
19printf("%d\n",s);
2021return0;
22
23}
既然是系统有问题,真正二级考试时应该不会出问题了吧,那要是碰到这情况还是得写0.0可以这样理解吗?
追答真正的二级考试 可能会出这个题,考试时 按0 写吧,打着放弃这道题的打算吧
追问呵呵,也只能这样了,系统出问题也可能只是如你所说把答案写死了,这样写还是比较保险。谢谢了
追答不客气
本回答被提问者采纳运行结果相同
追答是 0
追问既然是double型变量为什么初始化赋0呢?望指点?
答案是这样麻烦你看下吧
#include
double fun(int n)
{ int i; double s, t;
/**********found**********/
s=0;
for(i=1; i0): "); scanf("%d",&n); }
printf("\nThe result is: %f\n",fun(n));
}
你这个是要发现什么,能不能讲清楚点。
追问(刚刚那个已经是字数的极限了,我在等你回复,我才能再补充。)就是那程序第五行,s=0;我自己做的是s=0.0;但系统没给分,这是为什么?执行结果都一样。是不是模拟考试系统的错误,这是一个全局变量吧,为什么全局变量初始化就得是0呢?明明就是double型变量啊,初始化不赋0.0反倒赋个0呢?
追答哦,这个是0.0,只是我没说那么清楚,后面你赋值0和0.0结果都是一样的都会被转换成double型的,可能模拟的没有把那个答案考虑进去吧。后面的是标准规定。
追问谢谢,要是还是这个题,只是给s赋值1呢?是s=1;还是s=1.0;呢?还是两者都可以呢?执行结果一样,应该是都可以吧。没问题了,应该是系统遗漏答案了
追答都可以,不过这不代表他里面就有这个答案。