2048星球要举行一次选举,以选出他们的新一任国王。请你帮忙写一道小程序来帮助他们确定谁是新的国王。有三个候选人,每个选民只能投一票,要求输出最终的票最高的人的名字。
#include<stdio.h>
void main()
{
struct people
{
char name[20];
int num;
} p[3];
char a[20];
p[0].num=0;p[1].num=0;p[2].num=0;
int n = 0; char c='0';
scanf("%s %s %s", &p[0].name, &p[1].name, &p[2].name);
while (c!='\n')
{
scanf("%s", &a);
if (strcmp(a,p[0].name)==0)p[0].num++;
else if (strcmp(a, p[1].name) == 0)p[1].num++;
else if (strcmp(a, p[2].name) == 0)p[2].num++;
n++;
c = getchar();
}
int max=0;
for (int i = 0; i <3 ; i++)
{
if (p[max].num < p[i].num)
{
max = i;
}
}
printf("%s", p[max].name);
}
本题要求编写程序,用结构体来存储二维平面向量坐标并计算两个二维平面向量的差向量。
#include<stdio.h>
void main()
{
struct locate
{
float x;
float y;
} num1,num2;
scanf("%f %f", &num1.x, &num1.y);
scanf("%f %f", &num2.x, &num2.y);
printf("(%.1f, %.1f)", num1.x - num2.x, num1.y - num2.y);
}
本题要求用结构体来存储三个学生的成绩,每个学生有3门课的成绩(成绩为小数),从键盘输入以上数据(包括姓名以及各课程成绩),计算出平均成绩,然后按照平均分的降序排列输出。
#include<stdio.h>
void main()
{
struct student
{
char name[20];
int a;
int b;
int c;
float aver;
} student[3];
int n = 3, i = 0;
while (n != 0)
{
scanf("%s %d %d %d", &student[i].name, &student[i].a, &student[i].b, &student[i].c);
student[i].aver = (student[i].a + student[i].b + student[i].c) / 3;
i++; n--;
}
int temp = 0; char temp1[20] = {'\0'};
for (i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
if (student[i].aver < student[j].aver)
{
temp = student[i].aver;
student[i].aver = student[j].aver;
student[j].aver = temp;
strcpy(temp1, student[i].name);
strcpy(student[i].name, student[j].name);
strcpy(student[j].name, temp1);
}
}
}
printf("%s %.2f\n", student[2].name, student[2].aver);
}
输入多个学生的学号、姓名和成绩,然后输出成绩最高的哪个学生的姓名和学号
#include<stdio.h>
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
if(n==0)break;
struct student
{
int number;
char name[20];
int grade;
} student[n];
int temp=0; int m = n,j=0;
while (n != 0)
{
scanf("%d %s %d", &student[j].number,&student[j].name,&student[j].grade);
n--; j++;
}
for (int i = 0; i < m; i++)
{
if (student[temp].grade < student[i].grade)
{
temp = i;
}
}
printf("%d %s\n", student[temp].number, student[temp].name);
}
return 0;
}
给定几组日期,要求按照时间从前往后顺序输出
#include<stdio.h>
void main()
{
struct date
{
int month;
int day;
} date[50];
int a = 0, b = 0,i=0,j;
while (scanf("%d %d", &date[i].month, &date[i].day) != EOF)
{
if (date[i].month == 0 && date[i].day == 0)break;
i++;
}
for (j = 0; j < i ; j++)
{
for (int k = 0; k < i; k++)
{
if (date[j].month < date[k].month)
{
int temp1, temp2;
temp1 = date[j].month;
temp2 = date[j].day;
date[j].month = date[k].month;
date[j].day = date[k].day;
date[k].month = temp1;
date[k].day = temp2;
}
if (date[j].month == date[k].month)
{
if (date[j].day < date[k].day)
{
int temp1, temp2;
temp1 = date[j].month;
temp2 = date[j].day;
date[j].month = date[k].month;
date[j].day = date[k].day;
date[k].month = temp1;
date[k].day = temp2;
}
}
}
}
for (j = 0; j < i; j++)
{
printf("%d %d\n", date[j].month, date[j].day);
}
}