慕课哈工大c语言程序设计精髓练习题第二周

1 输出逆序数

题目内容:

从键盘任意输入一个3位整数,编程计算并输出它的逆序数忽略整数前的正负号)。例如,输入-123,则忽略负号,由123分离出其百位1、十位2、个位3,然后计算3*100+2*10+1 = 321,并输出321。

#include 
#include 
#include 
int main()
{
    int x;
    scanf("%d",&x);
    x=fabs(x);
    int x0,x1,x2;
    x0=x%10;
    x1 = (int)(x/10)%10;
    x2=x/100;
    printf("y=%d",x0*100+x1*10+x2);
    return 0;
}

输出结果:

a=43
b=21
a+b=64
a-b=22
a*b=903
a/b=2.05
a%b=1

 

2计算总分和平均分

题目内容:

小明本学期共有5门课程,分别是英语、语文、数学、历史和音乐。5科的期中考试成绩分别是86分、74分、92分、77分、82分,期末考试成绩分别是81分、87分、90分、62分、88分。已知期中和期末考试成绩分别占总成绩的30%和70%。定义相应的变量存放各科成绩,并计算出小明5门课程的总分和平均分。要求平均分输出两种形式:带2位小数的浮点数形式和不带小数的整数形式。要求总分输出带2位小数的浮点数形式。程序中浮点数的数据类型均为float类型。

#include 
#include 
int main()
{
    int eng1=86,chi1=74,mat1=92,his1=77,mus1=82;
    int eng2=81,chi2=87,mat2=90,his2=62,mus2=88;
    float total;
    total=(86+74+92+77+82)*0.3+(81+87+90+62+88)*0.7;
    printf("total=%.2f\n",total);
    printf("average=%.2f\n",total/5);
    printf("average=%d\n",(int)total/5);

    return 0;
}

输出结果

total=408.90
average=81.78
average=81

 

3 存款利率计算器V1.0

题目内容:

设银行定期存款的年利率rate为2.25%,已知存款期为n年,存款本金为capital元,试编程计算并输出n年后的本利之和deposit。程序中所有浮点数的数据类型均为double类型。

#include
#include
#include
int main()
{
    double rate,deposit,capital;
    int n;
    printf("请输入存款期限,年利率,本金\n");
    scanf("%d,%lf,%lf",&n,&rate,&capital);
    printf("年份%d\n利率%lf\n本金%lf\n",n,rate,capital);
    printf("本利和是%.3f\n",capital*pow((1+rate),n));
    return 0;
}
运行后输入(注意标点半角)

10,0.0225,1000回车

输出结果

年份10
利率0.022500
本金1000.000000
本利和是1249.203

 

4 数位拆分v1.0

题目内容:

现有一个4位数的正整数n=4321(即n是一个已知的数,固定为4321),编写程序将其拆分为两个2位数正整数43和21,计算并输出拆分后的两个数的加、减、乘、除求余的结果。例如n=4321,设拆分后的两个整数为a,b,则a=43,b=21。除法运算结果要求精确到小数点后2位,数据类型为float

#include 
#include 
int main()
{
    const int n=4321;
    int a,b;
    b=n%100;
    a=(n-b)/100;
    printf("a=%d\nb=%d\n",a,b);
    printf("a+b=%d\n",a+b);
    printf("a-b=%d\n",a-b);
    printf("a*b=%d\n",a*b);
    printf("a/b=%.2f\n",(float)a/b);
    printf("a%%b=%d\n",a%b);
    return 0;
}

输出结果

a=43
b=21
a+b=64
a-b=22
a*b=903
a/b=2.05
a%b=1

 

5 求正/负余数

题目内容:

在C语言中,如果被除数为负值,则对一个正数求余的时候,求出的余数也是一个负数。在某些场合下,我们需要求出它的正余数,例如:在C语言中有(-11)%5=-1,但是有时我们希望得到的余数不是-1,而是4。请编写程序计算(-11)%5的负余数正余数

审题

猜测4的由来 5-11%5=4,举例验证上式正确性,c语言中(-23)%3=-2,3-23%3=1,猜测正确

#include 
#include 
#include 
int main()
{
    int negative,positive;
    printf("negative:%d\n",(-11)%5);
    printf("positive:%d\n",5-11%5);
    return 0;
}

输出结果

negative:-1
positive:4

 

6 身高预测

题目内容:

已知小明(男孩)爸爸的身高是175厘米,妈妈的身高是162厘米。小红(女孩)爸爸的身高是169厘米,妈妈的身高是153厘米,按照下面公式,预测并输出小明和小红的遗传身高(不考虑后天因素)。

         男性成人时身高=(faHeight + moHeight)×0.54cm

         女性成人时身高=(faHeight×0.923 + moHeight)/2cm

#include 
#include 
int main()
{
    int bfh=175,bmh=162,gfh=169,gmh=153;
    printf("Height of xiao ming:%d\n",(int)((bfh+bmh)*0.54));
    printf("Height of xiao hong:%d\n",(int)(gfh*0.923+gmh)/2);
    return 0;
}

输出结果

Height of xiao ming:181
Height of xiao hong:154

 

7 求一元二次方程的根

题目内容:

根据下面给出的求根公式,计算并输出一元二次方程

的两个实根,要求精确到小数点后4位。程序中所有浮点数的数据类型均为float.

#include 
#include 
#include 
int main()
{
    int a=2,b=3,c=1;
    float x1,x2;
    x1=-(float)b/(2*a)+(float)(sqrt(b*b-4*a*c))/(2*a);
    x2=-(float)b/(2*a)-(float)(sqrt(b*b-4*a*c))/(2*a);
    printf("x1=%.4f\n",x1);
    printf("x2=%.4f\n",x2);
    return 0;
}

输出结果

x1=-0.5000
x2=-1.0000

你可能感兴趣的:(慕课哈工大c语言习题)