宇宙总统

题目背景

宇宙总统竞选

题目描述

地球历公元6036年,全宇宙准备竞选一个最贤能的人当总统,共有n个非凡拔尖的人竞选总统,现在票数已经统计完毕,请你算出谁能够当上总统。

输入输出格式

输入格式:

第一行为一个整数n,代表竞选总统的人数。

接下来有n行,分别为第一个候选人到第n个候选人的票数。

输出格式:

共两行,第一行是一个整数m,为当上总统的人的号数。

第二行是当上总统的人的选票

输入输出样例

输入样例#1:
5
98765
12365
87954
1022356
985678
输出样例#1:
4
1022356
算法如下:运用指针的方式进行排序。
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 20
#define M 100
int main()
{
int i,n,max;
char *ppiao[N];
scanf("%d",&n);
for(i=0;i<n;i++)
{
ppiao[i]=(char )malloc(Msizeof(char));
scanf("%s",ppiao[i]);
}
max=0;
ppiao[max]=ppiao[0];
for(i=1;i<n;i++)
{
if(strlen(ppiao[max])<strlen(ppiao[i]))
{
ppiao[max]=ppiao[i];
max=i;
}
if(strlen(ppiao[max])==strlen(ppiao[i]))
{
if(strcmp(ppiao[max],ppiao[i])<0)
{
ppiao[max]=ppiao[i];
max=i;
}
}
if(strlen(ppiao[max])>strlen(ppiao[i]))
continue;
}
printf("%d\n%s\n",max+1,ppiao[max]);
}
(1)首先定义指针数组ppiao[N];
(2)使用malloc函数开辟n个内存空间,使每个输入的指针变量里的票数均能存入。(若为向指针里输入数据,就可使用malloc开辟空间);
(3)因为是求最大值,我们可将指针变量 ppiao[0]赋给指针变量ppiao[max],将其下标同时赋给max,假定最高票数为指针变量ppiao[max]的字符串。
(4)开始进入循环,这里需要使用strlen 函数确定字符串的大小,字符串长度越大,它的票数就越高。这里有三种情况:
*第一种:假定的指针ppiao[max]长度小于和它进行比较的指针ppiao[i]长度,则将指针ppiao[i]赋给ppiao[max],同时下标i也赋给max。
*第二种:假定的指针ppiao[max]长度等于和它进行比较的指针ppiao[i]长度,则需继续比较,通过strcmp函数对字符串进行比较,即对两个字符串从首字符到尾字符进行数字0~9之间的比较,同样将最后得到的较大者赋给ppiao[max]。
*第三种:假定的指针ppiao[max]长度大于和它进行比较的指针ppiao[i]长度,则继续下一条语句,即跳过这个对下一个进行比较。
这是主要的思想,有时感觉自己蛮水的,一些普及题都不会做真得伤自尊。有时做了一下午研究出来的代码,也会遇到bug不能运行。我想对自己说:别懈怠,比你努力的人太多了,你还得加油!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值