编程题 c++?

我这个代码哪里有问题?#include<stdio.h>int main(){ int n, i, j, a[100][100], s = 0, c = 0; scanf("%d", &n); for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { scanf("%d", &a[i][j]); } } for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { if (a[i][j] <= 50) { s++; if (a[i - 1][j] > 50 || a[i + 1][j] > 50 || a[i][j - 1] > 50 || a[i][j + 1] > 50) { c++; } } } } printf("%d %d\n", s, c);}

程序执行没有问题,至少对于图片样例没有问题。

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-11-16
主要是边界问题:这条语句if (a[i - 1][j] > 50 || a[i + 1][j] > 50 || a[i][j - 1] > 50 || a[i][j + 1] > 50)没有考虑到矩阵边框上的元素位置,导致a[i - 1][j]和a[i][j - 1] 可能出界的情况。
#include<stdio.h>
int main(){
int n, i, j, a[100][100], s = 0, c = 0;
scanf("%d", &n);
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
scanf("%d", &a[i][j]);
}
}
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
if (a[i][j] <= 50) {
s++;
if (a[i + 1][j] > 50 || a[i][j + 1] > 50) {
c++;
}
else if(i >= 1 && a[i - 1][j] > 50){
c++;
}
else if(j >= 1 && a[i][j - 1] > 50)
c++;
}
}
}
printf("%d %d\n", s, c);
return 0;
}本回答被提问者采纳
第2个回答  2019-11-14
最后加上 return 0;
第3个回答  2019-11-14
呃。。我看不清追答

你能不能发一下你用的软件

c++中的?是什么意思.还有:是啥
C++中,“?”与“:”共同组成三目条件运算符(?:)三目条件运算符(?:)使用例子如下:x ? y:z;上面的三目条件运算的规则是:先计算表达式x的值,若x为真,则整个三目运算的结果是表达式y的值;若x为假,则整个三目运算的结果是表达式z的值。下面的例子为从两个数中找出较大的程序:int a=3,...

C++编程序题:(一)定义一个圆类XY,计算圆的面积和周长(). 要求:1.该...
\/\/圆的半径 public: \/\/公开成员关键字 XY(){R=0;} \/\/无参构造函数 XY(double N){R=N;} \/\/有参构造函数 int Set(double N){R=N;} \/\/设置半径的成员函数 double Get(){return R;} \/\/获得半径的成员函数 double Grith() \/\/求周长的成员函数 {...

C++如何编程简单的程序
1、首先我们打开Visual Studio软件,打开新建项目界面,如下图所示 2、接下来在应用程序设置界面中选择控制台程序,然后选择空项目选项,如下图所示 3、然后我们在C++项目的源文件文件夹下面新建C++文件,如下图所示 4、最后我们在C++文件中简单的输出一些内容即可,如下图所示 工具\/材料 Visual Studio ...

谁可以帮我做一下这个C++C语言的作业
因为我对C语言的输入输出不太熟悉,对输入输出的错误不予判断!我按C++的方式给予判断。一、 基础题(15%)1.定义int n=5,a=12;写出a*=(n%=3);执行后变量n与a的值。【答案】n%=3 取余结果n=2 执行后:n=2;a=24 2.设a=b=5;分别判断表达式的真假:6>a>2与++b==6。【答案】...

C++编程问题(3个)
C++编程问题(3个) 1.用穷举法找出1到100之间的素数(素数判断:不能被2到自身-1的所有数整除).试着分别使用while,do-while,for循环语句实现.2.输入一个整数,输出该整数的所有素数因子。例如:输入120,输... 1.用穷举法找出1到100之间的素数(素数判断:不能被2到自身-1的所有数整除).试着分别使用while,do-...

编程题c++:从键盘输入10个学生的成绩,计算平均成绩,统计及格人数,计算...
int main(){ int i;float a[10],min,max,avg; \/\/max表示最高分,min表示最低分,avg表示平均分 printf("请输入10位学生的分数\\n");printf("***\\n");for(i=0;i<=9;i++){ printf("请输入一位学生的分数:");scanf("%f",&a[i]);} max=min=avg=a[0];int jige=0;for(...

如何使用c++编程语言实现程序运行结果输出?
1、首先打开DEV C++软件,点击“新建源代码”,在编辑页面输入以下代码。2、因为题目要求我们先输入一个整数,所以在定义变量时,就应该将其定义为整数型,注意,在输入,输出函数中,整数型对应的是“%d”。3、接下来就要对输入的整数进行判断,在C语言中,if是判断语句,所以用它来对整数进行判断。if...

c++编程题,求大神解答。
C++代码如下:include <bits\/stdc++.h> \/\/ C++万能头文件 using namespace std;using tri = tuple<double, int, int>; \/\/ 发生碰撞的时间和机器人编号 int main() { int n, k;cin >> n;k = n; \/\/ 剩下机器人个数 int x[n + 1], v[n + 1]; \/\/ 初始位置和速度 for (int...

c++编程,求大神帮忙解答
include <bits\/stdc++.h> \/\/ C++万能头文件 using namespace std;int dx[4] = {-1, 1, 0, 0};int dy[4] = {0, 0, -1, 1};int n, m;char mat[3000][3000]; \/\/ 字符矩阵 int dp[3000][3000][6]; \/\/ 记忆化搜索 string s = "IAKCSP";int dfs(int x, int y, int...

C++ 编程问题、求大神解答
第一题:#include<iostream> include<cstdlib> using namespace std;int main(){ double a,b,c,s,v;cout<<"请输入立方体的三条边长,用空格隔开,按ENTER键结束输入:";cin>>a>>b>>c;s=2*(a*b+a*c+b*c);v=a*b*c;cout<<"立方体的三条边为:a="<<a<<" "<<"b="<<b<<" ...

相似回答