c语言小练pintia11-20
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
11.计算平均分
已知某位学生的数学、英语和计算机课程的成绩分别是87分、72分和93分求该生3门课程的平均成绩结果按整型输出。
输入格式
本题无输入
输出格式
按照下列格式输出结果
math = 87, eng = 72, comp = 93, average = 计算所得的平均成绩
#include <stdio.h>
int main()
{
int a = 87, b = 72, c = 93;
double d = (a + b + c) / 3;
printf("math = %d, eng = %d, comp = %d, average = %d", a, b, c, (int)d);
return 0;
}
12.日期格式化
世界上不同国家有不同的写日期的习惯。比如美国人习惯写成“月-日-年”而中国人习惯写成“年-月-日”。下面请你写个程序自动把读入的美国格式的日期改写成中国习惯的日期。
输入格式
输入在一行中按照“mm-dd-yyyy”的格式给出月、日、年。题目保证给出的日期是1900年元旦至今合法的日期。
输出格式
在一行中按照“yyyy-mm-dd”的格式给出年、月、日。
输入样例
03-15-2017
输出样例
2017-03-15
#include <stdio.h>
int main()
{
int a, b, c;
scanf("%d-%d-%d",&a,&b,&c);
printf("%d-%02d-%02d", c, a, b);
return 0;
}
13.后天
如果今天是星期三后天就是星期五如果今天是星期六后天就是星期一。我们用数字1到7对应星期一到星期日。给定某一天请你输出那天的“后天”是星期几。
输入格式
输入第一行给出一个正整数D1 ≤D≤ 7代表星期里的某一天。
输出格式
在一行中输出D天的后天是星期几。
输入样例
3
输出样例
5
#include <stdio.h>
int main()
{
int a;
scanf("%d", &a);
if(a > 5){
printf("%d", a + 2 - 7);
}else{
printf("%d", a + 2);
}
return 0;
}
14.然后是几点
有时候人们用四位数字表示一个时间比如 1106 表示 11 点零 6 分。现在你的程序要根据起始时间和流逝的时间计算出终止时间。
读入两个数字第一个数字以这样的四位数字表示当前时间第二个数字表示分钟数计算当前时间经过那么多分钟后是几点结果也表示为四位数字。当小时为个位数时没有前导的零例如 5 点 30 分表示为 5300 点 30 分表示为 030。注意第二个数字表示的分钟数可能超过 60也可能是负数。
输入格式
输入在一行中给出 2 个整数分别是四位数字表示的起始时间、以及流逝的分钟数其间以空格分隔。注意在起始时间中当小时为个位数时没有前导的零即 5 点 30 分表示为 5300 点 30 分表示为 030。流逝的分钟数可能超过 60也可能是负数。
输出格式
输出不多于四位数字表示的终止时间当小时为个位数时没有前导的零。题目保证起始时间和终止时间在同一天内。
输入样例
1120 110
输出样例
1310
#include <stdio.h>
int main()
{
int a, b, c, d, e, f, h, i;
scanf("%d %d",&a,&b);
c = a/100;
d = a%100;
e = c * 60 + d;
f = e + b;
h = f / 60;
i = f % 60;
if ( h > 10){
printf("%02d%02d\n",h ,i);
}else{
printf("%01d%02d\n",h ,i);
}
return 0;
}
15.BCD解密
BCD数是用一个字节来表达两位十进制的数每四个比特表示一位。所以如果一个BCD数的十六进制是0x12它表达的就是十进制的12。但是小明没学过BCD把所有的BCD数都当作二进制数转换成十进制输出了。于是BCD的0x12被输出成了十进制的18了
现在你的程序要读入这个错误的十进制数然后输出正确的十进制数。提示你可以把18转换回0x12然后再转换回12。
输入格式
输入在一行中给出一个[0, 153]范围内的正整数保证能转换回有效的BCD数也就是说这个整数转换成十六进制时不会出现A-F的数字。
输出格式
输出对应的十进制数。
输入样例
18
输出样例
12
#include <stdio.h>
int main()
{
int a, b, c;
scanf("%d", &a);
b = a / 16;
c = a % 16;
if ( a < 16){
printf("%d", c);
}else{
printf("%d%d", b, c);
}
return 0;
}
16.计算符号函数的值
对于任一整数n符号函数sign(n)的定义如下
请编写程序计算该函数对任一输入整数的值。
输入格式:
输入在一行中给出整数n。
输出格式:
在一行中按照格式“sign(n) = 函数值”输出该整数n对应的函数值。
输入样例1:
10
输出样例1:
sign(10) = 1
#include <stdio.h>
int main ()
{
int a;
scanf("%d", &a);
if ( a > 1){
printf("sign(%d) = 1",a);
}else if( a == 0){
printf("sign(%d) = 0",a);
}else{
printf("sign(%d) = -1",a);
}
return 0;
}
17.成绩转换
本题要求编写程序将一个百分制成绩转换为五分制成绩。转换规则
大于等于90分为A
小于90且大于等于80为B
小于80且大于等于70为C
小于70且大于等于60为D
小于60为E。
输入格式:
输入在一行中给出一个整数的百分制成绩。
输出格式:
在一行中输出对应的五分制成绩。
输入样例:
90
输出样例:
A
#include <stdio.h>
int main ()
{
int a;
scanf("%d", &a);
if (a >= 90){
printf("A");
}else if( a >= 80){
printf("B");
}else if( a >= 70){
printf("C");
}else if( a >= 60){
printf("D");
}else if( a >= 0){
printf("E");
}
return 0;
}
18.出租车计价
本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下
起步里程为3公里起步费10元
超起步里程后10公里内每公里2元
超过10公里以上的部分加收50%的回空补贴费即每公里3元
营运过程中因路阻及乘客要求临时停车的按每5分钟2元计收不足5分钟则不收费。
输入格式:
输入在一行中给出输入行驶里程单位为公里精确到小数点后1位与等待时间整数单位为分钟其间以空格分隔。
输出格式:
在一行中输出乘客应支付的车费单位为元结果四舍五入保留到元。
输入样例1:
2.6 2
输出样例1:
10
输入样例2:
5.1 4
输出样例2:
14
输入样例3:
12.5 9
输出样例3:
34
#include <stdio.h>
int main()
{
double a , c , d;
int b, f, e ,q;
scanf("%lf %d", &a, &b);
if (a <= 3){
c = 10;
}else if( a <= 10){
c = 10 + (a - 3) * 2;
}else if( a > 10){
c = 24 + (a - 10) * 3;
}
if (b < 5){
d = 0;
}else if( b >= 5){
d = b/5*2;
}
f = c + 0.5;
q = f + d;
printf("%d\n", q);
}
19.计算天数
本题要求编写程序计算某年某月某日是该年中的第几天。
输入格式:
输入在一行中按照格式“yyyy/mm/dd”即“年/月/日”给出日期。注意闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。
输出格式:
在一行输出日期是该年中的第几天。
输入样例1:
2009/03/02
输出样例1:
61
输入样例2:
2000/03/02
输出样例2:
62
#include <stdio.h>
int main()
{
int a, b, c;
scanf("%d/%d/%d",&a, &b, &c);
if ((a % 4 == 0 && a % 100 != 0 )|| a % 400 == 0){
switch (b){
case 01:
printf("%d", c);
break;
case 02:
printf("%d", 31 + c);
break;
case 03:
printf("%d", 60 + c);
break;
case 04:
printf("%d", 91 + c);
break;
case 05:
printf("%d", 121 + c);
break;
case 06:
printf("%d", 152 + c);
break;
case 07:
printf("%d", 182 + c);
break;
case 8:
printf("%d", 213 + c);
break;
case 9:
printf("%d", 243 + c);
break;
case 10:
printf("%d", 274 + c);
break;
case 11:
printf("%d", 305 + c);
break;
case 12:
printf("%d", 335 + c);
break;
}
}else{
switch (b){
case 01:
printf("%d", c);
break;
case 02:
printf("%d", 31 + c);
break;
case 03:
printf("%d", 60 + c - 1);
break;
case 04:
printf("%d", 91 + c - 1);
break;
case 05:
printf("%d", 121 + c - 1);
break;
case 06:
printf("%d", 152 + c - 1);
break;
case 07:
printf("%d", 182 + c - 1);
break;
case 8:
printf("%d", 213 + c- 1);
break;
case 9:
printf("%d", 243 + c - 1);
break;
case 10:
printf("%d", 274 + c - 1);
break;
case 11:
printf("%d", 305 + c - 1);
break;
case 12:
printf("%d", 335 + c - 1);
break;
}
}
}
20.简单计算器
模拟简单运算器的工作。假设计算器只能进行加减乘除运算运算数和结果都是整数四种运算符的优先级相同按从左到右的顺序计算。
输入格式:
输入在一行中给出一个四则运算算式没有空格且至少有一个操作数。遇等号”=”说明输入结束。
输出格式:
在一行中输出算式的运算结果或者如果除法分母为0或有非法运算符则输出错误信息“ERROR”。
输入样例:
1+2*10-10/2=
输出样例:
10
#include <stdio.h>
int main()
{
int a,result;
char op;
scanf("%d",&a);
result=a;
scanf("%c",&op);
while(op!='=')
{
scanf("%d",&a);
switch(op)
{
case '+': result+=a; break;
case '-': result-=a; break;
case '*': result*=a; break;
case '/': if(a==0) {printf("ERROR");return 0;}
result/=a; break;
default : printf("ERROR");return 0;
}
scanf("%c",&op);
}
printf("%d\n",result);
return 0;
}