中国大学(慕课)哈工大C语言程序设计精髓练兵区第三周

这篇博客介绍了哈工大C语言课程第三周的编程练习,包括日期显示、产品信息格式化、计算平方和、逆序数拆分计算、拆分英文名和计算体指数等六个问题,涵盖了输入输出格式、数学运算和字符串处理等内容。

相比较在线测试,第三周练兵区比较简单,细节就不多做解释。

1 日期显示

题目内容:
编写一个程序, 接收用户录入的日期信息并且将其显示出来. 其中, 输入日期的形式为月/日/年(mm/dd/yy), 输出日期的形式为年月日(yy.mm.dd)。以下为程序的运行结果示例:Enter a date (mm/dd/yy):12/03/2015↙You entered the date: 2015.12.03
提示:

  1. 输入格式: "%d/%d/%d"输出格式:
  2. 输入提示信息:“Enter a date (mm/dd/yy):\n”
  3. 输出格式:“You entered the date:%04d.%02d.%02d\n”
#include<stdio.h>
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 产品信息格式化(3分)

题目内容:
编写一个程序, 对用户录入的产品信息进行格式化。以下为程序的运行结果示例:
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
提示:

  1. 输入格式:产品编号输入格式:"%d"
  2. 产品价格输入格式:"%f"
  3. 购买日期输入格式:"%d/%d/%d"
  4. 产品编号输入提示信息:“Enter item number:\n”
  5. 产品价格输入提示信息:“Enter unit price:\n”
  6. 购买日期输入提示信息:“Enter purchase date (mm/dd/yy):\n”
  7. 格式化输出的表头信息:“Item Unit Purchase\n”
  8. 输出格式:"%-9d$ %-9.2f%02d%02d%04d\n"
#include<stdio.h>
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。
提示:

  1. 使用数学函数需要在程序中加入编译预处理命令 #include <math.h>
  2. 程序的运行结果示例:Please input x and y : 1.2,3.4↙ Result=13.00
  3. 输入格式: “%f,%f”
  4. 输入提示信息:“Please input x and y:\n”
  5. 输出格式:“Result=%.2f\n”
#include<stdio.h>
#include<math.h>
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 逆序数的拆分计算

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

  1. 运行结果示例:Input x:-1234↙ y=4321a=43,b=21 result=2290
  2. 输入提示信息:“Input x:\n”
  3. 输入格式: “%d”
  4. 逆序数输出格式:“y=%d\n”
  5. 逆序数拆分后的输出格式:“a=%d,b=%d\n”
  6. 平方和的输出格式:“result=%d\n”
#include<stdio.h>
#include<math.h>
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",(int)pow(a,2)+(int)pow(b,2));
    return 0;
}

5 拆分英文名

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

  1. 运行结果示例:Input your English name:tom↙ Tomt:20o:15m:13
  2. 输入提示信息:“Input your English name:\n”
  3. 输入格式: “%c%c%c”
  4. 首字母大写的英文姓名的输出格式:"%c%c%c\n"
  5. 姓名中每个字母在26个英文字母中的序号的输出格式:"%c:%d\n"
#include<stdio.h>
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-32,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 计算体指数

题目内容:
从键盘输入某人的身高(以厘米为单位,如174cm)和体重(以公斤为单位,如70公斤),将身高(以米为单位,如1.74m)和体重(以斤为单位,如140斤)输出在屏幕上,并按照以下公式计算并输出体指数,要求结果保留到小数点后2位。程序中所有浮点数的数据类型均为float。假设体重为w公斤,身高为h米,则体指数的计算公式为:
牛皮
提示:
1.运行结果示例:Input weight,height:
70,174↙
weight=140
height=1.74
t=23.12
2. 输入提示信息:“Input weight, height:\n” (注意:在height和逗号之间有一个空格)
3. 输入格式:"%d,%d"
4. 体重输出格式:“weight=%d\n”
5. 身高输出格式:“height=%.2f\n”
6. 体指数输出格式:“t=%.2f\n”

#include<stdio.h>
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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值