18041 分期还款(加强版)
Description
从银行贷款金额为 d dd,准备每月还款额为 p pp,月利率为 r rr 。请编写程序输入这三个数值,计算并输出多少个月能够还清贷款,输出时保留 1 11 位小数。
如果无法还清,请输出 “God”
计算公式如下:
输入格式
三个数,分别为货款金额、每月还款和月利率,以空格分隔,均为非负数,其中 d , p , r > = 0 d,p,r>=0d,p,r>=0
输出格式
需要还款的月份
输入样例
50 50 0.01
输出样例
1.0
贷款为0时和(p-d*r)<=0
#include <stdio.h>
#include <stdlib.h>
#include <math.h>int main()
{double d,p,r;scanf("%lf%lf%lf",&d,&p,&r);if(d==0)printf("0.0\n");else if((p-d*r)<=0)printf("God\n");else{ printf("%.1f", log(p/(p-d*r))/log(1+r));}return 0;
}
18037 20秒后的时间
Description
编写程序,输入三个整数变量 h o u r hourhour(小时)、m i n u t e minuteminute(分钟)、s e c o n d secondsecond(秒)代表一个时间,
输出该时间 20 2020 秒以后的时间。
输入格式
一行三个整数,分别代表小时、分钟、秒,中间使用冒号分隔
输出格式
输出一个时间,数字间用冒号分隔
小时、分钟、秒均占两个数字位,不足位用0补足
输入样例
15:30:41
输出样例
15:31:01
#include <stdio.h>int main()
{int h,m,s;scanf("%d:%d:%d", &h,&m,&s);s += 20;if(s >= 60) {s %= 60;m++;}if(m >= 60) {m %= 60;h++;}if(h >= 24) {h %= 24;}printf("%02d:%02d:%02d\n", h, m, s);return 0;
}
1037 计算数列和
Description
有数列:
编程实现,由键盘输入 n ,计算输出数列前 n 项和。(结果保留四位小数,提示:要使用 double ,否则精度不够)
输出格式
请按格式输出
输入样例
20
1
输出样例
32.6603
#include<stdio.h>int main() { double a = 2;double b = 1;double ans = 0;int n;scanf("%d",&n);for(int i = 1 ; i <= n ; i ++) {ans += a / b;up = a + b;down = a - b;}printf("%.4f\n",ans);
}
18049 迭代法求平方根
Description
使用迭代法求 a 的平方根。求平方根的迭代公式如下,要求计算到相邻两次求出的 x 的差的绝对值小于10 -5时停止,结果显示 4位小数
输入格式
输入一个非负实数 a
输出格式
计算并输出平方根
输入样例
16
输出样例
4.0000
注意0÷0 无意义,单独判断
#include <stdio.h>
#include <math.h>int main()
{double a;scanf("%lf", &a);if(a == 0) {printf("%.4f",0);return 0;}double x0 = a;double x1 = (x0 + a/x0) / 2.0;while(fabs(x0 - x1) >= 1e-5) {x0 = (x1 + a/x1) / 2;double temp = x0;x0 = x1;x1 = temp;}printf("%.4f\n", x1);return 0;
}
18057 ASCII码值之和的差
Description
输入两个字符串 s1 和 s2 (每个串占一行,以换行回车符结束),计算两个字符串的所有字符的 ASCII 码值之和的差。
输入格式
两行字符,每行字符不超过 80个字符
输出格式
ASCII 码值之和的差
注意这个题差就是差,不用求绝对值!!!(懒得喷)
输入样例
234
123
3
#include <stdio.h>
#include <string.h>int main() { char a[100],b[100];gets(a);gets(b);int l1 = strlen(a);int l2 = strlen(b);int ans1 = 0;int ans2 = 0;for(int i = 0 ; i < l1 ; i ++) {ans1 += a[i];}for(int i = 0 ; i < l2 ; i ++) {ans2 += b[i];}printf("%d",ans1 - ans2);return 0;
}
18068 选择排序
输入10个整数,编写一个实现对数组进行选择排序的函数
#include <stdio.h>int sort(int a[], int n)
{int i,j,k,tmp;for(i=0;i<n-1; i++){k=i;for(_______________________)if(_______________________) k=j;tmp=a[k];a[k]=a[i];a[i]=tmp;}
}int main()
{int a[10];int i;for(i=0; i<10; i++) scanf("%d", &a[i]);sort(a,10);for(i=0; i<10; i++) printf("%d\n", a[i]);return 0;
}
输入格式
10 1010 个整数,以空格分隔
输出格式
排序后的 10 1010 个整数,一行一个数字
#include <stdio.h>int sort(int a[], int n)
{int i,j,k,tmp;for(i=0;i<n-1; i++){k=i;for(j = i ; j < n ; j ++/*方框1*/)if(a[k] > a[j]/*方框2*/) k=j;tmp=a[k];a[k]=a[i];a[i]=tmp;}
}int main()
{int a[10];int i;for(i=0; i<10; i++) scanf("%d", &a[i]);sort(a,10);for(i=0; i<10; i++) printf("%d\n", a[i]);return 0;
}