标题:有一丢丢的小问题解决不了了
只看楼主
关耳扛刀
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2018-9-27
结帖率:80%
已结贴  问题点数:17 回复次数:7 
有一丢丢的小问题解决不了了
题目:编写一个程序,其功能是给一维数组a输入任意6个整数,假设为:5 7 4 8 9 1,然后建立一个具有以下内容的方阵,并打印出来。
5 7 4 8 9 1
1 5 7 4 8 9
9 1 5 7 4 8
8 9 1 5 7 4
4 8 9 1 5 7
7 4 8 9 1 5
输入:输入为6个整数。全为当0时程序不处理并结束。
输入样例:5 7 4 8 9 1
输出:
5 7 4 8 9 1
1 5 7 4 8 9
9 1 5 7 4 8
8 9 1 5 7 4
4 8 9 1 5 7
7 4 8 9 1 5
我的问题在于输入就是如何全为当0是程序结束不处理
#include<stdio.h>
int main()
{
    int f[6],i,a,s,t,j,k;
    while(1){
        s=0;
        for(i=1;i<=6;i++){
            scanf("%d",&f[i]);
            if(f[i]==0){
                s++;
            }
            if(s==6){
                break;
            }
        }
        for(i=1;i<=6;i++){
            printf("%d ",f[i]);
        }
        printf("\n");
        for(t=1;t<=5;t++){
            for(j=7-t;j<=6;j++){
                printf("%d ",f[j]);
            }
            for(k=1;k<=6-t;k++){
                printf("%d ",f[k]);
             }
            printf("\n");
        }
    }
    return 0;
 }
搜索更多相关主题的帖子: 问题解决 输入 结束 for printf 
2018-12-03 14:20
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:17 
没看懂你的问题,
最下面那段代码是别人的吗,然后你看不懂它是怎么判断全为0的?
(顺便告诉一下代码作者,下标请从0开始)
2018-12-03 14:32
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
程序代码:
#include <stdio.h>

int main( void )
{
    for( int a[6]; scanf("%d%d%d%d%d%d",a+0,a+1,a+2,a+3,a+4,a+5)==6 && (a[0]||a[1]||a[2]||a[3]||a[4]||a[5]); )
        for( size_t r=0; r!=6; ++r )
            for( size_t c=0; c!=6; ++c )
                printf( "%d%c", a[(c+6-r)%6], " \n"[c+1==6] );
}
2018-12-03 14:41
关耳扛刀
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2018-9-27
得分:0 
噗,是我的代码啊,我敲完了输入输出都可以,只是满足不了他的那个当输入六个数都为0的时候然后程序就不处理直接结束而已啊
2018-12-03 15:00
关耳扛刀
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2018-9-27
得分:0 
就是我得到是这样的,输入0的时候也有输出了,按题目要求是直接就运行结束了
2018-12-03 15:02
关耳扛刀
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2018-9-27
得分:0 
回复 3楼 rjsp
噗我有点看不懂你这个,我试试自己的能怎么改吧,感谢大佬
2018-12-03 15:11
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
以下是引用关耳扛刀在2018-12-3 15:11:21的发言:

噗我有点看不懂你这个,我试试自己的能怎么改吧,感谢大佬

你要将 if(s==6) break; 移到所在for的外面。
另外先前说过 int f[6] 这定义了6个变量,分别是 f[0]、f[1]、f[2]、f[3]、f[4]、f[5]。即下标0到5,不是1到6。
2018-12-03 16:13
关耳扛刀
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2018-9-27
得分:0 
噢噢好的yes解决了,学到啦谢谢大佬
2018-12-03 16:41



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-491784-1-1.html




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

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