C语言练习题--洛谷P1781宇宙总统
题目描述
地球历公元 6036 年,全宇宙准备竞选一个最贤能的人当总统,共有 n 个非凡拔尖的人竞选总统,现在票数已经统计完毕,请你算出谁能够当上总统。
输入格式
第一行为一个整数 n,代表竞选总统的人数。
接下来有 n 行,分别为第一个候选人到第 n 个候选人的票数。
输出格式
共两行,第一行是一个整数 m,为当上总统的人的号数。
第二行是当上总统的人的选票。
输入输出样例
输入 #1复制
5
98765
12365
87954
1022356
985678
输出 #1复制
4
1022356
说明/提示
票数可能会很大,可能会到 100 位数字。
1≤n≤20。
此题采用冒泡排序
#include <stdio.h>
#include <string.h>
struct xuanju
{
int hao;
char piaoshu[200];
};//定义一个结构体
int judge(char str1[],char str2[])
{
if(strlen(str1)>strlen(str2))
return 1;
else if(strlen(str1)<strlen(str2))
return 2;
else if(strlen(str1)==strlen(str2))
{
int i;
for(i=0;i<strlen(str1);i++)
{
if(str1[i]>str2[i])
{
return 1;
}
if(str1[i]<str2[i])
{
return 2;
}
}
}
}//判断大小
int main()
{
int n,i;
scanf("%d",&n);
struct xuanju s[25];
for(i=0;i<n;i++)
{
s[i].hao=i;
scanf("%s",s[i].piaoshu);
}
int j;
for(i=1;i<=n-1;i++)
for(j=1;j<=n-i;j++)
{
if(judge(s[j].piaoshu,s[j-1].piaoshu)==1)
{
char ans[200]={'\0'};
strcpy(ans,s[j].piaoshu);
strcpy(s[j].piaoshu,s[j-1].piaoshu);
strcpy(s[j-1].piaoshu,ans);
int t;
t=s[j].hao;
s[j].hao=s[j-1].hao;
s[j-1].hao=t;
}
}//冒泡排序
printf("%d\n%s\n",s[0].hao+1,s[0].piaoshu);
return 0;
}