中国大学MOOC第12周编程题在线测试

1 计算时间差V2.0(4分)
题目内容:用结构体定义时钟类型,编程从键盘任意输入两个时间(例如4时55分和1时25分),计算并输出这两个时间之间的间隔。要求不输出时间差的负号。结构体类型定义如下:typedef struct clock{ int hour; int minute; int second;} CLOCK;
函数原型: CLOCK CalculateTime(CLOCK t1, CLOCK t2);函数功能:计算并返回两个时间t1和t2之间的差
程序运行结果示例1:Input time one:(hour,minute):4,55↙Input time two: (hour,minute):1,25↙3hour,30minute程序运行结果示例2:
Input time one:(hour,minute):1,33↙Input time two: (hour,minute):5,21↙3hour,48minute
输入提示: “Input time one:(hour,minute):” "Input time two: (hour,minute):"输入格式: “%d,%d"输出格式:”%dhour,%dminute\n"为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。 时间限制:500ms内存限制:32000kb

#include<stdio.h>
#include<math.h>
main()
{
 typedef struct clock
 {
  int hour;
  int minute;
  int second;
 } CLOCK;
 struct clock stu1;
 struct clock stu2;
 struct clock stu3;
 printf("Input time one:(hour,minute):");
 scanf("%d,%d", &stu1.hour, &stu1.minute);
 printf("Input time two: (hour,minute):");
 scanf("%d,%d", &stu2.hour, &stu2.minute);
 stu3.hour = fabs((stu1.hour * 60 + stu1.minute) - (stu2.hour * 60 + stu2.minute)) / 60;
 stu3.minute = fabs(((stu1.hour * 60 + stu1.minute) - (stu2.hour * 60 + stu2.minute)) % 60);
 printf("%dhour,%dminute\n", stu3.hour, stu3.minute);
}

2 奖学金发放(4分)
题目内容:某校的惯例是在每学期的期末考试之后发放奖学金。发放的奖学金共有五种,每项奖学金获取的条件分别如下:1) 院士奖学金:期末平均成绩高于80分(>80),并且在本学期内发表1篇或1篇以上论文的学生每人均可获得8000元;2) 五四奖学金:期末平均成绩高于85分(>85),并且班级评议成绩高于80分(>80)的学生每人均可获得4000元;3) 成绩优秀奖:期末平均成绩高于90分(>90)的学生每人均可获得2000元;4) 西部奖学金:期末平均成绩高于85分(>85)的西部省份学生每人均可获得1000元;5) 班级贡献奖:班级评议成绩高于80分(>80)的学生干部每人均可获得850元;只要符合上述条件就可获得相应的奖项,每项奖学金的获奖人数没有限制,每名学生也可以同时获得多项奖学金。例如姚明的期末平均成绩是87分,班级评议成绩82分,同时他还是一位学生干部,那么他可以同时获得五四奖学金和班级贡献奖,奖金总数是4850元。现在给出若干学生的相关数据(假设总有同学能满足获得奖学金的条件),请编程计算哪些同学获得的奖金总数最高。结构体类型定义如下:typedef struct winners{ char name[20]; int finalScore; int classScore; char work; char west; int paper; int scholarship;} WIN;
函数原型:void Addup(WIN stu[], int n);函数原型:int FindMax(WIN student[], int n);程序运行结果示例:Input n:4↙Input name:YaoMing↙Input final score:87↙Input class score:82↙Class cadre or not?(Y/N):Y↙Students from the West or not?(Y/N):N↙Input the number of published papers:0↙name:YaoMing,scholarship:4850Input name:ChenRuiyi↙Input final score:88↙Input class score:78↙Class cadre or not?(Y/N):N↙Students from the West or not?(Y/N):Y↙Input the number of published papers:1↙name:ChenRuiyi,scholarship:9000Input name:LiXin↙Input final score:92↙Input class score:88↙Class cadre or not?(Y/N):N↙Students from the West or not?(Y/N):N↙Input the number of published papers:0↙name:LiXin,scholarship:6000Input name:ZhangQin↙Input final score:83↙Input class score:87↙Class cadre or not?(Y/N):Y↙Students from the West or not?(Y/N):N↙Input the number of published papers:1↙name:ZhangQin,scholarship:8850ChenRuiyi get the highest scholarship 9000
输入学生人数提示:"Input n:“输入学生姓名提示:“Input name:“输入学生期末平均成绩提示:“Input final score:“输入学生班级评议成绩提示:“Input class score:“输入是否为学生干部提示:“Class cadre or not?(Y/N):“输入是否为西部学生提示:“Students from the West or not?(Y/N):“输入发表文章数量提示:“Input the number of published papers:”
输入格式: 输入学生人数:”%d” 输入学生姓名:”%s” 输入学生成绩:”%d” 输入是否为学生干部:” %c” (注意:%c前面有一个空格) 输入是否为西部学生:” %c” (注意:%c前面有一个空格) 输入发表文章数量: “%d”
输出格式:
输出学生获得的奖学金: “name:%s,scholarship:%d\n” 输出获得奖学金总数最高的学生:”%s get the highest scholarship %d\n"为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。 时间限制:500ms内存限制:32000kb

#include<stdio.h>
typedef struct winners
{
 char name[20];
 int finalScore;
 int classScore;
 char work;
 char west;
 int paper;
 int scholarship;
} WIN;
main() {
 int i, count = 0, n, s;
 WIN stu[100];
 printf("Input n:");
 scanf("%d", &n);
 s = n;
 while (n--)
 {
  stu[count].scholarship = 0;
  printf("Input name:");
  scanf("%s", &stu[count].name);
  printf("Input final score:");
  scanf("%d", &stu[count].finalScore);
  printf("Input class score:");
  scanf("%d", &stu[count].classScore);
  printf("Class cadre or not?(Y/N):");
  scanf(" %c", &stu[count].work);
  printf("Students from the West or not?(Y/N):");
  scanf(" %c", &stu[count].west);
  printf("Input the number of published papers:");
  scanf("%d", &stu[count].paper);
  if (stu[count].finalScore > 90)
  {
   stu[count].scholarship += 2000;
  }
  if (stu[count].finalScore > 85 && stu[count].classScore > 80)
  {
   stu[count].scholarship += 4000;
  }
  if (stu[count].classScore > 80)
  {
   if (stu[count].work != 78)
   {
    stu[count].scholarship += 850;
   }
  }
  if (stu[count].finalScore > 85)
  {
   if (stu[count].west != 78) {
    stu[count].scholarship += 1000;
   }
  }
  if (stu[count].finalScore > 80 && stu[count].paper)
  {
   stu[count].scholarship += 8000;
  }
  printf("name:%s,scholarship:%d\n", stu[count].name, stu[count].scholarship);
  count++;
 }
 int max;
 count = 0;
 max = stu[0].scholarship;
 for (i = 0; i < s; i++)
 {
  if (max < stu[i].scholarship)
  {
   max = stu[i].scholarship;
   count = i;
  }
 }
 printf("%s get the highest scholarship %d\n", stu[count].name, max);
}

3 评选最牛群主v1.0(4分)
题目内容:现在要评选最牛群主,已知有3名最牛群主的候选人(分别是tom,jack和rose),有不超过1000人参与投票,最后要通过投票评选出一名最牛群主,从键盘输入每位参与投票的人的投票结果,即其投票的候选人的名字,请你编程统计并输出每位候选人的得票数,以及得票数最多的候选人的名字。候选人的名字中间不允许出现空格,并且必须小写。若候选人名字输入错误,则按废票处理。
程序运行结果示例1:Input the number of electorates:8↙
Input vote 1:tom↙Input vote 2:jack↙Input vote 3:rose↙Input vote 4:tom↙Input vote 5:rose↙Input vote 6:rose↙Input vote 7:jack↙Input vote 8:rose↙Election results:tom:2jack:2rose:4rose wins程序运行结果示例2:Input the number of electorates:5↙Input vote 1:tom↙Input vote 2:mary↙Input vote 3:rose↙Input vote 4:jack↙Input vote 5:tom↙Election results:tom:2jack:1rose:1tom wins
提示输入候选人数量:“Input the number of electorates:“提示输入候选人: “Input vote %d:“输入格式: 输入候选人数量:”%d” 输入候选人姓名:”%s” 输出格式:
输出候选人得票数:"%s:%d\n" 输出票数最多的候选人姓名:"%s wins\n"输出评选结果提示信息:"Election results:\n"为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。 时间限制:500ms内存限制:32000kb

#include<stdio.h>
int main()
{
 int n, i, vote1 = 0, vote2 = 0, vote3 = 0;
 char name[10];
 printf("Input the number of electorates:");
 scanf("%d", &n);
 for (i = 0; i < n; i++)
 {
  printf("Input vote %d:", i + 1);
  scanf("%s", name);
  if (strcmp("tom", name) == 0)
  {
   vote1++;
  }
  else if (strcmp("jack", name) == 0)
  {
   vote2++;
  }
  else if (strcmp("rose", name) == 0)
  {
   vote3++;
  }
 }
 printf("Election results:\n");
 printf("%s:%d\n", "tom", vote1);
 printf("%s:%d\n", "jack", vote2);
 printf("%s:%d\n", "rose", vote3);
 if (vote1 > vote2&&vote1 > vote3)
 {
  printf("%s wins\n", "tom", vote1);
 }
 else if (vote2 > vote1&&vote2 > vote3)
 {
  printf("%s wins\n", "jack", vote2);
 }
 else
 {
  printf("%s wins\n", "rose", vote3);
 }
 return 0;
}

4 星期判断(4分)
题目内容:请输入星期几的第一个字母(不区分大小写)来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母(小写),否则输出“data error”。程序运行结果示例1:please input the first letter of someday:
S↙please input second letter:u↙sunday程序运行结果示例2:please input the first letter of someday:F↙friday程序运行结果示例2:please input the first letter of someday:h↙data error
第一个字母的输入提示信息:"please input the first letter of someday:\n"第二个字母的输入提示信息:"please input second letter:\n"用户输入错误提示信息:“data error\n"输入格式: " %c” (注意:%c前面有一个空格)输出格式:星期一:"monday\n"星期二:"tuesday\n"星期三:"wednesday\n"星期四:"thursday\n"星期五:"friday\n"星期六:"saturday\n"星期日:"sunday\n"为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。 时间限制:500ms内存限制:32000kb

#include<stdio.h>
int main()
{
 int j = -1, i;
 char m, n;
 char day[7][12] = { "monday\n","tuesday\n","wednesday\n","thursday\n","friday\n","saturday\n","sunday\n" };
 printf("please input the first letter of someday:\n");
 scanf("%c", &m);
 for (i = 0; i < 7; i++)
 {
  if (day[i][0] == m || day[i][0] == m + 32)
  {
   j = i;
   break;
  }
 }
 if (j != -1)
 {
  printf("please input second letter:\n");
  scanf(" %c", &n);
  if (day[i][0] != 't'&& day[i][0] != 's')
  {
   if (day[j][1] == n)
   {
    printf("%s", day[j]);
   }
   else
   {
    printf("data error\n");
   }
  }
  else
  {
   if (day[i][0] == 't')
   {
    if (n == 'u')
    {
     printf("tuesday\n");
    }
    else if (n == 'h')
    {
     printf("thursday\n");
    }
    else
    {
     printf("data error\n");
    }
   }
   else if (day[i][0] == 's')
   {
    if (n == 'u')
    {
     printf("sunday\n");
    }
    else if (n == 'a')
    {
     printf("saturday\n");
    }
    else
    {
     printf("data error\n");
    }
   }
  }
 }
 else
 {
  printf("data error\n");
 }
 return 0;
}
  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值