文章目录
头歌:《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 区间补充代码,后台输入两个实型数据,然后将它们的和差积商输出。
预期输出:
#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 区间补充代码,分三行输出信息:
#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 之间补充代码。原样输出给定的文本流。 文本流如下:
/*本程序输出指定的信息*/
/*请在此处添加代码,实现原样输出给定的文本流信息。*/
/********** 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方程的根,系数
a,
b,
c的值由键盘输入,构建一个一元二次方程的实例,假设
a,
b,
c的值,使得
b2−4ac⩾0`成立。
输入格式要求 : 方程的三个系数均为双精度浮点数 , 其值由控制台输入,输入的三个实数间以逗号间隔。 输出格式要求: 要求分两行输出方程的2个实根值,要求5个位宽,2位精度。
#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 区间补充代码,将一个四位整数数字拆分,逆序输出。
示例:
#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;
}
输入三角形的三边求三角形的面积
任务:输入三角形的三边,编程求三角形的面积。
示例:
#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 均由键盘输入。
示例:
#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 头文件(可能漏了)
- 注意示例精度为保留两位小数