注册 登录
编程论坛 VB6论坛

我想输入一个连续的4个数的全排列,代码写成这样,哪里出错了呢?

枫双 发布于 2016-08-10 09:53, 1556 次点击
#include<stdio.h>
int main()
{
    int i,j,k;
    int a;
    int cnt=0;
    scanf("%d",&a);
     
    for (i=a;i<=a+3;i++){
        
        for(j=a;j<=j+3;j++){
            
            for(k=a;k<=k+3;k++){
                if(i!=j && i!=j && j!=k)
                {
                    printf("%d%d%d",i,j,k);
                    cnt++;
                    if(cnt==6){
                        printf("\n");
                        cnt=0;
                    }
                    else{
                        printf(" ");
                    }
                }
            }
        }
    }
 }
3 回复
#2
yangfrancis2016-08-10 10:49
没给返回值
#3
风吹过b2016-08-10 10:50
用 TC2.0 测试了一下,错误出在这三句里。
    for (i=a;i<=a+3;i++){            /* 这句没啥问题 */
        for(j=a;j<=j+3;j++){         /* 这句,j 在每个循环后都会变化,而你要求 j <= j+3 ,永远达不到,造成这里死循环 */
            for(k=a;k<=k+3;k++){    /* 这句,同上。 */

修改为:
循环终止表达式右边,一律使用不会变化的初始值 a

这个不是应该在 C 语言版块的吗?
    for (i=a;i<=a+3;i++){
        for(j=a;j<=a+3;j++){
            for(k=a;k<=a+3;k++){


[此贴子已经被作者于2016-8-10 10:57编辑过]

#4
枫双2016-08-10 15:48
回复 3楼 风吹过b
谢谢,
1