分支循环语句(4)

        在前面,我们已经学习完了分支循环语句,接下来,我们就需要做练习来巩固我们所学的知识了,我们就来通过以下的题目来巩固吧!

1、打印100--200之间的素数

     我们要知道,素数就是质数,质数就是除去1和它自身之外,再没有其他因数的正整数。

所以代码如下:

#include<stdio.h>
int main()
{
	int i = 0;
	int j = 0;
	for (i = 100; i <= 200; i++)
	{
		for (j = 2; j < i; j++)
		{
			if (i % j == 0)
				break;
		}
		if (i == j)
			printf("%d ", i);
	}
	return 0;
}

        运行结果如下:

2、打印1000--2000年的闰年

        如果年份能被4整除的但不能被100整除,或者能被400整除的是闰年。

        根据以上信息,我们就知道了闰年该如何判断了,代码如下:

#include<stdio.h>
int main(void)
{
    int year = 0;
    for (year = 1000; year <= 2000; year++)
    {
        if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
            printf("%d ", year);
    }
    return 0;
}

        运行结果如下:

3、用 * 打印正方形

       在做过的所有题目中,打印图案对于我来说一直是很难的,接下来,我们就慢慢的分析一下打印正方形这个题目。

        首先,我们来打印一条横线,代码如下:

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

        输入4,运行结果如下:

    我们知道了打印横线,接下了就拓展一下,打印正方形,代码如下:

#include<stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	int i = 0;
	int j = 0;
	for (i = 1; i <= n; i++)        //行数
	{
		for (j = 1; j <= n; j++)    //列数
		{
			printf("* ");
		}
		printf("\n");
	}
	return 0;
}

             输入4,运行结果如下:

        我们再来打印一个三角形

        我们知道,三角形就是正方形的一半,所以上面的代码就需要一点点的变动就可以打印出来了,代码如下:

#include<stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	int i = 0;
	int j = 0;
	for (i = 1; i <= n; i++)        //行数
	{
		for (j = 1; j <= i; j++)    //列数
		{
			printf("* ");
		}
		printf("\n");
	}
	return 0;
}

输入4,运行结果如下:

        这两个代码的区别只有一个字母的差别,要注意不要看错。

4、打印乘法口诀表

     代码如下

#include<stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	int i = 0;
	int j = 0;
	for (i = 1; i <= n; i++)        //行数
	{
		for (j = 1; j <= i; j++)    //列数
		{
			printf("%d*%d=%2d ",j,i,i*j);
		}
		printf("\n");
	}
	return 0;
}

        输入9,运行结果如下:

         我们不难发现,上面打印正方形和三角形,以及打印乘法口诀表,它们的代码主体都不变,只要其中稍微变化一点就可以实现不同的任务,这是我们需要思考的一个问题,我们能不能举一反三完成更多的任务呢?

5、求奇数序列前n项和   1+1/3+1/5+……

        代码如下:

#include<stdio.h>
int main()
{
	int i = 0;
	int n = 0;
	scanf("%d", &n);
	double sum = 0.0;
	int d = 1;                    //分母
	double number;
	for (i = 1; i <= n; i++)
	{
		number = 1.0 / d;
		sum += number;
		d += 2;
	}
	printf("sum = %.6f", sum);
	return 0;
}

        输入23,运行结果如下:

6、求交错序列前n项和  1-2/3+3/5-4/7+……

        代码如下:

#include<stdio.h>
int main()
{
    int i=0;
    int fz=1;                        //分子
    int fm=1;                        //分母
    int flag=1;
    double sum=0.0;
    int n=0;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        sum+=flag*fz*1.0/fm;
        fz+=1;
        fm+=2;
        flag=-flag;
    }
    printf("%.3lf",sum);
    return 0;
}

7、计算n的阶乘

        代码如下:

#include<stdio.h>
int main()
{
    int i=1;
    int n=0;
    int ret=1;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        ret=ret*i;
    }
    printf("%d",ret);
    return 0;
}

既然我们都会求阶乘了,那么我们就来求一下阶乘之和吧!

        代码如下:

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

        以上的这些题目对于初学者来说是有难度的,主要的问题不在逻辑,而是如何将实际问题转换为计算机语言,或者就是一看一脸懵,完全不知道如何下手,但不论怎么样,把这些问题换做数学题我们都会,该如何用代码来实现,这是我们需要不断学习的。

  • 37
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值