|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
输入
一行输入一个正整数n(n <= 30)。之后的n行,每行包含不超过100个无符号整数,整数之间以一个逗号分开。
输出
第一行:最大整数; 第二行:最大整数所在的行编号,逗号间隔。
样例输入 复制
6
1,3,5,23,6,8,14
20,22,13,4,16
23,12,17,22
2,6,10,9,3,6
22,21,20,8,10
22,1,23,6,8,19,23
样例输出 复制
23
1,3,6
#include <stdio.h>
int main(void)
{
int row,i,k;
char ch = ',';
int array[30][100] = {{0}};
scanf("%d",&row);
for (i = 0,k = 0;i < row;i++){//输入数据并存储在array数组中
if (ch == '\n')
ch = ',';
while (ch == ',' && scanf("%d",&array[i][k++]))
ch = getchar();
}
int key = 0; //查找最大整数
for (i = 0;i < row;i++){
for (k = 0;array[i][k+1] != 0;k++){
if (array[i][k] > key)
key =array[i][k];
}
}
printf("%d\n",key);
//查找最大整数所在行列数
int ROW[30] = {0},t = 0;
for (i = 0;i < row;i++){
for (k = 0;array[i][k+1] != 0;k++){
if (array[i][k] == key){
ROW[t++] = i+1;
break;
}
}
}
for (i = 0;i < t;i++){
printf(i == 0 ? "%d" : ",%d",ROW[i]);
}
return 0;
}
请问为什么输出不了1,3,6?
你的程序有一个小错误,导致输出不符合预期。在存储输入数据时,你在每行的末尾没有将列数重置为0,导致后续行的数据被存储在前一行的后面。这样会导致查找最大整数所在行列数时出现错误。
你可以在每行的循环结束后将k重置为0,即 k = 0; ,这样就能正确存储每行的数据了。
修改后的代码如下:
#include <stdio.h>
int main(void)
{
int row,i,k;
char ch = ',';
int array[30][100] = {{0}};
scanf("%d",&row);
for (i = 0;i < row;i++){//输入数据并存储在array数组中
if (ch == '\n')
ch = ',';
while (ch == ',' && scanf("%d",&array[ i][k++]))
ch = getchar();
k = 0; // 重置列数为0
}
int key = 0; //查找最大整数
for (i = 0;i < row;i++){
for (k = 0;array[ i][k+1] != 0;k++){
if (array[ i][k] > key)
key =array[ i][k];
}
}
printf("%d\n",key);
//查找最大整数所在行列数
int ROW[30] = {0},t = 0;
for (i = 0;i < row;i++){
for (k = 0;array[ i][k+1] != 0;k++){
if (array[ i][k] == key){
ROW[t++] = i+1;
break;
}
}
}
for (i = 0;i < t;i++){
printf(i == 0 ? "%d" : ",%d",ROW[ i]);
}
return 0;
}
这样修改后,你的程序就能正确输出1,3,6了。
|
|