|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目是输入一个n(1<=n<=6),再输入一个n阶方阵,要求算除副对角线,最后一行和最后一列的和
我这个写的输入矩阵之后没有输出
#include<stdio.h>
#define MAX 6
int main()
{
int n,i,j,a[MAX][MAX],sum;
scanf("%d",&n);
if(n<=6)
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",a[i][j]);
if((i!=n-1)&&(j!=n-1)&&(j!=n-1-i));
sum=sum+a[i][j];
}
}
printf("%d",sum);
return 0;
}
代码存在以下问题:
1. 在 scanf 函数中,应该使用 &a[ i][j] 而不是 a[ i][j],因为需要将输入的值存储到 a[ i][j] 中。
2. 变量 sum 没有初始化,应该将其初始化为 0。
3. 在 if 语句中,应该使用大括号将语句块括起来,否则只有第一条语句会被 if 语句控制。
4. 在 if 语句中,判断条件应该为 i+j==n-1 或者 i==n-1 或者 j==n-1,而不是 (i!=n-1)&&(j!=n-1)&&(j!=n-1-i)。
修改后的代码如下:
- #include<stdio.h>
- #define MAX 6
- int main()
- {
- int n,i,j,a[MAX][MAX],sum=0;
- scanf("%d",&n);
- if(n<=6)
- {
- for(i=0;i<n;i++)
- {
- for(j=0;j<n;j++)
- {
- scanf("%d",&a[ i][j]);
- if(i+j==n-1 || i==n-1 || j==n-1)
- {
- sum=sum+a[ i][j];
- }
- }
- }
- }
- printf("%d",sum);
- return 0;
- }
复制代码
|
|