qpwoeiruyt 发表于 2020-2-21 22:35:56

二维数组与循环的问题

想测试每一列的和; 当一列超过2时打印lose 不超则win


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

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

if(k<5){
        for(i=0;i<5;i++){
          s=s+a;
          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;}
然后云判断S值大小,S清零,K++。
修改后代码如下:
#include<stdio.h>
int main(){
int a={0};//初始化一个5*5矩阵 里面的元素都是0;
int i,k=0;
int s=0;    //计算总和的s

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

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

major_lyu 发表于 2020-2-21 22:57:08

本帖最后由 major_lyu 于 2020-2-21 23:03 编辑

你的代码实在看不懂。你是要求每列元素和,如果该列元素和大于等于2输出lose,否则输出win?

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

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

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


输出:
win
lose
win
win
win


刚开始写代码,就要努力养成良好的代码风格,包括合理的缩进,大括号位置,必要的注释等等。你可以选择一种代码规范来参考。

major_lyu 发表于 2020-2-21 23:05:57

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

他说要求每列的和。所以for循环里的语句得改成s=s+a;哦
页: [1]
查看完整版本: 二维数组与循环的问题