C语言之130题

目录:

1.时间转换

2.总成绩和平均分计算

3.kiki和酸奶

4.发布会信息

5.输出学生信息

6.计算平均成绩

7.进制A+B

8.网购

9.争夺前五名

10.竞选社长

一:时间转换

题目描述:
给定秒数seconds (0< seconds < 100,000,000),把秒转化成小时、分钟和秒。

示例1
输入:3611
输出:1 1 1
参考答案:

#include 
int main()
{
     int sec = 0;
     scanf("%d", &sec);
     int h = sec/60/60;
     int  m = sec/60%60;
     int s = sec%60;
     printf("%d %d %d\n", h,m,s);
     return 0;
}


答案解析:
计算好对应的数字,按照格式打印就行。

 

二:总成绩和平均分计算

描述

依次输入一个学生的3科成绩,在屏幕上输出该学生的总成绩以及平均成绩。

输入描述:

一行,3科成绩,成绩之间用一个空格隔开。

输出描述:

一行,总成绩和平均成绩(小数点后保留两位),用一个空格隔开。

示例1

输入:

79.5 80.0 98.0

复制输出:

257.50 85.83

参考答案:

#include 
int main()
{
     int i = 0;
     float sum = 0.0;
     float avg = 0.0;
     float score = 0.0;
     for(i=0; i<3; i++)
  {
      scanf("%f", &score);
      sum += score;
  }
      printf("%.2f %.2f\n", sum, sum/3.0);
      return 0;
  }

三:kiki和酸奶

描述

BoBo买了一箱酸奶,里面有n盒未打开的酸奶,KiKi喜欢喝酸奶,第一时间发现了酸奶。KiKi每h分钟能喝光一盒酸奶,并且KiKi在喝光一盒酸奶之前不会喝另一个,那么经过m分钟后还有多少盒未打开的酸奶?

输入描述:

多组输入,每组输入仅一行,包括n,h和m(均为整数)。输入数据保证m <= n * h。

输出描述:

针对每组输入,输出也仅一行,剩下的未打开的酸奶盒数。

示例1

输入:

8 5 16

复制输出:

4

参考答案:

#include 
int main()
    { 

    int n = 0;
    int h = 0;
    int m = 0;
    while(scanf("%d %d %d", &n, &h, &m) != EOF)
   {
        if(m%h>0)
        printf("%d\n", n-m/h-1);
        else
        printf("%d\n", n-m/h);
    }
        return 0;
}

答案解析:
1. 注意多组输入
2. 如果h分钟喝一瓶酸奶,那么m分钟喝汽水的瓶数就是h/m瓶,但是如果m%h有余数,就说明又打
开了一瓶,只是没来得及喝完,那么位打开的就少一瓶。

四:发布会信息

描述

你的手机丢了,在屏幕上输出信息告诉大家。

输入描述:

输出描述:

I lost my cellphone!

参考答案:

#include 
int main()
{
    printf("I lost my cellphone!\n");
    return 0;
}

五:输出学生信息

描述

学生信息管理系统是学校教学管理的重要工具,现有一名学生基本信息如下:姓名-Jack,年龄-18,性别-Man,请按照输出样例的格式输出该学生的信息。

输入描述:

输出描述:

输出分为三行,分别为标题行,分隔行,信息行。
第一行,标题行,每个标题之间间隔4个空格。
第二行,分隔行,一共21个减号"-"。
第三行,信息行,每列输出信息和标题首字母对齐。输出样例如下:
Name Age Gender
---------------------
Jack 18 man

参考答案:

#include 
int main()
{
    printf("Name Age Gender\n");
    printf("---------------------\n");
    printf("Jack 18 man\n");
    return 0;
}

六:计算平均成绩

从键盘输入5个学生的成绩(整数),求他们的平均成绩(浮点数,保留一位小数)。

 

#include 
int main()
{
        int i = 0;
        int sum = 0;
        int input = 0;
        for(i=0; i<5; i++)
    {
        scanf("%d", &input);
        sum += input;
    }
    printf("%.1f\n", sum/5.0);
    return 0;
}

七:进制A+B

描述

输入一个十六进制数a,和一个八进制数b,输出a+b的十进制结果(范围-231~231-1)。

输入描述:

一行,一个十六进制数a,和一个八进制数b,中间间隔一个空格。

输出描述:

一行,a+b的十进制结果。

示例1

输入:

0x12 05

复制输出:

23

复制

备注:

十六进制Hexadecimal一般以0x开头,例如0xFF。八进制Octal,一般以0开头,例如07。

参考答案:

#include
int main()
{
    int a = 0;
   int b = 0;
   scanf("%x %o", &a, &b);
   int sum = a+b;
   printf("%d\n", sum);
   return 0;
} 

答案解析:
1. 首先要理解十进制、十六进制、八进制只是一种数据的表示形式,不是数据的存储形式。

2. 不同格式的数据的输出在C语言中有不同的格式指定,比如:%x是十六进制格式,%o就是八进制
格式。
3. 不同进制的数据存放都整形变量中都是整形值,直接计算就行,计算交给计算机。

八:网购

描述

KiKi非常喜欢网购,在一家店铺他看中了一件衣服,他了解到,如果今天是“双11”(11月11日)则这件衣服打7折,“双12” (12月12日)则这件衣服打8折,如果有优惠券可以额外减50元(优惠券只能在双11或双12使用),求KiKi最终所花的钱数。

数据范围:衣服价格满足 1 \le val \le 100000 \1≤val≤100000 

输入描述:

一行,四个数字,第一个数表示小明看中的衣服价格,第二和第三个整数分别表示当天的月份、当天的日期、第四个整数表示是否有优惠券(有优惠券用1表示,无优惠券用0表示)。 注:输入日期保证只有“双11”和“双12”。

输出描述:

一行,小明实际花的钱数(保留两位小数)。(提示:不要指望商家倒找你钱)

示例1

输入:

1000.0 11 11 1

复制输出:

650.00

复制

示例2

输入:

999.8 12 12 0

复制输出:

799.84

复制

示例3

输入:

66.6 11 11 1

复制输出:

0.00

参考答案:

#include 
int main()
{
   float price = 0.0;
   int m = 0;
   int d = 0;
   int flag = 0;
   scanf("%f%d%d%d", &price, &m, &d, &flag);
   if(m == 11 && d == 11)
{
   price *= 0.7;
   if(flag == 1)
   price -= 50;
}
  else if(m==12 && d == 12)
 {
   price *= 0.8;
   if(flag == 1)
   price -= 50;
}
  if(price < 0.0)
  price = 0.0;
  printf("%.2f\n", price);
  return 0;
}

九:争夺前五名

描述

期中考试开始了,大家都想取得好成绩,争夺前五名。从键盘输入 n 个学生成绩,输出每组排在前五高的成绩。

数据范围: 5 \le n \le 50 \5≤n≤50  ,成绩采取百分制并不会出现负数

输入描述:

两行,第一行输入一个整数,表示n个学生(>=5),第二行输入n个学生成绩(整数表示,范围0~100),用空格分隔。

输出描述:

一行,输出成绩最高的前五个,用空格分隔。

示例1

输入:

6
99 45 78 67 72 88

复制输出:

99 88 78 72 67

复制

示例2

输入:

5
10 20 30 40 50

复制输出:

50 40 30 20 10

参考答案:

#include 
int cmp_int(const void* e1, const void*e2)
{
     return *(int*)e1 - *(int*)e2;
}
int main()
{
    int n = 0;
    int score[40] = {0};
    scanf("%d", &n);
    int i = 0;
    for(i=0; i

十:竞选社长

假设你们社团要竞选社长,有两名候选人分别是A和B,社团每名同学必须并且只能投一票,最终得票多的人为社长.

输入描述:

一行,字符序列,包含A或B,输入以字符0结束。

输出描述:

一行,一个字符,A或B或E,输出A表示A得票数多,输出B表示B得票数多,输出E表示二人得票数相等。

示例1

输入:

ABBABBAAB0

复制输出:

B

参考答案:

#include 
int main()
{
    char arr[100] = {0};
    gets(arr);
    int i = 0;
    int count_a = 0;
    int count_b = 0;
   while(arr[i] != '0')
{
   if(arr[i] == 'A')
{
   count_a ++;
}
    else if(arr[i] == 'B')
{
   count_b ++;
}
   i++;
}
   if(count_a > count_b)
   printf("A");
   else if(count_a < count_b)
   printf("B");
   else
   printf("E");
   return 0;
}

你可能感兴趣的:(c语言130题,c语言)