鱼C论坛

 找回密码
 立即注册
查看: 1622|回复: 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
小甲鱼最新课程 -> https://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;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

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

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

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

  9.         while (k < 5)     //列
  10.            {  
  11.                 for (i = 0; i < 5; i++)
  12.                 {
  13.                         s = s + a[i][k];   //求当前列中元素的和
  14.                 }
  15.                 if (s >= 2)
  16.                 {
  17.                         printf("lose\n");
  18.                 }
  19.                 else
  20.                 {
  21.                         printf("win\n");
  22.                 }
  23.                 k++; //进行下一列
  24.                 s = 0; //初始化s
  25.         }
  26.         return 0;
  27. }
复制代码


输出:
win
lose
win
win
win


刚开始写代码,就要努力养成良好的代码风格,包括合理的缩进,大括号位置,必要的注释等等。你可以选择一种代码规范来参考。
小甲鱼最新课程 -> https://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];哦
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-3 08:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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