循环结构计算题

文章介绍了编程中for和while语句的基本结构和执行流程,提供了多个示例来展示它们在计算数学序列(如奇偶数相加、级数求和等)中的应用。这些示例涵盖了不同类型的循环逻辑,包括累加、阶乘计算以及特定数列的求和。
摘要由CSDN通过智能技术生成
相关知识
for语句的一般形式为: for(表达式1;表达式2;表达式3) 语句

for语句的执行过程如下:
for 语句先求解表达式1。
求解表达式2,若其值为真(非0),则执行 for 语句中指定的内嵌语句,然后执行下面第3步;若其值为假(0),则结束循环,转到第5步。
求解表达式3。
转回上面第2步继续执行。
循环结束,执行 for 语句下面的一个语句。

可以把 for 语句最简单的应用形式也是最容易理解的形式如下:

循环变量赋初值总是一个赋值语句,它用来给循环控制变量赋初值;循环条件是一个关系表达式,它决定什么时候退出循环;循环变量增量,定义循环控制变量每循环一次后按什么方式变化。这三个部分之间用;隔开。例如:

请将 for 语句与 while 语句对比:

注意:1)内嵌语句可以是单条语句,也可以是复合语句。2)3个表达式都可以省略,但;不能缺省。省略了“表达式1(循环变量赋初值)”,表示不对循环控制变量赋初值;省略了“表达式2(循环条件)”,则表示循环条件永为真,不做其它处理时便成为死循环。例如:

相当于:

  1. 计算1-2+3-4...+n的值

输入描述:

输入一个整数n (1≤n≤100)

输出描述:

输出一个整数

示例1

输入:4

输出:-2

int main()
{
    int n = 0;
    scanf("%d",&n);
    int i = 0;
    int sum = 0;
    for(i = 1;i<=n;i++)
    {
        if(i%2==0)//偶数
        {
            sum = sum-i;
        }
        else
        {
            sum = sum+i;
        }
    }
    printf("%d",sum);
    return 0;
}

  1. 计算:1+1/2+1/3+…+1/N的值。(保留6位小数)

输入描述:

入一个整数,范围在0到1000

输出描述:

输出一个浮点数

示例1

输入:2

输出:1.500000

#include <stdio.h>

int main() {
    int N;
    double sum=0;
    scanf("%d",&N);
    for(int i=1;i<=N;i++)
    {
    
    sum+=1.0/i;
    }
    printf("%.6lf",sum); 
    
    return 0;
}

  1. 输入一个整数n,计算 1+1/(1-3)+1/(1-3+5)+...+1/(1-3+5-...((-1)^(n-1))*(2n-1))的值

输入描述:

输入一个整数

输出描述:

输出一个浮点数,保留3位小数

示例1

输入:1

输出:1.000

#include <stdio.h>
#include<math.h>

int main() {
    int n;
    double sum=0;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        sum+=(1.0/(i*pow(-1,i-1)));
    }
    printf("%.3lf",sum);

    return 0;
}

4.编写程序输入n,用for循环求 s=1!+ 2!+ 3!+ …+n!的值并输出。

示例1

输入:

5

输出:

1!=1

2!=2

3!=6

4!=24

5!=120

1!+2!+ …+5!=153

#include <stdio.h>
int main()
{
    int i=1,n,k=0;
    long s=1,sum=0;
    scanf("%d",&n);
    for(;i<=n;i++)
      {
        k=k+1;
        s=s*i;
        sum=sum+s;
        printf("%d!=%d\n",k,s);
       }
     printf("1!+2!+ …+%d!=%d",n,sum);

     return 0;
}

5.用while循环求编写求s=1+(1+2)+(1+2+3)+....+(1+2+3+....+n)值的小程序。

测试输入:4

预期输出:sum=20

#include <stdio.h>
int main()
{
    int i,n,k,sum=0;
    scanf("%d",&n);
    for(i=0;i<=n;i++)
    {
      for(k=0;k<=i;k++)
       {
         sum=sum+k;
          }
    }

printf("sum=%d",sum);
    
return 0;
}

6.用do-while循环按S=1+1/1!+1/2!+1/3+...+1/n!

输入:一个整数n

输出:公式计算的结果s的值

测试输入:15

预期输出:s = 2.718282

注意:结果保留6位小数。

#include <stdio.h>
int main()/********** Begin **********/
{
    int n,m,k;
    float s,f;
    scanf("%d",&n);
    s=0;
for(k=1;k<=n;k++)
{
    f=1;
for(m=1;m<=k;m++)
    f*=m;
s=s+1/f;
}
s=s+1;
printf("s = %f",s);
return 0;
}


7.输入正整数a和n,用for循环求s=a+aa+aaa+aaaa+aa...a(n个a)的值

从序列上观察出规律:后面的每一项是怎么在前面一项的基础上得到的。

输入:5 3

表示3个由5组成的数相加,即计算5+55+555的值,输出:615

输入:5 4

表示计算5+55+555+5555的值,输出:6170

测试输入:53预期输出:615

测试输入:54预期输出:6170

#include <stdio.h>
int main(void)
{
    int a,n,b,c,sn,i;
    scanf("%d%d",&a,&n);
    c=a;
    sn=0;b=0;
    for(i=1;i<=n;i++)
    {
        sn=sn+a;
        b=10*a+c;
        a=b;
    }
    printf("%d\n",sn);
    
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值