头歌:《C语言程序设计编程实践任务》 教学团队:祁文青

  • Post author:
  • Post category:其他

头歌:《C语言程序设计编程实践任务》 教学团队:祁文青

顺序结构程序设计

学习-输出 “Hello World!“

 #include <stdio.h>
    int main()
    {
        printf("Hello World!\n");
        return 0;
    }

学习-计算两数之和

第一关

任务:根据提示,在右侧编辑器 Begin-End 区间补充代码,计算 123 与 456 的和。

#include <stdio.h>
int main()
{
	/********** Begin **********/
    int a,b,sum;
    a=123,b=456;
    sum=a+b;
    printf("sum=%d\n",sum);
    
    /********** End **********/
	return 0;
}

第二关

任务:变量的输入和输出

#include <stdio.h>
int main()
{
	/********** Begin **********/
    int a,b,sum;
    sum=0;
    scanf("%d %d",&a,&b);
    printf("sum=%d",sum=a+b);
    
    /********** End **********/
	 return 0;
}

第三关

任务:根据提示,在右侧编辑器 Begin-End 区间补充代码,后台输入两个实型数据,然后将它们的和差积商输出。

预期输出:image-20230104192432116

#include <stdio.h>
int main()
{
	/********** Begin **********/
    float #a,b;
    scanf("%f %f",&a,&b);
    printf("两数之和为:%0.6f\n",a+b);
    printf("两数之差为:%0.6f\n",a-b);
    printf("两数之积为:%0.6f\n",a*b);
    printf("两数之商为:%0.6f",a/b);
    
    /********** End **********/
}

初识格式化输入

第一关

任务:在右侧编辑器中的 Begin-End 之间补充代码 。根据控制台输入的半径计算一个圆的面积。 π 已定义为符号常量 PI 。 格式要求: 输入的半径要求为整数,输出的面积要求6位精度并且在数值前添加“半径x的圆面积为:”, 其中 x 是输入的半径数值。

/*请在此处添加代码,计算圆的面积*/
#include<stdio.h>
#define PI 3.1415926     /* 定义圆周率常量  */
main(){
/********** Begin **********/
int x;
float s;
scanf("%d",&x);
printf("半径%d的圆面积为:%0.6f",x,s=PI*x*x);

/********** End **********/
}

第二关

任务:计算一个由长方形和半圆扇形组成的图形面积,格式要求 : 长方形的长和宽均为单精度浮点数 , 其值由控制台输入 ( 先输入长后输入宽 ),输入的两变量间以空格间隔。输出的面积数值要求2位精度并且在数值前添加“组合图形的面积为:”。

/*请在此处添加代码,计算组合图形的面积*/
#include<stdio.h>
#define PI 3.1415926     /* 定义圆周率常量  */
main(){
/********** Begin **********/
float a,b;
scanf("%f %f",&a,&b);
printf("组合图形的面积为:%0.2f",a*b+PI/2*b/2*b/2);

/********** End **********/
}

第三关

任务:在右侧编辑器中的 Begin-End 之间补充代码。假设一小球自足够高的地方进行自由落体运动,求 t 时刻小球距下落点的距离,忽略空气阻力。重力加速度 g 和时刻 t 从控制台输入。 格式要求: 重力加速度 g 为单精度浮点数,时刻 t 为整数。输入的两个变量间以逗号间隔,输出的距离值为单精度浮点数并要求3位精度。

/*请在此处添加代码,计算小球下落的距离*/
/********** Begin *******/
#include<stdio.h>
int main(void)
{
    int t;
    float g;
    scanf("%f,%d",&g,&t);
    printf("%0.3f",g*t*t/2);
    return 0;
}

/********** End **********/

输出三行信息:本人所在省市名称、身份证号和姓名

任务:根据提示,在右侧编辑器 Begin-End 区间补充代码,分三行输出信息:

image-20230104193029236

#include<stdio.h>
int main() 
{
	/********** Begin **********/
    printf("所在市:湖北黄石\n");
    printf("姓名:张三\n");
    printf("身份证号:420203200004293471");
    
    /********** End **********/
	return 0;
}

初识格式化输出

第一关

任务:在右侧编辑器中的 Begin-End 之间补充代码。要求输出3个不同的圆周率 PI 值。PI =3.1415926,第一个 PI 值要求5个位宽,3位精度;第二个 PI 值要求10个位宽,5位精度;第三个 PI 值要求20个位宽,10位精度(行末有回车)

/*本程序用于输出不同格式的PI值*/
/*请在此处添加代码,实现输出不同格式的PI值*/
/********** Begin **********/
#include<stdio.h>
int main(void)
{
    float PI;
    PI=3.1415925026;
    printf("%5.3f\n",PI);
    printf("%10.5f\n",PI);
    printf("%20.10f\n",PI);
    return 0;
}
/********** End **********/

第二关

任务:在右侧编辑器中的 Begin-End 之间补充代码。原样输出给定的文本流。 文本流如下:

image-20230104193535506

/*本程序输出指定的信息*/
/*请在此处添加代码,实现原样输出给定的文本流信息。*/
/********** Begin **********/
#include<stdio.h>
int main(void)
{
    printf("以下内容来自“C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.10240.0\\ucrt\\stdio.h”:\n");
    printf("#define EOF (-1)\n");
    printf("_CRTIMP int __cdecl printf(const char *, ...);\n");
    printf("#ifndef _INTERNAL_IFSTRIP_\n");
    printf("#include <cruntime.h>\n");
    printf("#endif  /* _INTERNAL_IFSTRIP_ */");
}  
    
    
/********** End **********/

注:文本流存在转义字符表示符号’/’,需要用//

第三关

任务:在右侧编辑器中的 Begin-End 之间补充代码。输出摄氏-华氏温度对应表。每行输出格式要求:摄氏温度和华氏温度均为单精度浮点数,都各占8个字符位宽,精度取2;摄氏温度前一个 tab 键,摄氏温度和华氏温度间以一个 tab 键相隔(摄氏温度从−30°循环到30°)。

/*本程序输出符合格式的温度对应表*/
/*请在此处添加代码,输出符合给定格式要求的摄氏-华氏温度对应表*/
/********** Begin **********/
#include<stdio.h>
int main(void)
{
    float CS,FS;
    printf("\t摄氏温度\t华氏温度\n");
    for(CS=-30;CS<=30;CS+=5)
    {
        FS=(9.0/5.0)*CS+32;
        printf("\t%8.2f\t%8.2f\n",CS,FS);  
    }    
    return 0; 
}
    
    
/********** End **********/

注:tab键及制表符,使表格对齐,需要用到垂直制表符\t。

输入一元二次方程的三个系数求方程的实根

任务:已知一元二次方程的三个系数,编程求ax2+bx+c=0方程的根,系数abc的值由键盘输入,构建一个一元二次方程的实例,假设abc的值,使得 b2−4ac⩾0`成立。

输入格式要求 : 方程的三个系数均为双精度浮点数 , 其值由控制台输入,输入的三个实数间以逗号间隔。 输出格式要求: 要求分两行输出方程的2个实根值,要求5个位宽,2位精度。image-20230104202727233

image-20230104202309329

#include <stdio.h>
#include<math.h>
int main()
{
	/**********Bigin**********/
    double a,b,c,d,x1,x2;
    scanf("%lf,%lf,%lf",&a,&b,&c);
    d=b*b-4*a*c;
    if(a!=0&&d>=0)
    {
    x1=(-b+sqrt(d))/(2*a);
    x2=(-b-sqrt(d))/(2*a);
    printf("x1=%5.2lf\nx2=%5.2lf",x1,x2);
    }
    /**********End**********/
	return 0;
}

注意:

  • 需要判断条件,需要用到控制语句if,当然如果只是通过测试就不需要if,如
#include <stdio.h>
#include<math.h>
int main()
{
	/**********Bigin**********/
    double a,b,c,d,x1,x2;
    scanf("%lf,%lf,%lf",&a,&b,&c);
    d=b*b-4*a*c;
    x1=(-b+sqrt(d))/(2*a);
    x2=(-b-sqrt(d))/(2*a);
    printf("x1=%5.2lf\nx2=%5.2lf",x1,x2);
    
    /**********End**********/
	return 0;
}
  • 存在平方根,需要用到函数sqrt()来算平方根

输入一个四位数的整数,逆序输出其个、十、百、千位

任务:根据提示,在右侧编辑器 Begin-End 区间补充代码,将一个四位整数数字拆分,逆序输出。

示例:

image-20230104203714709

#include <stdio.h>
int main()
{
	/********** Begin **********/
    int  x , b0, b1, b2,b3;
    scanf("%d",&x);
    b0 = x % 10; 
    x  = x / 10;
    b1 = x % 10; 
    x  = x / 10;                           
    b2 = x % 10;  
    x  = x / 10;  
    b3 = x % 10;      
    printf("%d,%d,%d,%d", b0, b1, b2,b3);
    return 0;
    
    /********** End **********/
	return 0;
}

输入三角形的三边求三角形的面积

任务:输入三角形的三边,编程求三角形的面积。

image-20230104211038717

示例:

image-20230104211114245

#include <stdio.h>
#include<math.h>
int main()
{
	/********** Begin **********/
    double a,b,c,s,area;
    scanf("%lf%lf%lf",&a,&b,&c);
    s=(a+b+c)/2;
    area=sqrt(s*(s-a)*(s-b)*(s-c));
    printf("a=%0.6lf b=%0.6lf c=%0.6lf\narea=%0.6lf",a,b,c,area);
    /********** End **********/
	return 0;
}

注:

  • 由示例可知精度为6位。
  • 这里不能用float,float精度只有6位,舍入会有误差。

计算银行本利之和

任务:设银行定期存款的年利率 rate 为 2.25%,并已知存款期为 n 年,存款本金为 capital 元,试编程计算 n 年后的本利之和 deposit。要求定期存款的年利率 rate、存款期 n 和存款本金 capital 均由键盘输入。

image-20230104214015374

示例:

image-20230104213921013

#include <stdio.h>
#include<math.h>
int main()
{
	/********** Begin **********/
  double rate,deposit,capital;
  int n;
  scanf("%lf%d%lf",&rate,&n,&capital);
  deposit=capital*pow((1+rate),n);
  printf("%d年本利之和:%0.2lf",n,deposit);
  
  /********** End **********/
  return 0;
}

注:

  • 原题没给math .h 头文件(可能漏了)
    链图片转存中…(img-n4IadoWH-1672839788442)]
#include <stdio.h>
#include<math.h>
int main()
{
	/********** Begin **********/
  double rate,deposit,capital;
  int n;
  scanf("%lf%d%lf",&rate,&n,&capital);
  deposit=capital*pow((1+rate),n);
  printf("%d年本利之和:%0.2lf",n,deposit);
  
  /********** End **********/
  return 0;
}

注:

  • 原题没给math .h 头文件(可能漏了)
  • 注意示例精度为保留两位小数

版权声明:本文为m0_74162258原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。