能否在下面的代码基础上指出哪里错误和哪里需要改进?是思路上错了还是语法上?纸笔也没模拟出来。。谢谢
问题描述:
给了我们很多张张星空图,让我们比谁能更快查出每张图有多少的星星,学姐想到编一个程序解决这个问题,你能帮他解决吗?
输入格式
输入多组数据
对于每一组数据: 第一行:N,M(0 < N <= 200,0 < M <= 200)代表这个星空图的行数和列数。 第二行至第N+1行:每行M个字符,‘*’表示是星星,‘_’表示不是星星。 当M=N=0时输入结束。
输出格式
对于每一组数据: 第一行:星空图中星星的个数
样例
样例输入
3 4
__*_
_*__
*__*
4 5
___**
**___
__**_
*_*_*
0 0
样例输出
4
9
下面是我的答案和编译运行结果:
#include<stdio.h>
#include<bits/stdc++.h>
using namespace std;
int main() {
int n,m;
char a[n*m+5];
scanf("%d %d",&n,&m);
while(n!=0||m!=0) {
int count=0;
for(int i=0; i<n; i++) {
for(int i=0; i<m; i++) {
scanf("%c",&a[i]);
if(a[i]=='*') {
count++;
}
}
}
printf("%d\n",count);
scanf("%d %d",&n,&m);
}
return 0;
}
用编译器编译运行结果:
3 4
__*_
_*__
*__*
3
4 5
___**
2
**___
__**_
5
*_*_*
0 0
3
你把第二个for循环的i改成j,while循环里的 || 最好也改成&&