C语言程序设计实训 C语言程序设计编辑与调试环境 任何高级语言源程序都要“翻译”成机器语言,才能在机器上运行。“翻译”的方式有两种:一种是解释方式,即对源程序解释一句执行一句;另一种是编译方式,即通过编译系统先把源程序“翻译”成目标程序(用机器代码组成的程序),再经过连接装配后生成可执行文件,最后执行可执行文件而得到结果。 C语言是一种编译型的程序设计语言,采用编译的方式将源程序翻译成目标程序(机器代码)。运行一个C程序,从输入源程序开始,要经过编辑源程序文件(.c或.cpp)、编译生成目标文件(.obj)、连接生成可执行文件(.exe)和执行4步。
第1关:打印输出 Hello World 任务描述 本关任务:通过运行一个C语言程序,让你初步了解程序的运行方法。 相关知识(略) 编程要求 请补充Begin-End之间的代码,使用printf()在屏幕上输出 Hello World 。 测试说明 平台会对你编写的代码进行测试,若是与预期输出相同,则算通关。 视频 输入:无 输出:Hello World 开始你的任务吧,祝你成功!
#include<stdio.h> int main(void) {
/********* Begin *********/ printf("Hello World\n");
/********* End *********/
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 第2关:打印输出图形 任务描述 本关任务:参照上面调试的程序,编写一个能输出规定图形的程序。
相关知识(略) 编程要求 编写一个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;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 第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<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;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 第4关:熟悉C语言调试过程 任务描述 本关任务:以下程序源代码有错误,请使用C语言的调试功能,检查程序的错误并更正,使之能正确运行。 程序源代码: #include<stdio.h> 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<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 *********/ }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 顺序结构程序设计 顺序结构是最简单的一种程序结构,其它的结构可以包含顺序结构也可以作为顺序结构的组成部分,可见顺序结构无处不在,他是构成其他程序结构的基础。 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;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 第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;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 第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;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 第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;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 第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;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 第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;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 第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;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 第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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 选择结构程序设计 顺序结构的程序虽然能解决计算、输出等问题,但不能做判断再选择。对于要先做判断再选择的问题就要使用选择(分支)结构。 分支结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序,适合带有逻辑或关系比较等条件判断的计算。编程之前,需要先分析程序中所处理的数据、构造合适的分支条件以及程序流程,再将程序流程用程序流程图绘制出来,最后根据程序流程写出源程序。这样可以把程序的分析、算法流程与程序实现分开,使得问题简单化,易于理解。
第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; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 第2关:选择结构-闰年判断 任务描述 编写程序,完成如下功能:从键盘输入任意年份year,判别该年份是否闰年。 为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。 相关知识 输入 从键盘任意输入一个年份 。 输出 根据是否闰年进行输出,是输出"****是闰年!",否输出"不是闰年!",其中为当前输入的年份。 样例输入 2000
样例输出 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;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 第3关:选择结构-分段函数问题 任务描述 本关任务:编写程序,根据输入的值,输出函数的值。 有一个函数,定义如下编程要求
根据提示,在右侧编辑器Begin-End处补充代码,按照要求完成本关任务。
####输入
输入格式: “%f,%f,%f”
输出
输入提示信息:“Please enter the coefficients a,b,c:\n”
输出格式:“x1=%.4f, x2=%.4f\n”
输入错误提示信息:“error!\n”
为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。
测试说明
平台会对你编写的代码进行测试,若是与预期输出相同,则算通关。
样例1
输入:1,2,1
输出:
Please enter the coefficients a,b,c:
x1=-1.0000, x2=-1.0000
样例2
输入:2,1,6
输出:
Please enter the coefficients a,b,c:
error!
#include<stdio.h>
#include<math.h>
int main(void)
{
/*********Begin*********/
float a,b,c;
double x1,x2,d;
printf("Please enter the coefficients a,b,c:\n");
scanf("%f,%f,%f",&a,&b,&c);
d = b*b-4*a*c;
if (b*b-4*a*c<0)
{
printf("error!");
return 0;
}
else
{
x1 = (-b+sqrt(d))/(2*a);
x2 = (-b-sqrt(d))/(2*a);
printf("x1=%.4f, x2=%.4f",x1,x2);
}
/*********End**********/
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
第3关:产品信息格式化
任务描述
本关任务:编写一个程序, 对用户录入的产品信息进行格式化。
相关知识(略)
编程要求
根据提示,在右侧编辑器Begin-End处补充代码,编写一个程序, 对用户录入的产品信息进行格式化。
以下为程序的运行结果示例:
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
输入
产品编号输入格式:“%d”
产品价格输入格式:“%f”
购买日期输入格式:“%d/%d/%d”
输出
产品编号输入提示信息:“Enter item number:\n”
产品价格输入提示信息:“Enter unit price:\n”
购买日期输入提示信息:“Enter purchase date (mm/dd/yy):\n”
格式化输出的表头信息:“Item Unit Purchase\n”
输出格式:“%-9d$ %-9.2f%02d%02d%02d\n”
为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。
测试说明
平台会对你编写的代码进行测试,若是与预期输出相同,则算通关。
样例输入:
385
12.5
12/03/2015
样例输出:
Enter item number:
Enter unit price:
Enter purchase date (mm/dd/yy):
Item Unit Purchase
385 $ 12.50 12032015
#include<stdio.h>
int main(void)
{
/*********Begin*********/
float unit;
int a,b,c,d;
printf ("Enter item number:\n");
scanf ("%d",&a);
printf ("Enter unit price:\n"); scanf ("%f",&unit);
printf ("Enter purchase date (mm/dd/yy):\n");
scanf ("%d/%d/%d",&b,&c,&d);
printf ("Item Unit Purchase\n");
printf ("%-9d$ %-9.2f%02d%02d%02d\n",a,unit,b,c,d);
/*********End**********/
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
循环结构程序设计1
顺序结构是按照从上到下的方式组织程序语句,运行时依次执行,顺序结构中的语句只执行一次。选择结构是根据条件是否成立来选择是否执行某些语句,换言之,选择结构中满足条件的语句执行一次,而不满足的一次也不执行。但现实问题中,我们经常要进行一些重复处理。
在程序设计中,如果需要重复执行某些操作,就要用到循环结构。实际中会遇到大量的按一定规律重复处理的问题,我们把这种按一定规律重复计算的过程称为循环计算过程,或简称为循环过程。使用循环结构进行编程时,首先要明确两个问题:哪些操作需要重复执行?这些操作在什么条件下重复执行?
C语言提供了两种循环结构:当型循环和直到型循环
当型循环的特点是,在给定条件成立时,反复执行某程序段,直到条件不成立为止。直到型循环特点是,先执行循环体后判断。给定的条件称为循环条件,反复执行的程序段称为循环体。
C语言提供了多种循环语句,while语句、do-while语句、for语句以及if和goto语句配合,可以组成不同形式的循环结构。
第1关:小球自由落体运动
任务描述
一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。 它在第N次落地时反弹多高?共经过多少米? 结果保留两位小数。
相关知识(略)
编程要求
根据提示,在右侧编辑器Begin-End处补充代码,并按照要求完成本关任务。
输入
从键盘输入M和N的值。
输出
它在第N次落地时反弹多高?共经过多少米? 保留两位小数,空格隔开,放在一行。
测试说明
平台会对你编写的代码进行测试,若是与预期输出相同,则算通关。
样例输入:
1000 5
样例输出:
31.25 2875.00
#include<stdio.h>
int main(void)
{
/*********Begin*********/
int i,n;
float h,M;
scanf("%f %d",&M,&n);
h=M/2;
for (i=2;i<=n;i++)
{
M=M+2*h;
h=h/2;
}
printf("%.2f %.2f",h,M);
/*********End**********/
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
第2关:求解出n以内所有能被5整除的正整数的乘积
任务描述
本关任务:求解出n以内(包含n)所有能被5整除的正整数数的乘积s。
相关知识(略)
编程要求
根据提示,在右侧编辑器Begin-End处补充代码,求解出n以内(包含n)所有能被5整除的正整数数的乘积s
输入
输入包含多个样例,每个样例一个正整数n,占一行。读取到文件结尾。输入的n不超过100。
输入格式
scanf(“%d”, &n)
输出
对于每个样例n,输出n以内(包含n)所有能被5整除的正整数的乘积。
输出格式
printf(“%d\n”, s);
测试说明
平台会对你编写的代码进行测试,若是与预期输出相同,则算通关。
样例输入:
19
样例输出:
750
#include<stdio.h>
int main(void)
{
/*********Begin*********/
int n,i,s;
s=1;
scanf("%d",&n);
for(i=1;i<=n;i++){
if(i%5==0)
s*=i;
}
printf("%d",s);
/*********End**********/
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
第3关:最大公约数和最小公倍数
任务描述
本关任务:输入两个正整数m和n,求其最大公约数和最小公倍数。
相关知识(略)
编程要求
根据提示,在右侧编辑器Begin-End处补充代码,输入两个正整数m和n,求其最大公约数和最小公倍数。
输入
从键盘上任意输入两个数。
输出
分两行输出,第一行输出:最大公约数是多少;第二行输出最小公倍数是多少。
测试说明
平台会对你编写的代码进行测试,若是与预期输出相同,则算通关。
样例输入:
2 3
样例输出:
最大公约数是:1
最小公倍数是:6
#include<stdio.h>
int main(void)
{
/*********Begin*********/
int a,b,i;
scanf("%d %d",&a,&b);
for(i=a;i>=1;i--){
if(a%i==0&&b%i==0){
printf("最大公约数是:%d\n",i);
break;
}
}
for(i=1;i>0;i++){
if(i%a==0&&i%b==0){
printf("最小公倍数是:%d\n",i);
break;
}
}
/*********End**********/
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
第4关:字符串中各类字符数的统计
任务描述
本关任务:输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数。
相关知识(略)
编程要求
根据提示,在右侧编辑器Begin-End处补充代码,输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数。
输入
一行字符。
输出
统计每种字符的个数值。
测试说明
平台会对你编写的代码进行测试,若是与预期输出相同,则算通关。
样例输入:
aklsjflj123 sadf918u324 asdf91u32oasdf/.';123
样例输出:
23 16 2 4
#include<stdio.h>
int main(void)
{
/*********Begin*********/
int e=0,n=0,t=0,p=0;
char c;
while((c=getchar())!='\n')
{
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
e++;
else if(c==' ')
t++;
else if(c>='0'&&c<='9')
n++;
else p++;
}
printf("%d %d %d %d",e,n,t,p);
/*********End**********/
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
第5关:求sn=a+aa+aaa+aaaa+…的值
任务描述
本关任务:键盘输入正整数a和n,编程 s=a+aa+aaa+aaaa+aa…a(n个a)的值。
例如:
a=2 ,n=5时,表示计算由2组成的数的和:2+22+222+2222+22222 ( 此时 共有5个数相加)。
输入:5 3 表示3个由5组成的数相加,即计算5+55+555的值,输出:615
输入:5 4 表示计算5+55+555+5555的值,输出:6170
相关知识
在编程中,我们常常遇到需要将一条语句或者一段代码重复运行多次的情况,如没有循环语句,需逐条编写,会导致程序的繁杂与冗余。
C中可利用while、for、do-while等常用循环函数来是语句或代码块进行重复操作,从而省去很多重复的工作,使代码简洁明了。
while语句
基本语法:基于while实现循环的基本语法如下:
while(布尔值){
需要循环的语句或者代码块
}
其中括号中的布尔值如果为真,这进入循环,直到布尔值变为假,则推出循环,继续执行之后代码。
其中括号中的布尔值如果为假,则直接不进入循环,继续执行循环代码块之后代码。
应用示例:
// 需要循环输出3次6
int n = 3;
while(n–){
printf(“6”);
}
for语句
基本语法:基于for实现循环的基本语法如下:
for(1.赋值语句或者省略;2.判断语句或者省略;3.执行语句或者省略){
需循环的语句或者代码块
}
其中1处位置,是一个赋值语句,在循环开始前执行一次,之后再不执行。
其中2处位置为判断语句,每次开始循环时(包括第一次)都会先经过这个判断语句的判断
如果此处为真,则进入循环,执行循环内语句或者代码块。
如果此处为假,则不进入循环,执行之后的代码。
其中3处位置为一个运算语句,每执行完一次循环,就会执行一次此处代码。
应用示例:
// 同样需要输出3个6
int i;
for(i=0;i<3;i++){
printf(“6”);
}
编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:
键盘输入正整数a和n,编程 s=a+aa+aaa+aaaa+aa…a(n个a)的值。
例如:
a=2 ,n=5时,表示计算由2组成的数的和:2+22+222+2222+22222 ( 此时 共有5个数相加)。
输入:5 3 表示3个由5组成的数相加,即计算5+55+555的值,输出:615
输入:5 4 表示计算5+55+555+5555的值,输出:6170
本关涉及的代码文件的代码框架如下:
#include <stdio.h>
// 定义main函数
int main(void)
{
// 请在此添加代码
/********** Begin /
/* End **********/
return 0;
}
测试说明
以下是测试样例:
输入:5 3
输出:615
输入:6 4
输出:7404
输入:3 5
输出:37035
#include<stdio.h>
int main(void)
{
/*********Begin*********/
int a,n,s,sum,i;
i=0;
s=0;
sum=0;
scanf("%d %d",&a,&n);
while(n>0){
s=a;
i+=s;
sum+=i;
a=a*10;
n--;
}
printf("%d\n",sum);
/*********End**********/
return 0;
}