码迷,mamicode.com
首页 > 其他好文 > 详细

C程序练习

时间:2018-04-06 15:26:23      阅读:528      评论:0      收藏:0      [点我收藏+]

标签:方式   scanf   会议   1年   清华大学   printf   \n   padding   年龄   

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;
}
View Code

 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;
}
View Code

 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;
}
View Code

 

C程序练习

标签:方式   scanf   会议   1年   清华大学   printf   \n   padding   年龄   

原文地址:https://www.cnblogs.com/sunshine88/p/8719372.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!