第3章 最简单的程序设计 习题

作者在 2011-10-13 11:20:11 发布以下内容
习题3.1
/*
时间:2011年10月12日11:32:14
题目:习题3.1 假如我国国民生产总值的年增长率为9%,计算十年后我国国民生产总值与现在相比增长多少百分比
备注:计算公式为 p=(1+r)^n r为年增长率,n为年数,p为与现在相比的倍数
*/
# include <stdio.h>
# include <math.h>

int main()
{
    double r,p;
    int n;

    r = 9.0/100;
    n = 10;
    p = pow(1+r,n);
    printf("十年后我国国民生产总值与现在相比增长了%lf%\n",p*100);    //如果想输出半角的%,需要敲两次

    return 0;
}
/*
在VC++6.0中的输出结果为:
————————————
十年后我国国民生产总值与现在相比增长了236.736367%
Press any key to continue
————————————
*/
 
习题3.2
/*
时间:2011年10月12日13:53:14
题目:习题3.2 存款利息的计算
*/
# include <stdio.h>
# include <math.h>

int main()
{
    int b=1000;
    double r1=4.14/100;
    double r2=4.68/100;
    double r3=5.4/100;
    double r5=5.85/100;
    double r0=0.72/100;
    double p5,p23,p32,p1,p0;

    p5 = b*(1+r5*5);
    p23 = b*(1+r2*2)*(1+r3*3);
    p32 = b*(1+r3*3)*(1+r2*2);
    p1 = b*pow(1+r1,5);
    p0 = b*pow(1+r0/4,4*5);

    printf("一次存5年期的本息和为:\t\t%f\n",p5);
    printf("先存2年期再存3年期的本息和为:\t%f\n",p23);
    printf("先存3年期再存2年期的本息和为:\t%f\n",p32);
    printf("存1年期、连存5年的本息和为:\t%f\n",p1);
    printf("存活期的本息和为:\t\t%f\n",p0);

    return 0;
}
/*
在VC++6.0中的输出结果为:
————————————
一次存5年期的本息和为:         1292.500000
先存2年期再存3年期的本息和为:  1270.763200
先存3年期再存2年期的本息和为:  1270.763200
存1年期、连存5年的本息和为:    1224.863989
存活期的本息和为:              1036.622300
Press any key to continue
————————————
*/
 
习题3.3
/*
时间:2011年10月12日14:28:44
题目:习题3.3 购房从银行贷一笔款d,每月还p,月利率为r,计算多少个月还清,保留一位小数
备注:计算公式 m=(logp-log(p-d*r))/log(1+r)
*/
# include <stdio.h>
# include <math.h>

int main()
{
    int d=300000;
    int p=6000;
    double r=1.0/100;
    double m;

    m = log10(p/(p-d*r)) / log10(1+r);            //求以e为底对数的函数是log(x),求以10为底对数的函数是log10(x),
    printf("需要还款的时间是%-.1lf个月\n",m);

    return 0;
}
/*
在VC++6.0中的输出结果为:
————————————
需要还款的时间是69.7个月
Press any key to continue
————————————
*/
 
习题3.4
/*
时间:2011年10月12日14:58:53
题目:习题3.4 分析下面程序
*/
# include <stdio.h>

int main()
{
    char c1,c2;
    c1 = 97;
    c2 = 98;
    printf("c1=%c,c2=%c\n",c1,c2);        //显示97和98对应的ASCII码
    printf("c1=%d,c2=%d\n",c1,c2);

    char c3,c4;
    c3 = 197;
    c4 = 198;
    printf("c3=%c,c4=%c\n",c3,c4);        //输出问号,因为超过了127的范围
    printf("c3=%d,c4=%d\n",c3,c4);        //输出-59,-58.也就是197-256和198-256

    int c5,c6;
    c5 = 97;
    c6 = 98;
    printf("c5=%c,c6=%c\n",c5,c6);        //和用char定义变量效果一样
    printf("c5=%d,c6=%d\n",c5,c6);

    int c7,c8;
    c7 = 197;
    c8 = 198;
    printf("c7=%c,c8=%c\n",c7,c8);        //输出问号
    printf("c7=%d,c8=%d\n",c7,c8);        //输出197,198

    return 0;
}
/*
在VC++6.0中的输出结果为:
————————————
c1=a,c2=b
c1=97,c2=98
c3=?c4=?
c3=-59,c4=-58
c5=a,c6=b
c5=97,c6=98
c7=?c8=?
c7=197,c8=198
Press any key to continue
————————————
*/
 
习题3.5
/*
时间:2011年10月12日15:19:25
题目:用下面的scanf函数输入数据使a=3,b=7,x=8.5,y=71.82,c1='A',c2='a'
*/
# include <stdio.h>

int main()
{
    int a,b;
    float x,y;
    char c1,c2;

    scanf("a=%db=%d",&a,&b);    //输入时a=3b=7。除了格式符的部分必须原样输入,回车结束
    scanf("%f%e",&x,&y);        //输入8.5 71.82之间用空格格开,输完不能回车,否则会车会被下面的语句当成一个字符赋值给c1,同样也不能输入空格
    scanf("%c%c",&c1,&c2);        //在71.82后面直接输入Aa。中间不能加空格,否则空格会被当成一个字符赋值给c2

    printf("a=%d,b=%d\n",a,b);
    printf("x=%f,y=%e\n",x,y);
    printf("c1=%c,c2=%c\n",c1,c2);

    return 0;
}
/*
在VC++6.0中的输出结果为:
————————————
a=3b=7
8.5 71.82Aa
a=3,b=7
x=8.500000,y=7.182000e+001
c1=A,c2=a
Press any key to continue
------------------------
如果71.82后面输入回车
a=3b=7
8.5 71.82
Aa
a=3,b=7
x=8.500000,y=7.182000e+001
c1=
,c2=A
Press any key to continue
-------------------------
如果71.82后面输入空格
a=3b=7
8.5 71.82 Aa
a=3,b=7
x=8.500000,y=7.182000e+001
c1= ,c2=A
Press any key to continue
-------------------------
如果A和a中间输入空格
a=3b=7
8.5 71.82A a
a=3,b=7
x=8.500000,y=7.182000e+001
c1=A,c2=
Press any key to continue
————————————
*/
 
习题3.6
/*
时间:2011年10月12日15:35:26
题目:习题3.6 编程序将"China"译成密码"Glmre",分别用putchar和printf函数输出
备注:密码规律为 加4
*/
# include <stdio.h>

int main()
{
    char c1='C';
    char c2='h';
    char c3='i';
    char c4='n';
    char c5='a';

    c1 += 4;
    c2 += 4;
    c3 += 4;
    c4 += 4;
    c5 += 4;

    printf("%c%c%c%c%c\n",c1,c2,c3,c4,c5);
    putchar(c1);
    putchar(c2);
    putchar(c3);
    putchar(c4);
    putchar(c5);
    putchar('\n');

    return 0;
}
/*
在VC++6.0中的输出结果为:
————————————
Glmre
Glmre
Press any key to continue
————————————
*/
 
习题3.7
/*
时间:2011年10月12日15:58:03
题目:习题3.7 求圆周长,圆面积,球表面积,球体积,圆柱体积,scanf输入,输出要有说明,保留2位小数
*/
# include <stdio.h>

int main()
{
    double r,h;
    double pi=3.1415926;
    double c,s,sq,vq,vz;

    printf("输入半径:");
    scanf("%lf",&r);
    printf("输入圆柱的高:");
    scanf("%lf",&h);

    c = 2*pi*r;
    s = pi*r*r;
    sq = 4*pi*r*r;
    vq = 4/3*pi*r*r*r;
    vz = pi*r*r*h;

    printf("半径为%lf的圆的周长=\t\t\t%.2lf\n",r,c);
    printf("半径为%lf的圆的面积=\t\t\t%.2lf\n",r,s);
    printf("半径为%lf的球的表面积=\t\t\t%.2lf\n",r,sq);
    printf("半径为%lf的球的体积=\t\t\t%.2lf\n",r,vq);
    printf("半径为%lf、高为%lf的圆柱的体积=\t%.2lf\n",r,h,vz);

    

    return 0;
}
/*
在VC++6.0中的输出结果为:
————————————
输入半径:1.5
输入圆柱的高:3
半径为1.500000的圆的周长=                       9.42
半径为1.500000的圆的面积=                       7.07
半径为1.500000的球的表面积=                     28.27
半径为1.500000的球的体积=                       10.60
半径为1.500000、高为3.000000的圆柱的体积=       21.21
Press any key to continue
————————————
*/
 
习题3.8
/*
时间:2011年10月13日10:46:28
题目:习题3.8 编程序,用getchar读字符,分别用putchar和printf函数输出
*/
# include <stdio.h>

int main()
{
    char c1,c2;
    printf("请输入两个字符\n");
    c1=getchar();
    c2=getchar();
    putchar(c1);
    putchar(c2);
    putchar('\n');
    printf("%c%c\n",c1,c2);
    printf("%d,%d\n",c1,c2);    //想输出ASCII码值只能用printf
    putchar(getchar());            //将之前用以结束输入的回车输出,避免对后面读字符产生影响

    int c3,c4;                    //c定义为字符型还是整型没什么区别
    printf("请输入两个字符\n");
    c3=getchar();
    c4=getchar();
    putchar(c3);
    putchar(c4);
    putchar('\n');
    printf("%c%c\n",c3,c4);
    printf("%d,%d\n",c3,c4);
    putchar(getchar());    

    int c5,c6;                    //c定义为整形后用printf函数输入也可以
    printf("请输入两个整数\n");
    scanf("%d%d",&c5,&c6);        //输入的整数是有范围的,不能大于127
    putchar(c5);
    putchar(c6);
    putchar('\n');
    printf("%c%c\n",c5,c6);
    printf("%d,%d\n",c5,c6);
    putchar(getchar());    

    return 0;
}
/*
在VC++6.0中的输出结果为:
————————————
请输入两个字符
ab
ab
ab
97,98

请输入两个字符
ab
ab
ab
97,98

请输入两个整数
97 98
ab
ab
97,98

Press any key to continue
————————————
*/
《C程序设计》学习 | 阅读 2771 次
文章评论,共2条
laznrbfe
2011-10-19 23:32
1
<img src="image/face/2.gif" class="face"><br />
3.4的注释有点问题<br />
//输出-58,-59.也就是197-256和198-256<br />
应该改为://输出-59,-58.也就是197-256和198-256
edwardflee(作者)
2011-10-20 16:17
2
<div class="quote"><span class="q"><b>laznrbfe</b>: <img src="image/face/2.gif" class="face"><br />
3.4的注释有点问题<br />
//输出-58,-59.也就是197-256和198-256<br />
应该改为://输出-59,-58.也就是197-256和198-256</span></div>确实确实,又粗心了,谢谢哥们<img src="image/face/2.gif" class="face">
游客请输入验证码
最新评论