C语言新手:下面的程序用tc3编译运行不通过,请问程序哪里出错了?

题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?#include<stdio.h>voidmain(){inti,j,k,a,b,c,e... 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
#include<stdio.h>
void main()
{
int i,j,k,a,b,c,e;
for(i=1;i<=4;i++)
{a=100*i;
for(j=1;j<=4;j++)
{b=10*j;
for(k=1;k<=4;k++)
c=a+b+c+k;
}
}
e=i*j*k;
printf("%d\n,e");
printf("\n%d\n",c);
}
展开
 我来答
xueyejus
2011-04-02
知道答主
回答量:18
采纳率:0%
帮助的人:8.3万
展开全部
本来想直接给你做出来,但手机打太慢了,打了五行费了近十分钟,我还是给你说一下哪错了就行了。
第一最明显的错误就是后面的那个输出语句,上楼已经说得很清楚了,你自己看,不解释
第二就是你想使用了嵌套循环输出每个C的值,应该将输出C的语句放在最里面那个循环里,也就是最后那个for里面
第三,按你的算法弄出的三位数里面会有数字重复的,如111,122,221…,应该想办法让j不等于i.k不等于j,如for里面用continue或if把相等的情况除去。
应为第三条,呵呵,所以呢,你的e结果也是错的,同样多加了数字重复的情况。
其实我也是刚学语言,有不对的地方希望高手多多指点
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
waiter94
2011-04-02 · TA获得超过142个赞
知道答主
回答量:86
采纳率:0%
帮助的人:59.9万
展开全部
先不论你的逻辑对不对,你的程序至少有下面这两个问题。
c=a+b+c+k;
这个时候 c 并没有初始化,他的值是不可预测的。
printf("%d\n,e");
打印 e 的值,写法错了,应该为 printf("%d\n“ ,e);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
movie0125
2011-04-02
知道答主
回答量:6
采纳率:0%
帮助的人:9万
展开全部
在for循环的时候加一个判断,因为需要无重复数字的三位数
int count = 0;
for(i=1; i<=4; i++)
for(j=1; j<=4 && j!=i ; j++)
{ if(j==i)
continue;
for(k=1; k<=4 ; k++)
{
if( k==i || k==j )
continue;
count++;
printf("%d" , i * 100 + j * 10 + k);
}
}
printf("共有%d个不重复的三位数",count);
这样就保证了 i , j , k 不重复
追问
虽然你的回答不完全对(你的程序只有12个数,从数学角度看应该有4*3*2=24个数的),但是给了我最大的启发,最终让我发现并改正了错误,真的非常感谢你!同时,也感谢其他回答我的提问的朋友们,真的非常谢谢!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2011-04-01 · TA获得超过1418个赞
知道大有可为答主
回答量:1903
采纳率:0%
帮助的人:1834万
展开全部
不对啊,你这样写会有重复的数字的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式