输入n行,每行不超过100个无符号整数,无符号数不超过4位。请输出最大整数以及最大整数所在的行号(行号从1开始)。如果该数据在多个行中出现,则按从小到大输出相应行号,行号之间以一个逗号分开。
输入
一行输入一个正整数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
方法1:
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int arr[35][105],nmax=-1,len[35];
int i,j;
for(i=0;i<n;i++)
{
char ch;
int idx=0;
do
{
scanf("%d%c",&arr[i][idx++],&ch);
if(arr[i][idx-1]>nmax)
nmax=arr[i][idx-1];
} while(ch==',');
len[i]=idx;
}
/*
我们来分析一下这个输入的方式:
可以看成每次有一个整数和字符组成的整体进行输入,但是我们
只要记录整型,所以字符型可以只使用一个简单的变量就好了
然后就是去处理i,j变化的问题,j随着每次输入就进行变化,
i是输入换行时改变
*/
printf("%d\n",nmax);
int count=0;
/*
for(i=0;i<n;i++)
{
for(j=0;j<len[i];j++)
{
printf("%d ",arr[i][j]);
}
printf("\n");
}
检查一下是否正确
*/
for(i=0;i<n;i++)
{
for(j=0;j<len[i];j++)
{
if(arr[i][j]==nmax)
{
if(count==0)
{
printf("%d",i+1);
count++;
}
else
printf(",%d",i+1);
break;
}
}
}
return 0;
}
#include<stdio.h>
int main()
{ //不要使用字符输入,太难了。1,先输入再去分开2.在输入的时候就分开
int a;
int n,i;
char ch;
scanf("%d",&n);
int max=0;
int maxline[100];
int ln;
for(i=1;i<=n;i++)
{
do
{
scanf("%d",&a);
scanf("%c",&ch);
if(a>max)
{
max=a;
ln=0;
maxline[++ln]=i;
}
else if(max==a&&maxline[ln]!=i)//不要ln++
{
maxline[++ln]=i;
}
}while(ch!='\n');
}
printf("%d\n",max);
printf("%d",maxline[1]);
for(i=2;i<=ln;i++)
{
printf(",%d",maxline[i]);
}
//重复输出,输出这里需要注意:重复这种情况
//输出的两种方式:先第一个,先最后一个
return 0;
}