草庐IT

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

林赢56 2023-09-09 原文

第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("%d\n%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("%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>
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 **********/
}

 

 

有关C语言循环语句进阶练习题的更多相关文章

  1. ruby - 树顶语法无限循环 - 2

    我脑子里浮现出一些关于一种新编程语言的想法,所以我想我会尝试实现它。一位friend建议我尝试使用Treetop(Rubygem)来创建一个解析器。Treetop的文档很少,我以前从未做过这种事情。我的解析器表现得好像有一个无限循环,但没有堆栈跟踪;事实证明很难追踪到。有人可以指出入门级解析/AST指南的方向吗?我真的需要一些列出规则、常见用法等的东西来使用像Treetop这样的工具。我的语法分析器在GitHub上,以防有人希望帮助我改进它。class{initialize=lambda(name){receiver.name=name}greet=lambda{IO.puts("He

  2. ruby-on-rails - 在 Ruby 中循环遍历多个数组 - 2

    我有多个ActiveRecord子类Item的实例数组,我需要根据最早的事件循环打印。在这种情况下,我需要打印付款和维护日期,如下所示:ItemAmaintenancerequiredin5daysItemBpaymentrequiredin6daysItemApaymentrequiredin7daysItemBmaintenancerequiredin8days我目前有两个查询,用于查找maintenance和payment项目(非排他性查询),并输出如下内容:paymentrequiredin...maintenancerequiredin...有什么方法可以改善上述(丑陋的)代

  3. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  4. ruby - RuntimeError(自动加载常量 Apps 多线程时检测到循环依赖 - 2

    我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("

  5. ruby - 寻找通过阅读代码确定编程语言的ruby gem? - 2

    几个月前,我读了一篇关于ruby​​gem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:

  6. ruby - 如何在 Ruby 中向现有方法定义添加语句 - 2

    我注意到类定义,如果我打开classMyClass,并在不覆盖的情况下添加一些东西我仍然得到了之前定义的原始方法。添加的新语句扩充了现有语句。但是对于方法定义,我仍然想要与类定义相同的行为,但是当我打开defmy_method时似乎,def中的现有语句和end被覆盖了,我需要重写一遍。那么有什么方法可以使方法定义的行为与定义相同,类似于super,但不一定是子类? 最佳答案 我想您正在寻找alias_method:classAalias_method:old_func,:funcdeffuncold_func#similartoca

  7. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  8. 7个大一C语言必学的程序 / C语言经典代码大全 - 2

    嗨~大家好,这里是可莉!今天给大家带来的是7个C语言的经典基础代码~那一起往下看下去把【程序一】打印100到200之间的素数#includeintmain(){ inti; for(i=100;i 【程序二】输出乘法口诀表#includeintmain(){inti;for(i=1;i 【程序三】判断1000年---2000年之间的闰年#includeintmain(){intyear;for(year=1000;year 【程序四】给定两个整形变量的值,将两个值的内容进行交换。这里提供两种方法来进行交换,第一种为创建临时变量来进行交换,第二种是不创建临时变量而直接进行交换。1.创建临时变量来

  9. 牛客网专项练习30天Pytnon篇第02天 - 2

    1.在Python3中,下列关于数学运算结果正确的是:(B)a=10b=3print(a//b)print(a%b)print(a/b)A.3,3,3.3333...B.3,1,3.3333...C.3.3333...,3.3333...,3D.3.3333...,1,3.3333...解析:    在Python中,//表示地板除(向下取整),%表示取余,/表示除(Python2向下取整返回3)2.如下程序Python2会打印多少个数:(D)k=1000whilek>1:    print(k)k=k/2A.1000 B.10C.11D.9解析:    按照题意每次循环K/2,直到K值小于等

  10. ruby - ruby 乘法语句中星号中断语法前的空格 - 2

    在添加一些空格以使代码更具可读性时(与上面的代码对齐),我遇到了这个:classCdefx42endendm=C.new现在这将给出“错误数量的参数”:m.x*m.x这将给出“语法错误,意外的tSTAR,期待$end”:2/m.x*m.x这里的解析器到底发生了什么?我使用Ruby1.9.2和2.1.5进行了测试。 最佳答案 *用于运算符(42*42)和参数解包(myfun*[42,42])。当你这样做时:m.x*m.x2/m.x*m.xRuby将此解释为参数解包,而不是*运算符(即乘法)。如果您不熟悉它,参数解包(有时也称为“spl

随机推荐