一、教材习题第三章
1.从银行贷款金额为d,准备每月还款额为p,月利率为r。请编写程序输入这三个数值,计算并输出多少个月能够还清贷款,输出时保留1位小数。如果无法还清,请输出“God”
输入格式 三个数,分别为货款金额、每月还款和月利率,以空格分隔,均为非负数,其中d,p,r>=0
输出格式 需要还款的月份
输入样例 50 50 0.01
输出样例 1.0
代码如下(示例):
#include<stdio.h>
#include<math.h>
int main()
{
int d,p;
double r,month;
scanf("%d%d%lf",&d,&p,&r);//这道题有点坑,关键就是if,else if,else括号内语句的顺序
if(d==0)//就是我没有也不可能并且不想贷款
{
month = 0.0;
printf("%.1f\n",month);
}
else if(p<=r*d)//每个月还款额小于r*d就不可能还完
{
printf("God\n");
}
// else if(r==0)//可以不用的
// {
// month = d/p;
// printf("%.1f\n",month);
// }
else
{
month = log(p/(p-d*r))/log(1+r);//题目给的公式
printf("%.1f\n",month);
}
return 0;
}
二、教材习题第四章
1.根据如下数学公式,编写程序输入x,计算并输出y的值,保留两位小数
输入格式 输入一个实数x
输出格式 输出函数值
输入样例 0
输出样例 0.00
代码如下(示例):
#include<stdio.h>
int main()
{
double x=0,y=0; //实数x要为double型哦
scanf("%lf",&x);
if(x<1)
{
y=x;
printf("%.2lf\n",y);
}
else if(x<10)//意思是排除了x<1的情况,即1<=x且x<10
{
y = 2*x-1;
printf("%.2lf\n",y);
}
else
{
y = 3*x-11;
printf("%.2lf\n",y);
}
return 0;
}
2.编写程序,由键盘输入3个整数,输出其中最大的数。
输入格式 三个整数,空格分隔
输出格式 最大的数
输入样例 3 6 4
输出样例 6
代码如下(示例):
#include<stdio.h>
int main()
{
int a,b,c,max;
scanf("%d%d%d",&a,&b,&c);
max = a;
if(max<b)
max = b;
if(max<c)
max = c;
printf("%d\n",max);
return 0;
}
3.编写程序,由键盘输入一个百分制的整数成绩,要求输出对应的成绩等级。90分以上为A,80到89分为B,70到79分为C,60到69分为D,60分以下为E。成绩不在0到100之间时输出“error”
输入格式 一个整数成绩
输出格式 输出对应的等级或error
输入样例 99
输出样例 A
代码如下(示例):
#include<stdio.h>
int main()
{
int grade;
scanf("%d",&grade);
if(grade>=0 && grade<=100)
{
switch(grade/10)
{
case 10:
case 9:
printf("A\n");
break;
case 8:
printf("B\n");
break;
case 7:
printf("C\n");
break;
case 6:
printf("D\n");
break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
printf("E\n");
break;
}//如果把下面的else改成default放在switch语句中会出错,如果-1/10=0,会输出E
}
else
{
printf("error\n");
}
return 0;
}
4.编写程序,输入一个数字字符,输出其前一个和后一个的数字字符,如果输入的是0前一个输出“first”,9后一个则输出“last”,输入的不是数学字符,输出“error”
输入格式 一个字符
输出格式 输出结果
输入样例 0
输出样例 first 1
代码如下(示例):
#include<stdio.h>
int main()
{
char ch;
scanf("%c",&ch);
if(ch>='0'&&ch<='9')
{
if(ch=='0')
{
printf("first 1\n");
}
else if(ch=='9')
{
printf("8 last\n");
}
else
{
printf("%c %c\n",ch-1,ch+1);
}
}
else
{
printf("error\n");
}
return 0;
}
切,题目要求都写得不清不楚,一道啥比题目罢了
5.编写程序,输入三个整数变量hour(小时)、minute(分钟)、second(秒)代表一个时间,输出该时间20秒以后的时间。
输入格式
一行三个整数,分别代表小时、分钟、秒,中间使用冒号分隔
输出格式
输出一个时间,数字间用冒号分隔
小时、分钟、秒均占两个数字位,不足位用0补足
输入样例
15:30:41
输出样例
15:31:01
代码如下(示例):
#include<stdio.h>
int main()
{
int hour,minute,second;
scanf("%d:%d:%d",&hour,&minute,&second);
if(second+20>=60)
{
second = second + 20 - 60;
if(minute+1==60)
{
minute = 0;
if(hour+1==24)
{
hour=0;
}
else
hour = hour + 1;
}
else
minute = minute + 1;
}
else
second = second + 20;
printf("%02d:%02d:%02d\n",hour,minute,second);
return 0;
}
标程如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int h,m,s;
scanf("%d:%d:%d", &h,&m,&s);
s=s+20;
if(s>59)
{
s=s%60;
m++;
if(m>59)
{
m=m%60;
h++;
if(h>23)
h=0;
}
}
printf("%02d:%02d:%02d\n", h, m, s);
return 0;
}
总结
码字码累了,在线找个能帮我码字的对象hhh……(bushi~~)