哈工大C语言公开课练兵编程(一)

/*
* Author:心理咨询木木(群里昵称:网恋吗我会98消音K)
* QQ群:468016221(19王道HIT计算机考研群)
*      218484263(2018HITCS闲聊群)
* remark:两个群文件都有资料和热心的学长学姐,一起学习吧。
*/

这里是第一周至第三周的一些东东。

重点内容补充内容的链接:
哈工大C语言公开课练兵编程(二)传送门 第四周至第六周
哈工大C语言公开课练兵编程(三)传送门 第七周至第九周
PS:当我再次准备把剩下的写完时,已经结课了。结课导致不能上传代码了,所以第十周到第十五周的内容只能等下一次开课的时候补充了。

由于题目比较简单直接给出了代码,就不用分析了。

第一周

1 hello world!(3分)

#include
int main(){
    printf("hello world!\n");
    return 0;
}

2 在屏幕上输出多行信息

#include
int main(){
    printf("hello world!\n");
    printf("hello hit!\n");
    printf("hello everyone!\n");
    return 0;
}

3 计算半圆弧长及半圆面积

题目描述:编程并输出半径r=5.3的半圆弧长(提示:半圆弧长不应该加直径的长度。)及该半圆弧与直经围成的半圆的面积,π的取值为3.14159。要求半径r和必须π利用宏常量表示。

输入格式:无
输出格式
半圆的面积输出格式: “Area=%.5f\n”
半圆弧长输出格式: “circumference=%.5f\n”
输出样例
Area=44.12363
circumference=16.65043

#include
#define r 5.3
#define PI 3.14159
int main(){
    printf( "Area=%.5f\n",PI*r*r/2);
    printf("circumference=%.5f\n",PI*r);
    return 0;
}

4 计算长方体体积

题目描述:编程并输出长1.2、宽4.3、高6.4的长方体的体积。要求长方体的长、宽、高必须利用const常量表示。程序中用到的数据类型均为为 double类型。
输入格式:无
输出格式:”volume=%.3f\n”

#include
int main(){
    const double a=1.2,b=4.3,c=6.4;
    printf("volume=%.3f\n",a*b*c);
    return 0;
}

第二周

1 输出逆序数

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

提示
1. 从键盘输入数据可以使用函数scanf()。例如,scanf(“%d”, &x); 表示从键盘输入整数并存入整形变量x中。
2. 利用取绝对值函数 fabs()忽略输入数据的负号。fabs(x)表示计算变量x的绝对值。
3.使用数学函数,需要在程序开头加上编译预处理指令 #include

#include
#include
int main(){
    int x;
    printf("Input x:\n");
    scanf("%d",&x);
    x=abs(x);
    x=x%10*100+x/10%10*10+x/100;
    printf("y=%d\n",x);
    return 0;
}

2 计算总分和平均数

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

提示
输出不带小数的平均分的整数形式可以使用强制类型转换。
示例
total=408.90
average=81.78
average=81

输入格式:无
输出格式
输出总分的格式:
“total=%.2f\n”
输出平均分的格式:
“average=%.2f\n”
“average=%d\n”

#include
int main(){
    int a[5]={86,74,92,77,82};
    int b[5]={81,87,90,62,88};
    float t1=0,t2=0,t=0;
    for(int i=0;i<5;i++){
        t1+=a[i];
        t2+=b[i];
    }
    t=t1*0.3+t2*0.7;
    printf("total=%.2f\n",t);
    printf("average=%.2f\n",t/5.0);
    printf("average=%d\n",(int)t/5);
    return 0;
}

3 存款利率计算器V1.0

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

提示
1. 从键盘输入数据可以使用函数scanf()。本例中为scanf(“%lf,%d,%lf”, &rate, &n, &capital);
2. 本程序最终计算的是复利。
3. 计算幂的数学函数为pow(a,n), 代表a的n次幂。
4. 使用数学函数,需要在程序开头加上编译预处理指令 #include

#include
#include
int main(){
    double rate,capital,deposit;
    int year;
    printf("Please enter rate, year, capital:\n");
    scanf("%lf,%d,%lf",&rate,&year,&capital);
    deposit=capital*pow(1+rate,1.0*year);
    printf("deposit=%.3f\n",deposit);
    return 0;
}

4 数位拆分v1.0

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

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

输入格式: 无
输出格式
数位拆分的输出格式:”a=%d,b=%d\n”
加法运算的输出格式:”a+b=%d\n”
减法运算的输出格式:”a-b=%d\n”
乘法运算的输出格式:”a*b=%d\n”
除法运算的输出格式:”a/b=%.2f\n”
求余运算的输出格式:”a%%b=%d\n”

#include
int main(){
    int x=4321,a,b;
    a=x/100;
    b=x%100;
    printf("a=%d,b=%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",a/(b*1.0));
    printf("a%%b=%d\n",a%b);
    return 0;
}

5 求正/负余数

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

示例
negative: -1
positive: 4

输入格式:无
输出格式
负余数的输出格式:”negative: %d\n”
正余数的输出格式:”positive: %d\n”

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

6 身高预测

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

=(faHeight+moHeight)×0.54cm 男 性 成 人 时 身 高 = ( f a H e i g h t + m o H e i g h t ) × 0.54 c m

=(faHeight×0.923+moHeight)/2cm 女 性 成 人 时 身 高 = ( f a H e i g h t × 0.923 + m o H e i g h t ) / 2 c m

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

输入格式: 无
输出格式
小明身高的输出格式:”Height of xiao ming:%d\n”
小红身高的输出格式:”Height of xiao hong:%d\n”

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

7 求一元二次方程的根

题目描述:计算并输出一元二次方程 2x2+3x+1=0 2 x 2 + 3 x + 1 = 0 的两个实根,要求精确到小数点后4位。程序中所有浮点数的数据类型均为float.

提示

  1. 计算平方根的数学函数为sqrt()。
  2. 使用数学函数,需要在程序开头加上编译预处理指令 #include<math.h> # i n c l u d e < m a t h . h >

示例:
x1=-0.5000
x2=-1.0000

输入格式: 无
重点内容输出格式:
“x1=%.4f\n”
“x2=%.4f\n”

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

第三周

1 日期显示

题目内容:编写一个程序, 接收用户录入的日期信息并且将其显示出来. 其中, 输入日期的形式为月/日/年(mm/dd/yy), 输出日期的形式为年月日(yy.mm.dd)。

示例:
Enter a date (mm/dd/yy):
12/03/2015↙
You entered the date: 2015.12.03

输入格式:
“%d/%d/%d”
输出格式:
输入提示信息:
“Enter a date (mm/dd/yy):\n”
“You entered the date: %04d.%02d.%02d\n”

#include
int main(){
    int mm,dd,yy;
    printf("Enter a date (mm/dd/yy):\n");
    scanf("%d/%d/%d",&mm,&dd,&yy);
    printf("You entered the date: %04d.%02d.%02d\n",yy,mm,dd);
    return 0;
}

2 产品信息格式化

题目内容:编写一个程序, 对用户录入的产品信息进行格式化。

示例:
Enter item number:
385↙
Enter unit price:
12.5↙
Enter purchase date (mm/dd/yy):
12/03/2015↙
Item Unit Purchase
385 $ 12.50 12032015

输入格式:
产品编号输入格式:”%d”
产品价格输入格式:”%f”
购买日期输入格式:”%d/%d/%d”
输出格式:
产品编号输入提示信息:”Enter item number:\n”
产品价格输入提示信息:”Enter unit price:\n”
购买日期输入提示信息:”Enter purchase date (mm/dd/yy):\n”
格式化输出的表头信息:”Item Unit Purchase\n”
输出格式:
“%-9d$ %-9.2f%02d%02d%02d\n”

#include
int main(){
    int number,mm,dd,yy;
    float price;
    printf("Enter item number:\n");
    scanf("%d",&number);
    printf("Enter unit price:\n");
    scanf("%f",&price);
    printf("Enter purchase date (mm/dd/yy):\n");
    scanf("%d/%d/%d",&mm,&dd,&yy);
    printf("Item      Unit     Purchase\n");
    printf("%-9d$ %-9.2f%02d%02d%02d\n",number,price,mm,dd,yy);
    return 0;
}

3 计算两个数的平方和

题目内容:从键盘读入两个实数,编程计算并输出它们的平方和,要求使用数学函数pow(x,y)计算平方值,输出结果保留2位小数。 程序中所有浮点数的数据类型均为float。

提示:使用数学函数需要在程序中加入编译预处理命令 #include

#include
#include
int main(){
    float x,y;
    printf("Please input x and y:\n");
    scanf("%f,%f",&x,&y);
    printf("Result=%.2f\n",pow(x,2.0)+pow(y,2.0));
    return 0;
}

4 逆序数的拆分计算(3分)

题目内容:从键盘输入一个4位数的整数,编程计算并输出它的逆序数(忽略整数前的正负号)。例如,输入-1234,忽略负号,由1234分离出其千位1、百位2、十位3、个位4,然后计算4*1000+3*100+2*10+1 = 4321,并输出4321。再将得到的逆序数4321拆分为两个2位数的正整数43和21,计算并输出拆分后的两个数的平方和的结果。

示例:
Input x:
-1234↙
y=4321
a=43,b=21
result=2290

输入格式:
“%d”
输入提示信息:”Input x:\n”
输出格式:
逆序数输出格式:”y=%d\n”
逆序数拆分后的输出格式:”a=%d,b=%d\n”
平方和的输出格式:”result=%d\n”

#include
#include
#include
int main(){
    int x,y,x1,x2,x3,x4,a,b;
    printf("Input x:\n");
    scanf("%d",&x);
    y=abs(x);
    x1=y/1000;
    x2=y/100%10;
    x3=y/10%10;
    x4=y%10;
    y=x1+10*x2+100*x3+1000*x4;
    a=x4*10+x3;
    b=x2*10+x1;
    printf("y=%d\n",y);
    printf("a=%d,b=%d\n",a,b);
    printf("result=%d\n",a*a+b*b);
    return 0;
}

5 拆分英文名(3分)

题目内容:从键盘输入某同学的英文名(小写输入,假设学生的英文名只包含3个字母。如: tom),编写程序在屏幕上输出该同学的英文名,且首字母大写(如: Tom)。同时输出组成该英文名的所有英文字符在26个英文字母中的序号。

示例:
Input your English name:
tom↙
Tom
t:20
o:15
m:13

输入格式:
“%c%c%c”
输入提示信息:”Input your English name:\n”
输出格式:
首字母大写的英文姓名的输出格式:”%c%c%c\n”
姓名中每个字母在26个英文字母中的序号的输出格式:”%c:%d\n”

#include
int main(){
    char a,b,c;
    printf("Input your English name:\n");
    scanf("%c%c%c",&a,&b,&c);
    printf("%c%c%c\n",a-'a'+'A',b,c);
    printf("%c:%d\n",a,a-'a'+1);
    printf("%c:%d\n",b,b-'a'+1);
    printf("%c:%d\n",c,c-'a'+1);
    return 0;
}

6 计算体指数(3分)

题目内容:从键盘输入某人的身高(以厘米为单位,如174cm)和体重(以公斤为单位,如70公斤),将身高(以米为单位,如1.74m)和体重(以斤为单位,如140斤)输出在屏幕上,并按照以下公式计算并输出体指数,要求结果保留到小数点后2位。程序中所有浮点数的数据类型均为float。
假设体重为w公斤,身高为h米,则体指数
示例:
Input weight, height:
70,174↙
weight=140
height=1.74
t=23.12

输入格式:
“%d,%d”
输入提示信息:”Input weight, height:\n” (注意:在height和逗号之间有一个空格)
输出格式:
体重输出格式:”weight=%d\n”
身高输出格式:”height=%.2f\n”
体指数输出格式:”t=%.2f\n”

#include
int main(){
    int weight,height;
    float h,t;
    printf("Input weight, height:\n");
    scanf("%d,%d",&weight,&height);
    printf("weight=%d\n",weight*2);
    h=height/100.0;
    printf("height=%.2f\n",h);
    printf("t=%.2f\n",weight/h/h);
    return 0;
}

你可能感兴趣的:(其他)