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

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

100

  • 任务要求
  • 参考答案
  • 评论98

任务描述

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

相关知识

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

scanf

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

用 法:


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

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


  1. 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项之和。

相关知识

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

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


  1. #include <stdio.h>
  2. int main()
  3. {
  4. int i,r=0,n,sum=0,c=0;
  5. double j;
  6. scanf("%d",&n);
  7. for(i=1;i<n;i++)
  8. {
  9. int r1=i;
  10. for(j=1;r1!=0;j++)
  11. {
  12. r=r1%((int)pow(10,j));
  13. sum=sum+r/((int)pow(10,j-1));
  14. r1=r1-r;
  15. }
  16. if(!(sum%15))
  17. c++;
  18. sum=0;
  19. }
  20. printf("%d",c);
  21. return 0;
  22. }

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

编程要求

请仔细阅读右侧代码,根据方法内的提示,在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("%dn%d",a[n],sum);
	/********** End **********/
}

第3关:数字之积

100

  • 任务要求
  • 参考答案
  • 评论98

任务描述

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

相关知识

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

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

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


  1. #include<stdio.h>
  2. void main()
  3. {
  4. int a,s;
  5. s=1;
  6. printf("请输入一个整数");
  7. scanf("%d",&a);
  8. while (a>0)
  9. {
  10. s=s*(a % 10);
  11. a=a/10;
  12. }
  13. printf("a=%d",s);
  14. }

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

编程要求

请仔细阅读右侧代码,根据方法内的提示,在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)。


  1. //三个数的立方和加起来等于三个数的组合
  2. 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
  2. 1 1
  3. 1 2 1
  4. 1 3 3 1

相关知识

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

杨辉三角形

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

编程要求

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

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

效果如下: 输入:8

输出:


  1. 1
  2. 1 1
  3. 1 2 1
  4. 1 3 3 1
  5. 1 4 6 4 1
  6. 1 5 10 10 5 1
  7. 1 6 15 20 15 6 1
  8. 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("%dn",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>
int main()
{
    //获取参数方式 scanf
    //int x  =0;
    //int y = 0;
    //scanf("%d", &x);

    //结果输出使用prinf
    //printf("%d",x);

    // 请在此添加你的代码
    /********** Begin *********/
    int i,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 **********/
}

 

 

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>