鱼C论坛

 找回密码
 立即注册
查看: 1302|回复: 3

[已解决]二维数组与循环的问题

[复制链接]
发表于 2020-2-21 22:35:56 | 显示全部楼层 |阅读模式
5鱼币
想测试每一列的和; 当一列超过2时打印lose 不超则win


#include<stdio.h>
int main(){
int a[5][5]={0};  //初始化一个5*5矩阵 里面的元素都是0;
int i,k=0;
int s=0;    //计算总和的s

a[1][1]=1; //随便赋值两个位置为1
a[1][3]=1;

if(k<5){
        for(i=0;i<5;i++){
          s=s+a[k][i];
          if (s>=2){printf("lose\n");}
          else{printf("win\n");}
          k++;
          s=0;}
        }
return 0;
}

按照上面的赋值这里应该是2 打印lose的 为什么最好却打印出win呢?
最佳答案
2020-2-21 22:35:57
前面用while 循环.
这个for循环只要包涵每一列的S计算就好
for(i=0;i<5;i++){
           s=s+a[k][i];}
然后云判断S值大小,S清零,K++。
修改后代码如下:
#include<stdio.h>
int main(){
int a[5][5]={0};  //初始化一个5*5矩阵 里面的元素都是0;
int i,k=0;
int s=0;    //计算总和的s

a[1][1]=1; //随便赋值两个位置为1
a[1][3]=1;

while(k<5){
         for(i=0;i<5;i++){
           s=s+a[k][i];           
           }
           if (s>=2){printf("lose\n");}
           else{printf("win\n");}
           k++;
           s=0;
         }
return 0;
}

最佳答案

查看完整内容

前面用while 循环. 这个for循环只要包涵每一列的S计算就好 for(i=0;i
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-21 22:35:57 | 显示全部楼层    本楼为最佳答案   
前面用while 循环.
这个for循环只要包涵每一列的S计算就好
for(i=0;i<5;i++){
           s=s+a[k][i];}
然后云判断S值大小,S清零,K++。
修改后代码如下:
#include<stdio.h>
int main(){
int a[5][5]={0};  //初始化一个5*5矩阵 里面的元素都是0;
int i,k=0;
int s=0;    //计算总和的s

a[1][1]=1; //随便赋值两个位置为1
a[1][3]=1;

while(k<5){
         for(i=0;i<5;i++){
           s=s+a[k][i];           
           }
           if (s>=2){printf("lose\n");}
           else{printf("win\n");}
           k++;
           s=0;
         }
return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-21 22:57:08 | 显示全部楼层
本帖最后由 major_lyu 于 2020-2-21 23:03 编辑

你的代码实在看不懂。你是要求每列元素和,如果该列元素和大于等于2输出lose,否则输出win?
#include <stdio.h>
int main() {
        int a[5][5] = { 0 };  //初始化一个5*5矩阵 里面的元素都是0;
        int i, k = 0;
        int s = 0;    //计算总和的s

        a[1][1] = 1; //随便赋值两个位置为1
        a[1][3] = 1;
        a[2][1] = 1;

        while (k < 5)     //列
           {  
                for (i = 0; i < 5; i++)
                {
                        s = s + a[i][k];   //求当前列中元素的和
                }
                if (s >= 2)
                {
                        printf("lose\n");
                }
                else
                {
                        printf("win\n");
                }
                k++; //进行下一列
                s = 0; //初始化s
        }
        return 0;
}

输出:
win
lose
win
win
win


刚开始写代码,就要努力养成良好的代码风格,包括合理的缩进,大括号位置,必要的注释等等。你可以选择一种代码规范来参考。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-21 23:05:57 | 显示全部楼层
小笨笨难得糊涂 发表于 2020-2-21 23:03
前面用while 循环.
这个for循环只要包涵每一列的S计算就好
for(i=0;i

他说要求每列的和。所以for循环里的语句得改成s=s+a[i][k];哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 01:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表