| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 534 人关注过本帖
标题:发现一个事,不太理解。
只看楼主 加入收藏
yangfanconan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:10
帖 子:397
专家分:541
注 册:2009-9-22
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
发现一个事,不太理解。

程序代码:
#include "stdafx.h"
#include<stdio.h>
#include<stdlib.h>
#define N 10
int main()
{
unsigned int i,j,k;//i是行数,j是每行元素数。
unsigned int b,c;
unsigned int d;// unsigned int d=1;
for(i=0;i<N;i++)
{
for(j=N;j>i;j--)
printf("  ");
for(j=0;j<=i;j++)
{
b=c=1;//这里开始对杨辉3角内部每行元素与其行数,列位的关系进行运算。
if(j>=1)
{
for(k=i-j+1;k<=i;k++)
b*=k;
for(k=1;k<=j;k++)
c*=k;
d=b/c;//到这里运算结束
}
printf("%4d",d);//输出
}
printf("\n");
}
system("pause");
}
这个输出一定会出错。我是用vs2010编辑的。
但是如果定义d的时候给一个初始值,那么就不会出错。
这是为什么呢?求指教。
谢谢。
2011-01-16 18:20
马后炮
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:156
专家分:560
注 册:2010-12-17
收藏
得分:5 
不仅是要有初值,并且得要正确的初值,你初始化写成100就知道了

樱之雪,晓之车
2011-01-16 18:31
yangfanconan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:10
帖 子:397
专家分:541
注 册:2009-9-22
收藏
得分:0 
回复 2楼 马后炮
那是为什么呢?就是定义浮点数给D依然出现问题。而给以初始值就不会有问题。这是为什么呢?
2011-01-16 18:33
wujieru
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:1108
专家分:1939
注 册:2010-10-9
收藏
得分:0 
那你就别理解了
收到的鲜花
  • yangfanconan2011-01-16 18:45 送鲜花  -5朵   附言:你是谁的马甲号?
2011-01-16 18:34
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:15 
这个应该从网上抄下来吧!
for(j=0;j<=i;j++)
{
b=c=1;//这里开始对杨辉3角内部每行元素与其行数,列位的关系进行运算。
if(j>=1)
{
  。。。
}
printf("%4d",d);//输出
注意观察一下,当j<1时,因为之前是没有初始化,它输出是随机数。
建意把程序格式规范,容易观察错误在那里

小代码,大智慧
2011-01-16 18:35
yangfanconan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:10
帖 子:397
专家分:541
注 册:2009-9-22
收藏
得分:0 
回复 5楼 点线面
程序代码:
#include "stdafx.h"
#include<stdio.h>
#include<stdlib.h>
#define N 10
int main()
{
unsigned int i,j,k;//i是行数,j是每行元素数。
unsigned int b,c;
unsigned int d;
for(i=0;i<N;i++)
{
for(j=N;j>i;j--)
printf("  ");
for(j=0;j<=i;j++)
{
b=c=1;//这里开始对杨辉3角内部每行元素与其行数,列位的关系进行运算。
if(j>=1)
{
for(k=i-j+1;k<=i;k++)
b*=k;
for(k=1;k<=j;k++)
c*=k;
d=b/c;//到这里运算结束
printf("%4d",d);//输出
}
else printf("1");
}
printf("\n");
}
system("pause");
}
2011-01-16 18:45
yangfanconan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:10
帖 子:397
专家分:541
注 册:2009-9-22
收藏
得分:0 
回复 5楼 点线面
谢谢啊。
2011-01-16 18:46
yangfanconan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:10
帖 子:397
专家分:541
注 册:2009-9-22
收藏
得分:0 
吸一氧化碳吸多了。脑子笨了。
2011-01-16 18:51
丞相杀手
Rank: 6Rank: 6
等 级:侠之大者
帖 子:203
专家分:462
注 册:2011-1-11
收藏
得分:0 
你的程序中对d的赋值在一个if块儿中,而编译器认为if中的语句不一定会被执行到,故程序报错

斗不过疯子,不参与争论。
2011-01-16 20:55
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
你第一次输出完了空格之后 直接没有对d赋值
 把d给输出了  所以会出现了默认的

                                         
===========深入<----------------->浅出============
2011-01-17 14:13
快速回复:发现一个事,不太理解。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018677 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved