C语言程序设计·头歌实训合集
  lh6O4DgR0ZQ8 2023年11月02日 37 0

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;

}



【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
lh6O4DgR0ZQ8