失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > C语言循环语句进阶练习题

C语言循环语句进阶练习题

时间:2022-06-07 05:41:38

相关推荐

C语言循环语句进阶练习题

第1关:求出分数序列前n项之和

100

任务要求参考答案评论98任务描述相关知识 scanf分数序列编程要求测试说明

任务描述

本关需要你求出分数序列前n项之和。

相关知识

你需要使用到scanf函数和循环语句来完成本关任务。

scanf

函数名:scanf功 能:执行格式化输入 。

用 法:

int scanf(char *format[,argument,...]);

scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。可以读入任何固有类型的数据并自动把数值变换成适当的机内格式。 其调用格式为:

scanf("<格式化字符串>",<地址表>);

scanf()函数返回成功赋值的数据项数,出错时则返回EOF。 其控制串由三类字符构成:

格式化说明符;空白符;非空白符。

分数序列

本关涉及到的分数序列规律如下:2/1,3/2,5/3,8/5,13/8,21/13…

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

求出分数序列前n项之和,nscanf函数输入;

效果如下:

输入:20。 输出:n=20,sum=32.660261

注意:本关小数的定义变量需要使用double类型,否则可能会有精度问题。

测试说明

平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。

开始吧!

#include <stdio.h>int main(){//获取参数方式 scanf//int x =0;//int y = 0;//scanf("%d", &x);//结果输出使用prinf//printf("%d",x);// 请在此添加你的代码/********** Begin *********/long n,i;double mol=2.0,den=1.0,sum=0.0,t;scanf("%ld",&n);for(i=1;i<=n;i++){sum+=mol/den;t=mol;mol=mol+den;den=t;}printf("n=%ld,sum=%lf",n,sum);/********** End **********/}

第2关:求数列的第n项及前n项之和

100

任务要求参考答案评论98任务描述相关知识编程要求测试说明

任务描述

经过上一关的求和,感觉还可以吧,那么本关就需要你求数列的第n项及前n项之和。

相关知识

本关和上一关知识点是相同,能通过上一关,相信这一关你也没问题?

让我们放松一下,我来给个代码,请找出不正确的地方。

#include <stdio.h>int main(){int i,r=0,n,sum=0,c=0;double j;scanf("%d",&n);for(i=1;i<n;i++){int r1=i;for(j=1;r1!=0;j++){r=r1%((int)pow(10,j));sum=sum+r/((int)pow(10,j-1));r1=r1-r;}if(!(sum%15))c++;sum=0;}printf("%d",c);return 0;}

找出不正确的地方可以贴在评论区哦~。

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

求数列的第n项及前n项之和。

数列如下:f1=f2=1fn=3fn-1+2fn-2n>2

效果如下:

输入:5。 输出:6185

测试说明

平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。

开始吧!

#include <stdio.h>int main(){//获取参数方式 scanf//int x =0;//int y = 0;//scanf("%d", &x);//结果输出使用prinf//printf("%d",x);// 请在此添加你的代码/********** Begin *********/int n,sum=2,i,fn;scanf("%d",&n);int a[n];a[1]=a[2]=1;for(i=3;i<=n;i++){a[i]=3*a[i-1]+2*a[i-2];sum+=a[i];}printf("%d\n%d",a[n],sum);/********** End **********/}

第3关:数字之积

100

任务要求参考答案评论98任务描述相关知识编程要求测试说明

任务描述

本关需要你计算正整数的数字之积。

相关知识

数字之积,是乘积吗?这里的数字之积不是乘积的意思,数字之积是一个数乘以各个数位上的数之积。

例如: 一个数268,它的数字之积为2x6x8=96

那么用C语言怎么编写呢? 这里给个范例:

#include<stdio.h>void main(){int a,s;s=1;printf("请输入一个整数");scanf("%d",&a);while (a>0){s=s*(a % 10);a=a/10;}printf("a=%d",s);}

大家可以根据题目所需自由发挥。

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

计算正整数num的各位上的数字之积。

效果如下:

输入:2583。 输出:240

测试说明

平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。

开始吧!

#include <stdio.h>int main(){//获取参数方式 scanf//int x =0;//int y = 0;//scanf("%d", &x);//结果输出使用prinf//printf("%d",x);// 请在此添加你的代码/********** Begin *********/int n,mask=1,t,i=1,num=1;scanf("%d",&n);t=n;while(t>0){t/=10;mask*=10;i++;}for(i=i-1;i>0;i--){num=num*(n%10);n/=10;}printf("%d",num);/********** End **********/}

第4关:水仙花数

100

任务要求参考答案评论98任务描述相关知识 水仙花数编程要求测试说明

任务描述

本关需要你编写程序输出100-1000中的水仙花数。

相关知识

水仙花数

水仙花数是指一个n位数(n≥3),它的每个位上的数字的n次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。

//三个数的立方和加起来等于三个数的组合153是一个水仙花数,因为153=1^3+5^3+3^3.

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

求出所有的水仙花数。所谓水仙花数是指一个三位数,其各位数字的立方和等于该数字本身。

测试说明

平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。

验货啦,验货啦,开始你的任务吧!

#include <stdio.h>#include<math.h>int main(){//获取参数方式 scanf//int x =0;//int y = 0;//scanf("%d", &x);//结果输出使用prinf//printf("%d",x);// 请在此添加你的代码/********** Begin *********/int n,i,sum=0,t;for(i=100;i<1000;i++){sum=0;t=i;while(t>0){sum=sum+pow(t%10,3);t/=10;}if(sum==i){printf("%d ",sum);}}/********** End **********/}

第5关:杨辉三角形

100

任务要求参考答案评论98任务描述相关知识 杨辉三角形编程要求测试说明

任务描述

本关需要你打印出以下的杨辉三角形 效果如下:

11 11 2 11 3 3 1

相关知识

本关涉及到杨辉三角形,让我们来简单理解一下杨辉三角形吧。

杨辉三角形

是二项式系数在三角形中的一种几何排列。 简单的说一下就是两个未知数和的幂次方运算后的系数问题,比如(x+y)的平方=x的平方+2xy+y的平方,这样系数就是1,2,1这就是杨辉三角的其中一行,立方,四次方,运算的结果看看各项的系数,你就明白其中的道理了。

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

打印出杨辉三角形(要求打印8行)。

效果如下: 输入:8

输出:

11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 11 7 21 35 35 21 7 1

测试说明

平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。

开始你的任务吧!

#include<stdio.h>#include<math.h>int main(){// 请在此添加你的代码/********** Begin *********/int cao(int a,int b);int i,j,n=13;while(n>12)scanf("%d",&n);for(i=0;i<n;i++) {for(j=0;j<28-4*i;j++) printf(" "); for(j=1;j<i+1;j++) printf("%d ",cao(i,j)); printf("%d\n",cao(i,j));}return 0;}int cao(int a,int b){int z;if((b==1)||(b==a+1)) return 1; z=cao(a-1,b-1)+cao(a-1,b);return z;/********** End **********/}

#include<stdio.h>intmain(){//获取参数方式scanf//intx=0;//inty=0;//scanf("%d",&x);//结果输出使用prinf//printf("%d",x);//请在此添加你的代码/**********Begin*********/inti,j,k,n=0,a[14][14];scanf("%d",&n);for(i=1;i<=n;i++)a[i][1]=a[i][i]=1;for(i=3;i<=n;i++)for(j=2;j<=i-1;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];for(i=1;i<=n;i++){for(k=1;k<=n-i;k++)printf("");for(j=1;j<=i;j++)printf("%6d",a[i][j]);printf("\n");}printf("\n");/**********End**********/}

如果觉得《C语言循环语句进阶练习题》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。