第八次作业

  • Post author:
  • Post category:其他


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

}

}



版权声明:本文为xwdlu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。