【发布时间】:2019-10-25 10:09:08
【问题描述】:
我有一个家庭作业问题。它要求我们根据用户的输入制作一个矩阵。例如:如果用户输入 4,则矩阵将为 4 X 4。之后,程序将检查矩阵在行或列中是否具有相同的值。它会给出是或否输出。
例如:
输入:
2 1 2 2 1输出:
是的(因为该矩阵在一行或一列中没有相同的值。)
输入 2:
3 4 5 6 7 8 9 7 3 3输出:
不(因为该矩阵在一行或一列中具有相同的值(3 & 3 和 7 & 7)
输入 3:
2 1 2 3 2输出:
不(因为该矩阵在第 1 列具有相同的值。)
输入 4
2 1 1 3 4输出:
不(因为该矩阵在第一行具有相同的值(1 1)
我已经尝试过这样做,但有些“案例”仍然不起作用。例如,我试图在我的代码中包含一个计数,但有些计数不正确。
示例: 输入:
4 3 4 5 6 2 3 4 5 6 5 6 3 5 4 6 3输出:
不 计数:2(它应该是 3,因为它具有相同的值,即 6(在第 3 行)、6 在第 3 列和 3 在第 4 列。)
#include "stdio.h"
int main()
{
int matrix[500][500];
int testcase;
int count = 0;
scanf("%d",&testcase); getchar();
for(unsigned i = 0; i < testcase; i++) {
for(unsigned j = 0; j < testcase; j++) {
scanf("%d",&matrix[i][j]); getchar();
}
}
// printf("[0,0] = %c",matrix[0][0]);
// printf("\n[0,1] = %c",matrix[0][1]);
// printf("\n[1,0] = %c",matrix[1][0]);
// printf("\n[1,1] = %c",matrix[1][1]);
for(unsigned i = 0; i < testcase; i++) {
for(unsigned j = 0; j < testcase; j++) {
if(matrix[i][j] == matrix[i][j+1]) {
count = count + 1;
}
else if(matrix[i][j] == matrix[i+1][j]) {
count = count + 1;
}
}
}
if(count > 0) {
printf("No\n");
} else{
printf("Yes\n");
}
printf("Count : %d\n",count );
getchar();
return 0;
}
【问题讨论】:
-
您的测试将超出数组初始化部分的范围。
-
应该有两组测试循环:一组检查每一行,一组检查每一列。另外:您可以删除每个
getchar(),因为scanf将过滤空格(在此用法中)。