C:(100分)
思路是接收一个数字,放到a1中
往后接收的数字都放到a2中
让a1与a2的数字作比较,如果:
a1大,无动作,再让a2接收下一个数
a2大,把a2中的值赋给a1,再让a2接收下一个数
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#define Max 1000
char a1[Max]; //用于 储存 判断出来的 最大的值
char a2[Max]; //用于 储存 临时的 新比较的值
void change(int j) //用来把 a1 变成 a2
{
for (int i = 0; i <= j; i++)
{
a1[i] = a2[i];
}
}
int main()
{
int m = 0;
int Max_ID = 1; //用于储存 当上总统的人的号数,默认要为1
scanf("%d", &m);
scanf("%s", &a1);
for (int i = 1; i < m; i++)
{
scanf("%s", a2);
int j = 0; //用于判断两数的位数
while (1)
{
if (a1[j] == 0 && a2[j] == 0) //这种情况就是 两数的位数相同,那就对 从左到右 每一位的数字 进行对比
{
int k = 0; //用于遍历两数的每一位
while (1)
{
if (a1[k] > a2[k])
{
break;
}
else if (a1[k] < a2[k])
{
change(j - 1); //当判断到 j 这一位置的时候,两数对应位数的值都是0,所以要 -1
Max_ID = i + 1;
break;
}
k++;
}
break;
}
else if (a1[j] != 0 && a2[j] == 0) //如果a1的位数大于a2
{
break;
}
else if (a1[j] == 0 && a2[j] != 0) //如果a2的位数大于a1 (注意此时可能 j 并不是 a2 真正的位数,说不定后面还有几十位)
{
while (1) //这个while的目的是获取 a2 的位数
{
if (a2[++j] == 0)
{
change(j);
Max_ID = i + 1;
break;
}
}
break;
}
j++;
}
}
printf("%d\n", Max_ID);
printf("%s", a1);
return 0;
}
C++:(100分)
#include <iostream>
#include <string>
using namespace std;
int main()
{
string a1;
string a2;
int m = 0;
int max = 1;
cin >> m;
for (int i = 1; i <= m; i++)
{
cin >> a2;
if (a1.size() == a2.size()) //如果 a1 和 a2 的位数相同
{
if (a1 < a2) //直接比较,如果a2 大于 a1
{
a1 = a2;
max = i;
}
}
else if (a1.size() < a2.size()) //如果 a2 的位数比 a1 多
{
a1 = a2;
max = i;
}
}
cout << max << endl;
cout << a1;
return 0;
}
python:(100分)
m = int(input())
a = int(input())
max = 1
for i in range(2, m + 1):
b = int(input())
if b > a:
a = b
max = i
print(max)
print(a)