以下题目是由老师布置的《 谭浩强C程序设计(第四版)》的oj练习题,感谢老师的辛苦付出~
使用软件是Devc++5.11。
抄了作业记得点个赞谢谢!!网课也要加油学a
一共有五道题~~~
A. C语言_ex02_01
运加粗样式行时间限制: 1000 运行内存限制: 65536
题目描述
输入只有一行,依次为整数a、操作符op、和整数b,a、op、b中间有一个空格分隔。其中-10000<a,b<10000,操作符op为“+”、“-”、“*”、“/”、和“%”之一。
输出也只有一行,为a、b两个数通过op的计算结果。比如,输入为“1 + 2”,则计算1和2的和并输出“1 + 2 = 3”。
注意:当操作符op为“/”或“%”,且b为0时,算式无效,此时,程序输出一个单词:Invalid
输入样例
1 + 2
输出样例
1 + 2 = 3
注意:符号与数之间有一个空格
#include<stdio.h>
int main()
{
int a,b;
char op;
scanf("%d %c %d",&a,&op,&b);//scanf才用加这个 &
if (op=='+')//两个等于号是=,一个等于号是赋值
printf ("%d + %d = %d",a,b,a+b);
if (op=='*')
printf("%d * %d = %d",a,b,a*b) ;
if (op=='-')
printf("%d - %d = %d",a,b,a-b) ;
if (op=='/')
{
if (b==0)
printf("Invalid") ;
else printf("%d / %d = %d",a,b,a/b);
} //两个if要用大括号
if (op=='%')
{if (b==0)
printf("Invalid") ;
else printf("%d %% %d = %d",a,b,a%b);//百分号要用两个表示
}
}
B. C语言_ex02_02
运行时间限制: 1000 运行内存限制: 65536
题目描述
输入为两个用空格分隔的正整数year和month,它们分别代表年份和月份。输入保证合法,用int型存储即可。
输出为year年month月的天数。
输入样例
2018 3
输出样例
31
要先知道怎么判断闰年,能被4但是不能被100整除。和能被400整除的年份是闰年。
#include<stdio.h>
int main()
{
int year, month; //能被四不能被100整除的是闰年、能被400整除的是闰年。
scanf("%d %d",&year,&month);
// if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
// printf("31");//也可以这样写哦,我自己想练一下switch的用法
switch(month)
{
case 1:;
case 3:;
case 5:;
case 7:;
case 8:;
case 10:;
case 12: printf("31");
default: break;
}
switch(month)
{
case 4:;
case 6:;
case 9:;
case 11: printf("30");
default:
break;
}
if(month==2) //如果他是二月份再判断
{
if(year%4==0&&year%100!=0)//是闰年的一种情况(能被四不能被100整除)
printf("29");
else
if(year%400==0) //另一种情况(能被400整除 )
printf("29");
//if((year%4==0&&year%100!=0)||(year%400==0))
// printf("29");
else
printf("28");
}
return 0;
}
C. C语言_ex02_03
运行时间限制: 1000 运行内存限制: 65536
题目描述
输入只有一行,为用空格分隔的5个整数,这5个整数均大于-10000,小于10000。
输出为这5个数的最大值。
输入样例
2 4 6 7 8
输出样例
8
#include<stdio.h>
int main()
{
int a,b,c,d,e,max;
scanf("%d %d %d %d %d",&a,&b,&c,&d,&e);
max=a;
if(max<b)
max=b;
if(max<c)
max=c;
if(max<d)
max=d;
if(max<e)
max=e;
printf("%d",max);
return 0;
}
//就是一个个比过去的!
D. C语言_ex02_04
运行时间限制: 1000 运行内存限制: 65536
题目描述(前面一堆废话…)
摄氏温度(Celsius temperature)一种使用广泛的温度。历史上它是摄氏温标所定义的温度。现在摄氏温标已废弃不用,摄氏温度有了新的定义。但在数值上,它与过去人们习惯使用的摄氏温标温度很相近。摄氏温度的规定 把在标准大气压下冰水混合物的温度定为0摄氏度,沸水的温度定为100摄氏度,0摄氏度和100摄氏度中间分为100个等分,每个等分代表1摄氏度。
摄氏温标是A.摄尔修斯在1742年首先提出的一种经验温标,过去曾广泛使用过。摄氏温标以水沸点(标准大气压下水和水蒸气之间的平衡温度)为100度和冰点(标准大气压下冰和被空气饱和的水之间的平衡温度)为零度作为温标的两个固定点。摄氏温标采用玻璃汞温度计作为内插仪器,假定温度和汞柱的高度成正比,即把水沸点与冰点之间的汞柱的高度差等分为100格,1格对应于1度。随着测温技术的发展,人们早就不使用玻璃汞温度计作为定义温标的内插仪器了。但是后来仍有人把水沸点为 100度、冰点为零度的温标都称为摄氏温标。1954年第10届国际计量大会决定采用水三相点一个固定点来定义温度的单位,冰点已不再是温标的定义固定点了。因此,“摄氏温标”这一术语也就不应再继续使用了。
华氏度(Fahrenheit)是用来计量温度的单位,符号℉。包括我国在内的世界上绝大多数国家都使用摄氏度;世界上仅存5个国家使用华氏度,包括巴哈马、伯利兹、英属开曼群岛、帕劳、美利坚合众国及其他附属领土(波多黎各、关岛、美属维京群岛)。
华氏度(°F)是温度的一种度量单位,以其发明者德国人华伦海特(Gabriel D. Fahrenheit,1686—1736)命名的。1714年他发现液体金属水银比酒精更适宜制造温度计,以水银为测温介质,发明了玻璃水银温度计,选取氯化铵和冰水的混合物的冰点温度为温度计的零度,人体温度为温度计的100度。在标准大气压下,冰的熔点为32℉,水的沸点为212℉,中间有180等分,每等分为华氏1度,记作“1℉”。
“华氏温标”是经验温标之一。在美国的日常生活中,多采用这种温标,用字母“℉”表示。
摄氏温度(℃)和华氏温度(℉)之间的换算关系为:
华氏度=摄氏度×1.8+32 或 华氏度=摄氏度×9/5+32
摄氏度=(华氏度-32)÷1.8
现请你写一段摄氏温度与华氏温度转换的程序。
输入格式
共一样,为一个浮点数f和一个字符c,两者之间由一个空格分隔。其中-10000<f<10000,c只可能是”C”或”F”。
输出格式
只有一行,如果输入的温度低于零下273.15摄氏度时,直接输出Invalid。否则输出该温度。要求,如果输入的是摄氏度则转换为华氏度,如果输入的为华氏度,转换为摄氏度。数值保留2位小数,同时在数值后输出温度单位(”C”或”F”)。具体格式见输出样例。
输入样例
0 C
输出样例
32.00 F
注意:单位前边有一个空格
#include<stdio.h>
int main()
{
float f,g;
char c,d;
scanf("%f %c",&f,&c);
if(c=='C')
{
if(f+273.15<0)
{
printf("Invalid");
return 0;//它写在这里,让程序提前结束,最后那里写不写都行。
}
else
{
d='F';
g=f*1.8+32;
}
}
if(c=='F')
{
g=(f-32)/1.8;
d='C';
if(g+273.15<0)
{
printf("Invalid");
return 0;
}
}
printf("%.2f %c",g,d);
}
E. C语言_ex02_05
运行时间限制: 1000 运行内存限制: 65536
题目描述
输入只有一行,为三个用空格分隔的浮点数a,b,c(0<a,b,c<100)
输出也只有一行,如果 a - b 等于c ,则输出yes,否则输出no。
输入样例
3.4 2.2 1.3
输出样例
no
#include<stdio.h>
int main()
{
float a,b,c;
scanf("%f %f %f",&a,&b,&c);
if(a-b-c<1e-1&&a-b-c>-1e-1)
printf("yes");
else
printf("no");
}