7-1 计算分段函数[2]
本题目要求计算下列分段函数f(x)的值:
注:可在头文件中包含math.h
,并调用sqrt
函数求平方根,调用pow
函数求幂。
输入格式:
输入在一行中给出实数x。
输出格式:
在一行中按“f(x) = result”的格式输出,其中x与result都保留两位小数。
输入样例1:
10
输出样例1:
f(10.00) = 3.16
输入样例2:
-0.5
输出样例2:
f(-0.50) = -2.75
代码段:
#include <stdio.h>
#include <math.h>
int main()
{
float y,x;
scanf("%f",&x);
if(x>=0)
{
y=pow(x,0.5);
printf("f(%.2f) = %.2f",x,y);
}
if(x<0)
{
y=pow(x+1,2)+x*2+(1/x);
printf("f(%.2f) = %.2f",x,y);
}
}
7-2 三天打鱼两天晒网
中国有句俗语叫“三天打鱼两天晒网”。假设某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第N天中是“打鱼”还是“晒网”?
输入格式:
输入在一行中给出一个不超过1000的正整数N。
输出格式:
在一行中输出此人在第N天中是“Fishing”(即“打鱼”)还是“Drying”(即“晒网”),并且输出“in day N”。
输入样例1:
103
输出样例1:
Fishing in day 103
输入样例2:
34
输出样例2:
Drying in day 34
代码段:
#include <stdio.h>
int main()
{
int n,count;
scanf("%d",&n);
count=n%5;
if(1<=count&&count<=3)
printf("Fishing in day %d",n);
if(count==0||count==4)
printf("Drying in day %d",n);
}
7-3 计算火车运行时间
本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。
输入格式:
输入在一行中给出2个4位正整数,其间以空格分隔,分别表示火车的出发时间和到达时间。每个时间的格式为2位小时数(00-23)和2位分钟数(00-59),假设出发和到达在同一天内。
输出格式:
在一行输出该旅途所用的时间,格式为“hh:mm”,其中hh为2位小时数、mm为2位分钟数。
输入样例:
1201 1530
输出样例:
03:29
代码段:
#include <stdio.h>
int main()
{
int t1,t2,m1,m2,h,m;
scanf("%d %d",&t1,&t2);
m1=(t1/100)*60+t1%100;
m2=(t2/100)*60+t2%100;
m=m2-m1;
h=m/60;
m=m%60;
printf("%02d:%02d",h,m);
}
7-4 两个数的简单计算器
本题要求编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加、减、乘、除或求余运算。题目保证输入和输出均不超过整型范围。
输入格式:
输入在一行中依次输入操作数1、运算符、操作数2,其间以1个空格分隔。操作数的数据类型为整型,且保证除法和求余的分母非零。
输出格式:
当运算符为+
、-
、*
、/
、%
时,在一行输出相应的运算结果。若输入是非法符号(即除了加、减、乘、除和求余五种运算符以外的其他符号)则输出ERROR
。
输入样例1:
-7 / 2
输出样例1:
-3
输入样例2:
3 & 6
输出样例2:
ERROR
代码段:
#include <stdio.h>
int main()
{
int a,b,c;
char d;
scanf("%d %c %d",&a,&d,&b);
if(d=='+')
{
c=a+b;
printf("%d",c);
}
else if(d=='-')
{
c=a-b;
printf("%d",c);
}
else if(d=='*')
{
c=a*b;
printf("%d",c);
}
else if(d=='/')
{
c=a/b;
printf("%d",c);
}
else if(d=='%')
{
c=a%b;
printf("%d",c);
}
else printf("ERROR");
}
7-5 判断输入的字符是哪种类型
通过键盘输入一个字符,编程判断并输出用户输入的是什么类型的字符。
输入格式:
输入一个字符。
输出格式:
在一行中输出该字符是哪种类型的字符。
- 若用户输入字符为
'0'
~'9'
之一,输出This is a digit.
- 若用户输入字符在
'A'
~'Z'
之一,输出This is a capital letter.
- 若用户输入字符在
'a'
~'z'
之一,输出This is a small letter.
- 其他情况,输出
Other character.
输入样例:
6
输出样例:
This is a digit.
代码段;
#include <stdio.h>
int main()
{
char c;
scanf("%c",&c);
if('0'<=c&&c<='9')
printf("This is a digit.");
else if('A'<=c&&c<='Z')
printf("This is a capital letter.");
else if('a'<=c&&c<='z')
printf("This is a small letter.");
else printf("Other character.");
}
7-6 成绩判断
输入同学的C语言成绩,如果及格输出“C语言成绩合格。”,如果不及格输出“C语言成绩不合格。”
输入格式:
输入一个浮点数。
输出格式:
如果输入数据大于或等于60,输出“C语言成绩合格。”,否则输出“C语言成绩不合格。”
输入样例:
89.5
输出样例:
C语言成绩合格。
代码段:
#include <stdio.h>
int main()
{
float a;
scanf("%f",&a);
if(a>=60)
printf("C语言成绩合格。");
else printf("C语言成绩不合格。");
}
7-7 新年倒计时
学院计划在新年举行联欢晚会,要求每个班级都要准备节目。为了让班上同学有紧迫感,班长希望编写一个倒计时程序,输入日期,显示距离下一个新年的天数days
。例:输入“2021-11-11”,显示“还有51天到新年”。
输入格式:
输入以"-"分隔的当前日期。
输出格式:
以格式“还有days
天到新年”输出还有多少天到新年。无多余空格及其他字符。
输入样例:
2021-11-11
输出样例:
还有51天到新年
代码段:
#include<stdio.h>
int main() {
int y,m,d,s=0,i;
scanf("%d-%d-%d",&y,&m,&d);
for(i=m;i<=12;i++){
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12){
s=s+31;
}else if(i==4||i==6||i==9||i==11){
s=s+30;
}else if(i==2){
if(y%4==0&&y%100!=0 || y%400==0){
s=s+29;
}else{
s=s+28;
}
}
}
s=s-d+1;
printf("还有%d天到新年",s);
return 0;
}
7-8 计算运费
运输公司对用户计算运费。路程(s)越远,每千米运费就越低。标准如下:
- s<250km ,没有折扣;
- 250km≤s<500km, 2%的折扣;
- 500km≤s<1000km, 5%的折扣;
- 1000km≤s<2000km,8%的折扣;
- 2000km≤s<3000km,10%的折扣;
- 3000km≤s,15%的折扣。
设每千米每吨货物的基本运费为p,货物重为 w,距离为s,折扣为d,则总运费f的计算公式为:
f=p×w×s×(1-d)
输入格式:
在一行中以小数形式输入基本运费、货重和距离,以空格作为分隔符。
输出格式:
在一行输出计算出来的运费,精确到小数点后2位的值。
输入样例:
在这里给出一组输入。例如:
100 20 300
输出样例:
在这里给出相应的输出。例如:
freight=588000.00
代码段:
#include <stdio.h>
void main(){
int p,w,s;
double d,f;
scanf("%d%d%d",&p,&w,&s);
{
if(s<250)
d=0;
else if(s<500)
d=0.02;
else if(s<1000)
d=0.05;
else if(s<2000)
d=0.08;
else if(s<3000)
d=0.10;
else
d=0.15;
}
f=p*w*s*(1-d);
printf("freight=%.2f",f);
}