2048星球要举行一次选举,以选出他们的新一任国王。请你帮忙写一道小程序来帮助他们确定谁是新的国王。有三个候选人,每个选民只能投一票,要求输出最终的票最高的人的名字。
样例输入
yangguang
Bob
zhengyang
Bob
Bob
Zhengyang
Yangguang
Bob
样例输出
Bob
#include<stdio.h>
#include<string.h>struct p{
char n[20];
int l;
}m[3];void main()
{
char a[20],c = ‘0’;
m[0].l = 0;
m[1].l = 0;
m[2].l = 0;
int n = 0,max = 0;
scanf(“%s %s %s”,m[0].n,m[1].n,m[2].n);
while (c!=’\n’)
{
scanf(“%s”, &a);
if (strcmp(a,m[0].n)==0)
m[0].l++;
else if (strcmp(a, m[1].n) == 0)
m[1].l++;
else if (strcmp(a, m[2].n) == 0)
m[2].l++;
n++;
c = getchar();
}
for(n = 0; n <3 ; n++)
{
if (m[max].l < m[n].l)
{
max = n;
}
}
printf(“%s”, m[max].n);
}
本题要求编写程序,用结构体来存储二维平面向量坐标并计算两个二维平面向量的差向量。
输入描述
输入在一行中按照“x1 y1 x2 y2 ”的格式给出两个二维平面向量v1=(x1,y1)和v2=(x2,y2)的分量。
输出描述
在一行中按照(x, y)的格式输出差向量,坐标输出小数点后一位(注意不能输出−0.0)。
注意输出逗号后面有一个空格!
样例输入
3.5 -2.7 -13.9 8.7
样例输出
(17.4, -11.4)
#include<stdio.h>
struct l{
float x;
float y;
}a,b;void main()
{
scanf(“%f %f %f %f”,&a.x,&a.y,&b.x,&b.y);
printf(“(%.1f, %.1f)”,a.x-b.x,a.y-b.y);
}
本题要求用结构体来存储三个学生的成绩,每个学生有3门课的成绩(成绩为小数),从键盘输入以上数据(包括姓名以及各课程成绩),计算出平均成绩,然后按照平均分的降序排列输出。
输入描述
依次输入三个学生的信息,每个学生的信息占用一行。
输出描述
按照平均分的降序依次输出每个学生的姓名和平均分(保留小数点后两位数),两组输出之间需换行分割。
样例输入
yangchang 80 81 82
yangguang 90 94 92
liguang 85 80 90
样例输出
yangguang 92.00
#include<stdio.h>
struct s{
char name[20];
int a;
int b;
int c;
}m[3];void main()
{
int n;
float i,j,k;
for(n = 0; n < 3; n++){
scanf(“%s %d %d %d”,m[n].name,&m[n].a,&m[n].b,&m[n].c);
}
i = (m[0].a + m[0].b + m[0].c)/3.0;
j = (m[1].a + m[1].b + m[1].c)/3.0;
k = (m[2].a + m[2].b + m[2].c)/3.0;
if(i > j&&i >k)
printf(“%s %.2f”,m[0].name,i);
else if(j > i&&j > k)
printf(“%s %.2f”,m[1].name,j);
else if(k > j&&k > i)
printf(“%s %.2f”,m[2].name,k);
}
输入多个学生的学号、姓名和成绩,然后输出成绩最高的哪个学生的姓名和学号
输入描述 输入包含多组样例。
每组样例包含一个整数N,代表有N个学生。
接下来N行依次输入每个学生的学号、姓名和成绩。
若N = 0,则表示输入结束,这个样例不需要被处理。
输出描述 对于每组用例,你应当输出这组样例N个学生中成绩最高的学生的姓名和学号,每个输出占一行。
样例输入
2
1000 mingming 89
1001 lingling 90
3
1090 huanghuang 88
1076 zhouzhou 76
1003 xiaohong 87
0
样例输出
1001 lingling
1090 huanghuang
#include<stdio.h>
void main()
{
int n;
while(scanf(“%d”,&n)!=0)
{
if(n==0)break;struct student{
int num;
char name[20];
int gra;
} a[n];
int m = n,i = 0,j = 0;
while (n != 0)
{
scanf(“%d %s %d”, &a[j].num,a[j].name,&a[j].gra);
n–; j++;
}
for (i = 0,j = 0; i < m; i++)
{
if (a[j].gra < a[i].gra)
j = i;
}
printf(“%d %s\n”, a[j].num, a[j].name);
}
}
给定几组日期,要求按照时间从前往后顺序输出
输入描述
有多组样例输入,以0 0代表结束。每行两个数字,第一个代表月份,第二个代表日期。
输出描述
每组输出占一行
样例输入
6 8
1 8
12 12
6 6
0 0
样例输出
1 8
6 6
6 8
12 12
#include<stdio.h>
struct date{
int month;
int day;
};void main()
{
struct date a[100];
int i = 0,j,n,t,f,m;
while(scanf(“%d %d”, &a[i].month, &a[i].day) != EOF){
if (a[i].month == 0 && a[i].day == 0)break;
i++;
}
n = i;
for(i = 0; i < n-1; i++){
for(j = i+1; j < n; j++){
if(a[i].month > a[j].month){
t = a[i].month;f = a[i].day;
a[i].month = a[j].month;
a[i].day = a[j].day;
a[j].month = t;
a[j].day = f;
}
}
}
for(i = 0; i < n-1; i++){
for(j = i+1; j < n; j++){
if(a[i].month == a[j].month){
if(a[i].day>a[j].day){
m = a[i].day;
a[i].day = a[j].day;
a[j].day = m;
}
}
}
}
for(i = 0;i < n; i++){
printf(“%d %d\n”,a[i].month,a[i].day);
}
}