7-1 重要的话说三遍(5分) ~ 7-20 简单计算器 (20分)

7-1 重要的话说三遍(5分)

这道超级简单的题目没有任何输入。

你只需要把这句很重要的话 —— “I’m gonna WIN!”——连续输出三遍就可以了。

注意每遍占一行,除了每行的回车不能有任何多余字符。

#include <stdio.h>

int main()
{
	printf("I'm gonna WIN!\n");
	printf("I'm gonna WIN!\n");
	printf("I'm gonna WIN!\n");

	return 0;
}

7-2 I Love GPLT (5分)

这道超级简单的题目没有任何输入。

你只需要把这句很重要的话 —— I Love GPLT ——竖着输出就可以了。

所谓“竖着输出”,是指每个字符占一行(包括空格),即每行只能有1个字符和回车。

#include <stdio.h>

int main()
{
	printf("I\n \nL\no\nv\ne\n \nG\nP\nL\nT\n");

	return 0;
}

7-3 输出带框文字 (5分)

本题要求编写程序,输出指定的带框文字。

输入格式:

本题无输入

输出格式:

按照下列格式输出带框文字。

************
  Welcome
************
#include <stdio.h>

int main()
{
	printf("************\n  Welcome\n************");

	return 0;
}

7-4 输出菱形图案 (5分)

本题要求编写程序,输出指定的由“A”组成的菱形图案。

输入格式:

本题无输入

输出格式:

按照下列格式输出由“A”组成的菱形图案。

  A
A   A
  A
#include <stdio.h>

int main()
{
	printf(
"  A\n"
"A   A\n"
"  A");

	return 0;
}

7-5 输出倒三角图案 (5分)

本题要求编写程序,输出指定的由“*”组成的倒三角图案。

输入格式:

本题目没有输入。

输出格式:

按照下列格式输出由“*”组成的倒三角图案。

* * * *
 * * *
  * *
   *
#include <stdio.h>

int main()
{
	printf(
"* * * *\n"
" * * *\n"
"  * *\n"
"   *");

	return 0;
}

7-6 厘米换算英尺英寸 (15分)

如果已知英制长度的英尺foot和英寸inch的值,那么对应的米是(foot+inch/12)×0.3048。现在,如果用户输入的是厘米数,那么对应英制长度的英尺和英寸是多少呢?别忘了1英尺等于12英寸。

输入格式:

输入在一行中给出1个正整数,单位是厘米。

输出格式:

在一行中输出这个厘米数对应英制长度的英尺和英寸的整数值,中间用空格分开。

输入样例:

170

输出样例:

5 6
#include <stdio.h>
int main (void) 
{
	int cm, inch, foot;
	scanf("%d",&cm);
	foot = cm/100.0/0.3048;
	inch = (cm/100.0/0.3048-foot)*12;
	printf("%d %d", foot, inch);
	
	return 0;
}

7-7 计算摄氏温度 (10分)

给定一个华氏温度F,本题要求编写程序,计算对应的摄氏温度C。计算公式:C=5×(F−32)/9。题目保证输入与输出均在整型范围内。

输入格式:

输入在一行中给出一个华氏温度。

输出格式:

在一行中按照格式“Celsius = C”输出对应的摄氏温度C的整数值。

输入样例:

150

输出样例:

Celsius = 65
#include <stdio.h>
int main()
{
	int f, c;
	scanf("%d", &f);
	c = 5*(f-32)/9;
	printf("Celsius = %d", c);
	
	return 0;
}

7-8 是不是太胖了 (5分)

据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。已知市斤的数值是公斤数值的两倍。现给定某人身高,请你计算其标准体重应该是多少?(顺便也悄悄给自己算一下吧……)

输入格式:

输入第一行给出一个正整数H(100 < H ≤ 300),为某人身高。

输出格式:

在一行中输出对应的标准体重,单位为市斤,保留小数点后1位。

输入样例:

169

输出样例:

124.2
#include <stdio.h>
int main(void)
{
	int height;
	double weight;
	scanf("%d", &height);
	weight = (height-100)*0.9*2;
	printf("%.1f\n", weight);
	
	return 0;
}

7-9 求整数均值 (10分)

本题要求编写程序,计算4个整数的和与平均值。题目保证输入与输出均在整型范围内。

输入格式:

输入在一行中给出4个整数,其间以空格分隔。

输出格式:

在一行中按照格式“Sum = 和; Average = 平均值”顺序输出和与平均值,其中平均值精确到小数点后一位。

输入样例:

1 2 3 4

输出样例:

Sum = 10; Average = 2.5
#include <stdio.h>
int main()
{
	const int length=4;
	int x, i=0, sum=0;
	double average;

	do{
		scanf("%d", &x);
		sum += x;
		i++;		
	}while(i<length);
	average = sum*1.0/length;
	printf("Sum = %d; Average = %.1f\n", sum, average);
	
	return 0;
}

7-10 算术入门之加减乘除 (10分)

对于输入的两个整数,按照要求输出其和差积商。

输入格式:

在一行内输入两个不超过100的非负整数a和b,中间以一个空格间隔,且保证b不为0。

输出格式:

共四行,格式是:

[a] + [b] = [a+b]
[a] - [b] = [a-b]
[a] * [b] = [a*b]
[a] / [b] = [a/b]

其中,带有方括号的内容(如[a]、[b]、[a+b]等)表示相应整数或运算结果的值,在输出时要用实际的值代替。

并且:如果a能够被b整除,那么a/b应输出为整数格式,否则a/b输出为 带两位小数的格式。

提示:注意表达式中的空格。

输入样例1:

6 3

输出样例1:

6 + 3 = 9
6 - 3 = 3
6 * 3 = 18
6 / 3 = 2

输入样例2:

8 6

输出样例2:

8 + 6 = 14
8 - 6 = 2
8 * 6 = 48
8 / 6 = 1.33
#include <stdio.h>
int main()
{
	int a, b;
	scanf("%d %d", &a, &b);
	if(b!=0){
		printf("%d + %d = %d\n", a, b, a+b);
		printf("%d - %d = %d\n", a, b, a-b);
		printf("%d * %d = %d\n", a, b, a*b);
		
		if(a%b == 0)
			printf("%d / %d = %d\n", a, b, a/b);
		else
			printf("%d / %d = %.2f\n", a, b, a*1.0/b);
	}	
	return 0;
}

7-11 计算平均分 (5分)

已知某位学生的数学、英语和计算机课程的成绩分别是87分、72分和93分,求该生3门课程的平均成绩(结果按整型输出)。

输入格式:

本题无输入

输出格式:

按照下列格式输出结果:

math = 87, eng = 72, comp = 93, average = 计算所得的平均成绩
#include <stdio.h>
int main()
{
	int i=87, j=72, k=93;
	printf("math = %d, eng = %d, comp = %d, average = %d", i, j, k, (i+k+j)/3);
	
	return 0;
}

7-12 日期格式化 (5分)

世界上不同国家有不同的写日期的习惯。比如美国人习惯写成“月-日-年”,而中国人习惯写成“年-月-日”。下面请你写个程序,自动把读入的美国格式的日期改写成中国习惯的日期。

输入格式:

输入在一行中按照“mm-dd-yyyy”的格式给出月、日、年。题目保证给出的日期是1900年元旦至今合法的日期。

输出格式:

在一行中按照“yyyy-mm-dd”的格式给出年、月、日。

输入样例:

03-15-2017

输出样例:

2017-03-15
#include <stdio.h>
int main()
{
	int yyyy, mm, dd;
	scanf("%d-%d-%d", &mm, &dd, &yyyy);
	printf("%d-%02d-%02d\n", yyyy, mm, dd);
	return 0;
}

7-13 后天 (5分)

如果今天是星期三,后天就是星期五;如果今天是星期六,后天就是星期一。我们用数字1到7对应星期一到星期日。给定某一天,请你输出那天的“后天”是星期几。

输入格式:

输入第一行给出一个正整数D(1 ≤ D ≤ 7),代表星期里的某一天。

输出格式:

在一行中输出D天的后天是星期几。

输入样例:

3

输出样例:

5
#include <stdio.h>
int main()
{
	int day;
	scanf("%d", &day);
	if(day<=5){
		day+=2;
	}else{
		day+=(2-7);
	}
	printf("%d", day);
	return 0;
}

7-14 然后是几点 (15分)

有时候人们用四位数字表示一个时间,比如1106表示11点零6分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。

读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的零,即5点30分表示为530。注意,第二个数字表示的分钟数可能超过60,也可能是负数。

输入格式:

输入在一行中给出2个整数,分别是四位数字表示的起始时间、以及流逝的分钟数,其间以空格分隔。注意:在起始时间中,当小时为个位数时,没有前导的零,即5点30分表示为530;流逝的分钟数可能超过60,也可能是负数。

输出格式:

输出四位数字表示的终止时间,当小时为个位数时,没有前导的零。题目保证起始时间和终止时间在同一天内。

输入样例:

1120 110

输出样例:

1310
#include <stdio.h>
int main()
{
	int a, a_min, i, b;
	scanf("%d %d", &a, &i);
	a_min=(a/100)*60+(a%100);
	b=(a_min+i)/60*100+(a_min+i)%60;

	printf("%d", b);
	return 0;
}

7-15 BCD解密 (10分)

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;
	scanf ("%d", &a);
	printf ("%d", a/16*10+a%16); 
	
	return 0;
}

7-16 计算符号函数的值 (10分)

对于任一整数n,符号函数sign(n)的定义如下:

请编写程序计算该函数对任一输入整数的值。

输入格式:

输入在一行中给出整数n。

输出格式:

在一行中按照格式“sign(n) = 函数值”输出该整数n对应的函数值。

输入样例1:

10

输出样例1:

sign(10) = 1

输入样例2:

0

输出样例2:

sign(0) = 0

输入样例3:

-98

输出样例3:

sign(-98) = -1
#include <stdio.h>
int main()
{
	int n, a;
	scanf("%d", &n);
	
	if(n<0)
	a = -1;
	if(n==0)
	a = 0;
	if(n>0)
	a = 1;
	
	printf("sign(%d) = %d", n, a);
	
	return 0;
}

7-17 成绩转换 (15分)

本题要求编写程序将一个百分制成绩转换为五分制成绩。转换规则:

大于等于90分为A;
小于90且大于等于80为B;
小于80且大于等于70为C;
小于70且大于等于60为D;
小于60为E。

输入格式:

输入在一行中给出一个整数的百分制成绩。

输出格式:

在一行中输出对应的五分制成绩。

输入样例:

90

输出样例:

A
#include <stdio.h>
int main()
{
	int x;
	scanf("%d", &x);
//	本题要求编写程序将一个百分制成绩转换为五分制成绩。转换规则:
//	大于等于90分为A;
//	小于90且大于等于80为B;
//	小于80且大于等于70为C;
//	小于70且大于等于60为D;
//	小于60为E。	
	switch(x/10){
		case 10:
		case 9:
			printf("A");
			break;
		case 8:
			printf("B");
			break;	
		case 7:
			printf("C");
			break;	
		case 6:
			printf("D");
			break;	
		case 5:
		case 4:
		case 3:
		case 2:
		case 1:
		case 0:
			printf("E");
			break;	
	}
	
	return 0;
}

7-18 出租车计价 (15分)

本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:

起步里程为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()
{
//本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:
//起步里程为3公里,起步费10元;
//超起步里程后10公里内,每公里2元;
//超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
//营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。

//输入格式:
//输入在一行中给出输入行驶里程(单位为公里,精确到小数点后1位)与等待时间(整数,单位为分钟),其间以空格分隔。
//输出格式:
//在一行中输出乘客应支付的车费(单位为元),结果四舍五入,保留到元。
	double m, c;
	int t;
	scanf("%lf %d", &m, &t);
		
	if(m<=3)
		c=10+t/5*2;
	else if(m<=10)
		c=10+(m-3)*2+t/5*2;
	else
		c=10+((m-3)-(m-10))*2+(m-10)*2*1.5+t/5*2;
	
	printf("%.0f", c);
		
	return 0;
}

7-19 计算天数 (15分)

本题要求编写程序计算某年某月某日是该年中的第几天。

输入格式:

输入在一行中按照格式“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 year,month,day,
	a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
	scanf("%d/%d/%d",&year,&month,&day);
//	year=2000, month=03, day=02;
	
//注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。	
	if((year%4==0&&year%100!=0)||year%400==0)
		a[2]=29;
//		printf("a[2]=%d\n", a[2]);

	int i,n=0;
	for(i=0;i<month;i++)
		n+=a[i];

	printf("%d",n+day);
	
	return 0;
}

7-20 简单计算器 (20分)

模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。

输入格式:

输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明输入结束。

输出格式:

在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“ERROR”。

输入样例:

1+2*10-10/2=

输出样例:

10
#include <stdio.h>
int main(void)	//如果不需要从命令行中获取参数,请用int main(void);否则请用int main(int argc, char *argv[])
{
	int a, b;
	char i;
	scanf("%d", &a);	//	&
	
	while(scanf("%c", &i)){		
		switch(i){
			case '+': scanf("%d", &b); a+=b; break;
			case '-': scanf("%d", &b); a-=b; break;
			case '*': scanf("%d", &b); a*=b; break;
			case '/': 
				scanf("%d", &b);
				if(b==0){
					printf("ERROR"); return 0;
				}else{
					a/=b; break;
				}
			case '=': printf("%d", a); return 0;
			default: printf("ERROR"); return 0;
		}
	}
}
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涛声依旧很冷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值