8.C语言程序设计代码

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); 
    }

}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值