C语言程序设计·头歌实训合集
C语言程序设计实训
C语言程序设计编辑与调试环境
任何高级语言源程序都要“翻译”成机器语言,才能在机器上运行。“翻译”的方式有两种:一种是解释方式,即对源程序解释一句执行一句;另一种是编译方式,即通过编译系统先把源程序“翻译”成目标程序(用机器代码组成的程序),再经过连接装配后生成可执行文件,最后执行可执行文件而得到结果。
C语言是一种编译型的程序设计语言,采用编译的方式将源程序翻译成目标程序(机器代码)。运行一个C程序,从输入源程序开始,要经过编辑源程序文件(.c或.cpp)、编译生成目标文件(.obj)、连接生成可执行文件(.exe)和执行4步。
第1关:打印输出 Hello World
任务描述
本关任务:通过运行一个C语言程序,让你初步了解程序的运行方法。
相关知识(略)
编程要求
请补充Begin-End之间的代码,使用printf()在屏幕上输出 Hello World 。
测试说明
平台会对你编写的代码进行测试,若是与预期输出相同,则算通关。
视频
输入:无
输出:Hello World
开始你的任务吧,祝你成功!
#include int main(void) { /********* Begin *********/ printf("Hello World\n"); /********* End *********/ return 0; }
第2关:打印输出图形
任务描述
本关任务:参照上面调试的程序,编写一个能输出规定图形的程序。
相关知识(略)
编程要求
编写一个C程序,输出以下图案,并上机调试通过。第一行开头有4个空格,第二行开头有3个空格,第三行有2个空格,第四行开头有一个空格,第五行开头没有空格,9个*。
-
OK
Hello!
测试说明
平台会对你编写的代码进行测试,若是与预期输出相同,则算通关。
输入:无
输出:
-
OK
Hello!
提示
本题通过执行多个printf函数输出每一行即可,暂时不用考虑使用循环。
开始你的任务吧,祝你成功!
#include int main(void) { /********* Begin *********/ printf(" *\n"); printf(" ***\n"); printf(" OK\n"); printf(" Hello!\n"); printf("*********\n"); /********* End *********/ return 0; }
第3关:求3个数的最大值
任务描述
本关任务:编写一个程序,输入a、b、c三个整数,输出其中最大值。
相关知识
输入
输入一行数据,分别为a b c。
输出
a b c其中最大的数,不用换行。
如何求出最大值
求几个数的最大值?
三个数两两比较,将较大的数存入最大值变量max;
编程要求
根据提示,在右侧编辑器Begin-End中补充代码,计算并输出三个数的最大值。
测试说明
我会对你编写的代码进行测试:
测试输入:10,30,20
预期输出:max=30
测试输入:15,78,85
预期输出:max=85
开始你的任务吧,祝你成功!
#include int main(void) { /********* Begin *********/ int a,b,c,z; scanf("%d,%d,%d",&a,&b,&c); z=a; if(b>a) z=b; if(c>b) z=c; printf("max=%d",z); /********* End *********/ return 0; }
第4关:熟悉C语言调试过程
任务描述
本关任务:以下程序源代码有错误,请使用C语言的调试功能,检查程序的错误并更正,使之能正确运行。
程序源代码:
#include
int main(void)
{int x;
int y=2,z=3;
scanf(“%d”,&x);
if(x=y+z);
printf("“);
else
printf(”#####" );
return 0;
}
相关知识(略)
编程要求
程序中要求键盘输入x的值,当x的值为5时输出,否则输出#####。
输入:整数x的值。
输出:当x的值为5时输出*****,否则输出#####。
测试说明
平台会对你编写的代码进行测试,若是与预期输出相同,则算通关。
输入:5
输出:*****
开始你的任务吧,祝你成功!
#include int main(void) { /********* Begin *********/ int x; int y=2,z=3; scanf("%d",&x); if(x==y+z) printf("*****"); else printf("#####" ); return 0; /********* End *********/ }
顺序结构程序设计
顺序结构是最简单的一种程序结构,其它的结构可以包含顺序结构也可以作为顺序结构的组成部分,可见顺序结构无处不在,他是构成其他程序结构的基础。
C程序是由若干源程序构成的。而在大多数情况下,一个C程序只是由一个源程序构成。一个源程序中又包含编译预处理命令(预编译命令)、全局变量的定义命令和各个用户函数组成。而各函数又由说明部分和执行部分组成。说明部分主要是定义本函数中要用到的变量,执行部分是由语句组成的。
第1关:加法运算
任务描述
本关任务:写一个加法程序,输入整数a,b,输出他们的和。
相关知识(略)
编程要求
请补充Begin-End之间的代码,写一个加法程序,输入整数a,b,输出他们的和。
为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。
输入格式:scanf(“%d,%d”,&a,&b);
输出格式:printf(“%d+%d=%d\n”,a,b,c);
测试说明
平台会对你编写的代码进行测试,若是与预期输出相同,则算通关。
样例输入:3,4
样例输出:3+4=7
开始你的任务吧,祝你成功!
#include int main(void) { int a,b,c; //Please input a,b: /*********Begin*********/ scanf("%d,%d",&a,&b); c=a+b; printf("%d+%d=%d\n",a,b,c); /*********End**********/ return 0; }
第2关:不使用第3个变量,实现两个数的对调
任务描述
本关任务:下列程序是不用第三个变量,实现将两个数进行对调的操作。
程序代码如下:
1 #include
2 int main(void)
3 {
4 int a,b;printf(“Enter a and b:”);
5 scanf(“%d%d”,&a,&b);
6 printf(“a=%d b=%d\n”,a,b);
7 a= ① ;b= ② ;a= ③ ;
8 printf(“a=%d b=%d\n”,a,b);
9 return 0;
10 }
相关知识(略)
编程要求
根据提示,在右侧编辑器Begin-End处补充代码,并按照要求完成本关任务。
测试说明
平台会对你编写的代码进行测试,若是与预期输出相同,则算通关。
输入:3 4
输出:
a=3 b=4
a=4 b=3
输入:7 85
输出:
a=7 b=85
a=85 b=7
开始你的任务吧,祝你成功!
#include int main(void) { int a,b; //Enter a and b: scanf("%d%d",&a,&b); printf("a=%d b=%d\n",a,b); /*********Begin*********/ a= /*********End**********/ printf("a=%d b=%d\n",b,a); return 0; }
第3关:用宏定义常量
任务描述
本关任务:已知某物品单价为30,数量为x。求商品的总价钱。用宏定义物品的单价。
相关知识(略)
编程要求
根据提示,在右侧编辑器Begin-End处补充代码,用宏定义物品的单价。
输入:一个整数x,代表物品的数量。
输出:输出总价格。
测试说明
平台会对你编写的代码进行测试,若是与预期输出相同,则算通关。
样例输入:
5
样例输出:
150
开始你的任务吧,祝你成功!
#include int main(void) { /*********Begin*********/ int a,b; scanf("%d",&a); b=30*a; printf("%d\n",b); /*********End**********/ return 0; }
第4关:数字分离
任务描述
输入一个三位数,分别求出x的各位数字,十位数字,百位数字的值。
相关知识(略)
编程要求
根据提示,在右侧编辑器Begin-End处补充代码,输入一个三位数,分别求出x的各位数字,十位数字,百位数字的值。
输入:一个三位数
输出:输出该数字的百位,十位,个位,数字之间用一个空格隔开。
测试说明
平台会对你编写的代码进行测试,若是与预期输出相同,则算通关。
样例输入:
123
样例输出:
1 2 3
开始你的任务吧,祝你成功!
#include int main(void) { /*********Begin*********/ int a,ge,shi,bai; scanf("%d",&a); ge=a%10; shi=(a/10)%10; bai=a/100; printf("%d %d %d",bai,shi,ge); /*********End**********/ return 0; }
第5关:计算总成绩和平均成绩
任务描述
本关任务:编程求从键盘上输入一个学生的五门成绩,计算出该学生的总成绩和平均成绩。
相关知识(略)
编程要求
根据提示,在右侧编辑器Begin-End处补充代码,编程求从键盘上输入一个学生的五门成绩,计算出该学生的总成绩和平均成绩。
输入:五个整数
输出:总成绩和平均成绩,其中平均成绩保留小数点后两位。
测试说明
平台会对你编写的代码进行测试,若是与预期输出相同,则算通关。
样例输入:
60 70 80 90 100
样例输出
400 80.00
开始你的任务吧,祝你成功!
#include int main(void) { /*********Begin*********/ int a, b, c, d, e, sum; float aver; scanf("%d %d %d %d %d", &a, &b, &c, &d, &e); sum = a + b + c + d + e; aver = sum / (5.0); printf("%d %.2f", sum, aver); /*********End**********/ return 0; }
第6关:求三角形的面积
任务描述
本关任务:编程求以a、b、c为边长的三角形的面积area。
相关知识
三角形面积计算公式为:
假设三角形三条边长分别为a、b、c,其中s=(a+b+c)/2,则面积:
编程要求
根据提示,在右侧编辑器Begin-End处补充代码,编程求以a、b、c为边长的三角形的面积area。
输入:a b c三角形的三条边,可以是小数;
输出:三角形面积,保留3位小数。
测试说明
平台会对你编写的代码进行测试,若是与预期输出相同,则算通关。
样例输入:
3 4 5
样例输出:
6.000
开始你的任务吧,祝你成功!
#include #include int main(void) { /*********Begin*********/ double a, b, c; double s; double area; scanf("%lf %lf %lf", &a, &b, &c); s = (a + b + c) / 2; area = sqrt(s * (s - a) * (s - b) * (s - c)); printf("%.3lf", area); /*********End**********/ return 0; }
第7关:立体几何计算题
任务描述
本关任务:设圆半径r,圆柱高h , 求圆周长C1,半径为r的圆球表面积Sb,圆半径r,圆柱高为h的圆柱体积Vb。 用scanf输入数据,输出计算结果,输出时取小数点后两位数字。请编程序。 PI=3.14
编程要求
输入:两个double型浮点数,r和h;
输出:圆周长C1、圆球表面积Sb、圆柱体积Vb。 保留两位小数,每个结果后换行。
测试说明
平台会对你编写的代码进行测试,若是与预期输出相同,则算通关。
样例输入:
1.5,3
样例输出:
C1=9.42
Sb=28.26
Vb=21.20
提示
圆球表面积计算公式为s=4πr × r ,r为球的半径。
圆柱体体积计算公式为:V=πr ×r×h,r为半径,h为高。
开始你的任务吧,祝你成功!
#include #define PI 3.14 int main(void) { /*********Begin*********/ double r, h; double C1, Sb, Vb; scanf("%lf,%lf", &r, &h); C1 = PI * 2 * r; Sb = 4 * PI * r * r; Vb = PI * r * r * h; printf("C1=%.2lf\nSb=%.2lf\nVb=%.2lf\n", C1,Sb, Vb); /*********End**********/ return 0; }
第8关:计算两个正整数的最大公约数
任务描述
编程计算两个正整数的最大公约数。其中求最大公约数的函数原型已经给出,请在主函数中编程调用函数,输出最大公约数。
程序的运行示例:
12,3↙
3
####函数原型说明
求最大公约数的函数原型如下:
int MaxCommonFactor( int a, int b);
返回值:返回的是最大公约数;若输入的数据有任意一个不满足条件,返回值是-1。
参数:a,b是两个整型数
相关知识
本任务主要考察函数的调用方法。
####编程要求
根据提示,在右侧编辑器Begin-End处补充代码,编程计算两个正整数的最大公约数。
输入:输入格式:“%d,%d”
输出:输出格式:“%d\n”
测试说明
平台会对你编写的代码进行测试,若是与预期输出相同,则算通关。
样例输入:
467,465
样例输出:
1
开始你的任务吧,祝你成功!
#include int MaxCommonFactor( int a, int b) { int c; if(a c=a%b; a=b; b=c; } return a; } int main(void) { /*********Begin*********/ int a,b; scanf("%d,%d",&a,&b); printf("%d",MaxCommonFactor(a,b)); /*********End**********/ return 0; } /*********Begin*********/ int a,b,c,d; printf("请输入三个整数:"); scanf("%d %d %d",&a,&b,&c); if(ab) { d=a; a=b; b=d; } if(ac) { d=a; a=c; c=d; } if(b>c) { d=b; b=c; c=d; } printf("从小到大排列为:%d,%d,%d",a,b,c); /*********End**********/ return 0; }
第2关:选择结构-闰年判断
任务描述
编写程序,完成如下功能:从键盘输入任意年份year,判别该年份是否闰年。
为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。
相关知识
输入
从键盘任意输入一个年份 。
输出
根据是否闰年进行输出,是输出"****是闰年!",否输出"不是闰年!",其中为当前输入的年份。
样例输入
2000
样例输出
2000 是闰年!
开始你的任务吧,祝你成功!
编程要求
请仔细阅读右侧代码,结合相关知识,在Begin-End区域内进行代码补充,完成编写选择结构-闰年判断的小程序。
#include int main(void) { /*********Begin*********/ int year; scanf("%d",&year); if((year % 4 == 0 &&year % 100 != 0)|| year % 400 ==0) printf("%d 是闰年!\n",year); else printf("%d 不是闰年!",year); /*********End**********/ return 0; }
第3关:选择结构-分段函数问题
任务描述
本关任务:编写程序,根据输入的值,输出函数的值。
有一个函数,定义如下
写一段程序,输入x,输出y。
相关知识
输入
从键盘任意输入一个数x
输出
一个数y,保留小数点后三位。
编程要求
请仔细阅读右侧代码,结合相关知识,在Begin-End区域内进行代码补充,完成编写选择结构-分段函数问题的小程序。
测试说明
平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。
样例输入:
14
样例输出:
181.000
开始你的任务吧,祝你成功!
#include int main(void) { /*********Begin*********/ double x,y; scanf("%lf",&x); if(x=0&&x /*********Begin*********/ float result; int x; scanf("%f",&result); if(result=0&&result x=result/10; switch(x) { case 10: case 9:;printf("A");break; case 8:printf("B");break; case 7:printf("C");break; case 6:printf("D");break; default:printf("E"); } } else printf("Score is error!"); /*********End**********/ return 0; } /*********Begin*********/ int area = 0; float weight,startweight,extraweight,price = 0; int areastartmoney[5] = {10,10,15,15,15}; float areaextramoney[5] = {3,4,5,6.5,10}; scanf("%d,%f",&area,&weight); if(area printf("Error in Area\n"); price = 0; } else if(weight
-