C语言练习题--洛谷P1781宇宙总统

发布于:2025-03-09 ⋅ 阅读:(95) ⋅ 点赞:(0)

题目描述

地球历公元 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;
}