任何先进的语言源程序都必须翻译成机器语言才能在机器上运行。翻译有两种方法:一种是解释,即执行源程序;另一种是编译方法,即通过编译系统将源程序翻译为目标程序(由机器代码组成的程序),然后连接组装生成可执行文件,最终执行可执行文件。 C语言是一种编译的程序设计语言,通过编译将源程序翻译成目标程序(机器代码)。运行C程序,从输入源程序开始编辑源程序文件(.c或.cpp)、目标文件的编译和生成(.obj)、连接生成可执行文件(.exe)和执行4步。
任务描述 本关任务:通过操作C语言程序,您可以初步了解程序的操作方法。 相关知识(略) 编程要求 请补充Begin-End使用之间的代码printf()在屏幕上输出 Hello World 。 测试说明 平台将测试您编写的代码,如果与预期输出相同,则计算通关。 视频 输入:无 输出:Hello World 开始你的任务,祝你成功!
#include<stdio.h> int main(void) {
/********* Begin *********/ printf("Hello World\n"); /********* End *********/ return 0; }
任务描述 本关任务:参照上述调试程序,编制一个能够输出规定图形的程序。
相关知识(略) 编程要求 编写C程序,输出以下图案,并通过计算机调试。第一行开头有4个空格,第二行开头有3个空格,第三行有2个空格,第四行开头有空格,第五行开头没有空格,9个空格*。
OK Hello!
测试说明 平台将测试您编写的代码,如果与预期输出相同,则计算通关。 输入:无 输出:
OK Hello!
提示 通过执行多个主题printf每行函数输出,暂时不考虑使用循环。 开始你的任务,祝你成功!
#include<stdio.h> int main(void) {
/********* Begin *********/ printf(" *\n"); printf(" ***\n"); printf(" OK\n"); printf(" Hello!\n"); printf("*********\n"); /********* End *********/ return 0; }
任务描述 本关任务:编写一个程序,输入a、b、c三个整数,输出最大值。 相关知识 输入 分别输入一行数据a b c。 输出 a b c最大的数字,不需要换行。 如何找到最大值 多少个数的最大值? 比较三个数,将大数存入最大值变量max; 编程要求 根据提示,编辑器在右侧Begin-End补充代码,计算并输出三个数的最大值。 测试说明 我将测试您编写的代码: 测试输入:10,30,20 预期输出:max=30
测试输入:15、78、85 预期输出:max=85 开始你的任务,祝你成功!
#include<stdio.h> 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; }
任务描述 本关任务:以下程序源代码有错误,请使用C语言的调试功能,检查程序的错误并更正,使之能正确运行。 程序源代码: #include<stdio.h> int main(void) {int x; int y=2,z=3; scanf(“%d”,&x); if(x=y+z); printf("键盘输入x的值,当x的值为5时输出,否则输出#####。 输入:整数x的值。 输出:当x的值为5时输出*****,否则输出#####。 测试说明 平台会对你编写的代码进行测试,若是与预期输出相同,则算通关。 输入:5 输出:***** 开始你的任务吧,祝你成功!
#include<stdio.h>
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<stdio.h>
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<stdio.h> 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<stdio.h>
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<stdio.h>
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<stdio.h>
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<stdio.h>
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<stdio.h>
#include <math.h>
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<stdio.h>
#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<stdio.h>
int MaxCommonFactor( int a, int b)
{
int c;
if(a<=0||b<=0)
return -1;
while(b!=0)
{
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;
}
选择结构程序设计
顺序结构的程序虽然能解决计算、输出等问题,但不能做判断再选择。对于要先做判断再选择的问题就要使用选择(分支)结构。 分支结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序,适合带有逻辑或关系比较等条件判断的计算。编程之前,需要先分析程序中所处理的数据、构造合适的分支条件以及程序流程,再将程序流程用程序流程图绘制出来,最后根据程序流程写出源程序。这样可以把程序的分析、算法流程与程序实现分开,使得问题简单化,易于理解。
第1关:排序
任务描述 本关任务:下面的程序是从键盘输入三个整数按从小到大的顺序输出。 为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。 相关知识 输入格式 输入格式如下: printf(“请输入三个整数:”); scanf(“%d%d%d”,&a,&b,&c); 输出 排序输出从小到大的三个整数。 输出格式如下: printf(“从小到大排列为:%d,%d,%d”,a,b,c); 编程要求 请仔细阅读右侧代码,结合相关知识,在Begin-End区域内进行代码补充,完成编写排序的小程序。 测试说明 平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。 样例输入: 请输入三个整数:5 7 6
样例输出: 从小到大排列为:5,6,7 开始你的任务吧,祝你成功!
#include<stdio.h>
int main(void)
{
/*********Begin*********/
int a,b,c,d;
printf("请输入三个整数:");
scanf("%d %d %d",&a,&b,&c);
if(a>b)
{
d=a;
a=b;
b=d;
}
if(a>c)
{
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 是闰年! 开始你的任务吧,祝你成功! 编程要求 请仔细阅读右侧代码,结合相关知识,在Begin-End区域内进行代码补充,完成编写选择结构-闰年判断的小程序。
#include<stdio.h>
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<stdio.h>
int main(void)
{
/*********Begin*********/
double x,y;
scanf("%lf",&x);
if(x<0&&x!=-3)
y=x*x+x-6;
else if(x>=0&&x<10&&x!=2&&x!=3)
y=x*x-5*x+6;
else
y=x*x-x-1;
printf("%.3lf",y);
/*********End**********/
return 0;
}
第4关:学生成绩等级换算
任务描述 本关任务:给出一百分制成绩,要求输出成绩等级A、B、C、D、E。 90分以上为A 80-89分为B 70-79分为C 60-69分为D 60分以下为E,如果输入数据不在0~100范围内,请输出一行:“Score is error!”。 相关知识 输入 从键盘输入一个成绩,成绩可以使浮点数。 输出 (1)如果输入数据在0到100范围内:一个字符,表示成绩等级。 (2)如果输入数据不在0~100范围内,请输出一行:“Score is error!”。 编程要求 请仔细阅读右侧代码,结合相关知识,在Begin-End区域内进行代码补充,完成编写学生成绩等级换算的小程序。 测试说明 平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。 样例输入: 90 样例输出: A
#include<stdio.h>
int main(void)
{
/*********Begin*********/
float result;
int x;
scanf("%f",&result);
if(result>=0&&result<=100)
{
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;
}
选择结构程序设计进阶
第1关:快递费用计算
任务描述 本关任务:编写一个计算机快递费的程序。 上海市的某快递公司根据投送目的地距离公司的远近,将全国划分成5个区域: 快递费按邮件重量计算,由起重费用、续重费用两部分构成: (1) 起重(首重)1公斤按起重资费计算(不足1公斤,按1公斤计算),超过首重的重量,按公斤(不足1公斤,按1公斤计算)收取续重费; (2) 同城起重资费10元,续重3元/公斤; (3) 寄往1区(江浙两省)的邮件,起重资费10元,续重4元; (4) 寄往其他地区的邮件,起重资费统一为15元。而续重部分,不同区域价格不同:2区的续重5元/公斤,3区的续重6.5元/公斤,4区的续重10元/公斤。 相关知识(略) 编程要求 编写程序,从键盘输入邮件的目的区域编码和重量,计算并输出运费,计算结果保留2位小数。 提示 续重部分不足一公斤,按1公斤计算。因此,如包裹重量2.3公斤:1公斤算起重,剩余的1.3公斤算续重,不足1公斤按1公斤计算,1.3公斤折合续重为2公斤。如果重量应大于0、区域编号不能超出0-4的范围。 输入 用逗号分隔的两个数字,第一个表示区域、第二个是重量:“%d,%f” 输出 价格的输出格式:“Price: %.2f\n” 区域错误的提示信息:“Error in Area\n” 为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。 测试说明 样例输入: 4,4.5 样例输出: Price: 55.00 程序运行结果示例1: 输入:4,4.5 输出:Price: 55.00 程序运行结果示例2: 输入:5,3.2 输出: Error in Area Price: 0.00
#include<stdio.h>
#include<math.h>
int main(void)
{
/*********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<0 || area>4)
{
printf("Error in Area\n");
price = 0;
}
else if(weight < 0)
{
printf("Error in Weight!\n");
price = 0;
}
else
{
startweight = 1;
extraweight = ceil(weight - 1);
price = areastartmoney[area] + extraweight * areaextramoney[area];
}
printf("Price: %.2f\n",price);
/*********End**********/
return 0;
}
第2关:计算一元二次方程的根
任务描述 本关任务:根据下面给出的求根公式,计算并输出一元二次方程ax2+bx+c=0的两个实根,要求精确到小数点后4位。其中a,b,c的值由