首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

若干有关问题.O(∩_∩)O哈哈

2012-04-16 
若干问题.O(∩_∩)O哈哈~1.菜鸟经常会忽略的问题.如果你不是菜鸟请看题并根据题目写出程序运行的答案#includ

若干问题.O(∩_∩)O哈哈~
1.菜鸟经常会忽略的问题.
如果你不是菜鸟
请看题
并根据题目写出程序运行的答案
#include<stdio.h>
int main()
{
double i;
for(i=0;i!=10;i=i+0.1)
  printf("%.1lf\n",i);
  return 0;
}
.我知道你是高手.
告诉菜鸟我.为什么运行时会不断的循环?
不是有个不等于10的终止条件吗?
谢谢.





2.i++ ++i 的问题
#include<stdio.h>
int main()

int i;
scanf("%d",&i);
printf("%d\n",i);
i++; //++i ,i++ 都没有什么疑问 .
//++i;
printf("%d\n",i);
}
假如输入的是1
上面这段代码肯定是输出2
这肯定是没有问题滴
O(∩_∩)O哈哈~
下面这段代码就有问题了
输入1.
第一个输出是1
第二个输出是3
please tell me why .

#include<stdio.h>
int main()

int i;
scanf("%d",&i);
printf("%d\n",i++);
printf("%d\n",++i);

}


[解决办法]
1.计算机所用的二进制不能精确表示0.1,假设表示成0.1000000001;那么i+0.1000000001;加多少次都不会==10

换成<10;

2.i++这个表达式的值是i被修改之前的值.所以你第一个输出的是1.
++i这个表达式的值是i被修改之后的值.因为修改之前是2(上面已经++过了).所以输出3;
[解决办法]
1.计算机所用的二进制不能精确表示0.1,假设表示成0.1000000001;那么i+0.1000000001;加多少次都不会==10

换成<10;

2.i++这个表达式的值是i被修改之前的值.所以你第一个输出的是1.
++i这个表达式的值是i被修改之后的值.因为修改之前是2(上面已经++过了).所以输出3;
[解决办法]

C/C++ code
#include<stdio.h>int main(){    double i;    for(i = 0; i != 10; i = i + 0.1) /*i永远取不到10的,因为i是double型而10是整型,再说这两个也没有可比性,他们在计算机中的                                     存储方式是不一样的*/        printf("%.1lf\n",i);    return 0;}
[解决办法]
C/C++ code
#include<stdio.h>int main(){      int i;    scanf("%d",&i);    printf("%d\n",i++);   /* 这个是先输出1在自加等他输出后此时i的值就是2了*/    printf("%d\n",++i);   /* ++i是先自加再参加运算,所以再次自加1,那么i的值就是3了*/} 

热点排行
Bad Request.