第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
项之和,n
由scanf
函数输入;
效果如下:
输入: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=1
fn=3fn-1+2fn-2
n>2
效果如下:
输入:5
。 输出:61
85
。
测试说明
平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。
开始吧!
#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任务描述相关知识 杨辉三角形编程要求测试说明
任务描述
本关需要你打印出以下的杨辉三角形 效果如下:
1
1 1
1 2 1
1 3 3 1
相关知识
本关涉及到杨辉三角形,让我们来简单理解一下杨辉三角形吧。
杨辉三角形
是二项式系数在三角形中的一种几何排列。 简单的说一下就是两个未知数和的幂次方运算后的系数问题,比如(x+y)的平方
=x的平方+2xy+y的平方
,这样系数就是1
,2
,1
这就是杨辉三角的其中一行,立方,四次方,运算的结果看看各项的系数,你就明白其中的道理了。
编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End
区域内进行代码补充,具体任务如下:
打印出杨辉三角形(要求打印8
行)。
效果如下: 输入:8
。
输出:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 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语言循环语句进阶练习题》对你有帮助,请点赞、收藏,并留下你的观点哦!