1. 时间转换
给定秒数 --> 输出秒数 转化成 时/分/秒
//时间转换
//给定秒数 --> 转换成 小时/分/秒
int main()
{
//输入
int seconds = 0;
int h = 0;//小时
int m = 0;//分钟
int s = 0;//秒
scanf("%d", &seconds);
//计算
h = seconds / 60 / 60;
m = seconds / 60 % 60;
s = seconds % 60;
//输出
printf("%d %d %d", h, m, s);
return 0;
}
2.输入成绩/计算总成绩
//总成绩和平均分计算
//法一
int main()
{
//输入
double score[3] = { 0 };//三科成绩
scanf("%lf %lf %lf", &score[0], &score[1], &score[2]);
//计算
double sum = score[0] + score[1] + score[2];
double avg = sum / 3.0;
//输出
printf("%.2lf %.2lf\n", sum, avg);
return 0;
}
//法二
int main()
{
//输入计算
int i = 0;
double score = 0.0;
double sum = 0.0;
for (i = 0; i < 3; i++)
{
scanf("%lf", &score);
sum += score;
}
printf("%.2lf %.2lf\n", sum, sum / 3);
return 0;
}
3.kiki 喝酸奶
一箱酸奶有 n 盒未打开,kiki 每h分钟可以喝光一盒酸奶,并且在一盒酸奶喝完之前不会再喝另外一盒那么经过 m 分钟后,还有多少盒未打开酸奶?(m<=n*h)
- 情况一 : 刚好喝完一瓶 (n-m/h)
- 情况二 : 还没喝完一瓶 , 但是已经打开了 (n-m/h-1)
- 要求:可以多组输入 ---> 对于多组输入 , 考虑 scanf 函数的返回值 !
int main()
{
int n = 0;
int h = 0;
int m = 0;
while (scanf("%d %d %d", &n, &h, &m) != EOF)
{
if (m % h)
{
printf("%d\n", n - m / h - 1);
}
else
{
printf("%d\n", n - m / h);
}
}
printf("\n");
return 0;
}
4.进制A+B
输入一个十六进制a,和一个八进制数b,输出a+b的十进制结果
int main()
{
int a = 0;
int b = 0;
scanf("%x %o", &a, &b);
printf("%d\n", a + b);
return 0;
}
- 16进制,8进制只是数据的表示形式,实际上都是整数
- 16进制是以 0x 开头 %x
- 8进制是以 0 开头的 %o
5.网购
双11,衣服打7折;双十二,衣服打8折;如果有优惠劵可以额外减50元(仅可以在双11或双12使用),求kiki最终花钱数 ;
输入描述 : 看中衣服价格 当天月份 当天日期 是否有优惠劵(有 -> 1 ,无 -> 0)
注意 : 不要指望商家到找你钱
int main()
{
double price = 0.0;
int month = 0;
int day = 0;
int flag = 0;//是否有优惠劵
double cut = 1.0;
double last = 0.0;
//输入
scanf("%lf %d %d %d", &price, &month, &day, &flag);
if (month == 11 && day == 11)
{
cut = 0.7;
if (flag == 1)
{
last = price*cut - 50;
}
else
{
last = price * cut;
}
}
else if (month == 12 && day == 12)
{
cut = 0.8;
if (flag == 1)
{
last = price * cut - 50;
}
else
{
last = price * cut;
}
}
else
{
last = price;
}
if (last < 0.0)
{
printf("%.2lf\n", 0.0);
}
else
{
printf("%.2lf\n", last);
}
return 0;
}
//简化
int main()
{
double price = 0.0;
int month = 0;
int day = 0;
int flag = 0;
double cut = 1.0;
double last = 0.0;
scanf("%lf %d %d %d", &price, &month, &day, &flag);
if (month == 11 && day == 11)
{
cut = 0.7;
flag = 1;
}
if (month == 12 && day == 12)
{
cut = 0.8;
flag = 1;
}
last = price * cut - flag * 50;
if (last < 0.0)
{
printf("%.2lf", 0.0);
}
else
{
printf("%.2lf", last);
}
return 0;
}
6.争夺前 5 名
输入一个数值 n ( n<=40) : 表示输入的学生成绩的个数
---> 输入学生成绩
---> 输出最高的前五个成绩
//争夺前5名
int main()
{
//输入
int n = 0;//个数
int arr[40] = { 0 };//成绩
scanf("%d", &n);
int i = 0;
for (i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
//找出前五名 -- 排序 -- 冒泡排序 -- 升序 -- 后5个元素
//趟数
for (i = 0; i < n - 1; i++)
{
//一趟冒泡排序需要进行 多少对 的元素比较
for (int j = 0; j < n - 1 - i; j++)
{
if (arr[j] > arr[j + 1])
{
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
for (i = n - 1; i > n - 6; i--)
{
printf("%d ", arr[i]);
}
return 0;
}