1.编程从键盘任意输入两个时间(例如4时55分和1时25分),计算并输出这两个时间之间的间隔。要求不输出时间差的负号。
#include<stdio.h> int main() { int hour1,minute1,hour2,minute2,hour3,minute3,time,time1,time2; printf("Input time one(hour, minute):"); scanf("%d,%d",&hour1,&minute1); printf("Input time two(hour, minute):"); scanf("%d,%d",&hour2,&minute2); time1=hour1*60+minute1; time2=hour2*60+minute2; if(time1>time2) time=time1-time2; else time=time2-time1; hour3=time/60; minute3=time%60; printf("%d hour %d minute\n",hour3,minute3); return 0; }
2.
设capital是最初的存款总额(即本金),rate是整存整取的存款年利率,n 是储蓄的年份,deposit是第n年年底账号里的存款总额。已知如下两种本利之和的计算方式:
-
按复利方式计息的本利之和计算公式为:deposit = capital * (1 + rate) n
-
按普通计息方式计算本利之和的公式为:deposit = capital * (1 + rate * n)
已知银行整存整取不同期限存款的年息利率分别为:
存期1年,利率为 0.0225
存期2年,利率为 0.0243
存期3年,利率为 0.0270
存期5年,利率为 0.0288
存期8年,利率为 0.0300
若输入其他年份,则输出"Error year!"
#include<stdio.h> #include<math.h> int main() { int flag=1; int year; double capital,rate,deposit; char interest; printf("Input capital, year:"); scanf("%lf,%d,&capital",&capital,&year); switch(year) { case 1:rate=0.0225; break; case 2:rate=0.0243; break; case 3:rate=0.0270; break; case 5:rate=0.0288; break; case 8:rate=0.0300; break; default:flag=0; } printf("Compound interest (Y/N)?"); scanf(" %c",&interest); if((interest==‘y‘||interest==‘Y‘)&&flag) { deposit=capital*pow(1+rate,year); printf("rate = %.4f, deposit = %.4f\n",rate,deposit); } else if((interest==‘n‘||interest==‘N‘)&&flag) { deposit=capital*(1+rate*year); printf("rate = %.4f, deposit = %.4f\n",rate,deposit); } else { printf("Error year!\n"); } return 0; }
3.
美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:“我年龄的立方是一个4位数。我年龄的4次方是一个6位数。这=10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。”请你编程算出他当时到底有多年轻。
#include <stdio.h> #include <stdlib.h> #include <math.h> int tenBit(int n,int *a); int main() { for(int x=10;x<=22;++x) { int a[10]={0,1,2,3,4,5,6,7,8,9}; int d = tenBit(x*x*x,a)+tenBit(x*x*x*x,a); if(d==10){ printf("age=%d\n",x); break; } } return 0; } int tenBit(int n,int *a){ int cnt =0; while(n){ for(int i=0;i<10;++i){ if(n%10==a[i]){ a[i]=-1; cnt++; } } n/=10; } return cnt; }