暑假超越计划练习题(8)

发布于:2023-01-07 ⋅ 阅读:(426) ⋅ 点赞:(0)

笔者开头感想:现如今,暑假已经过大半部分,但是随着时间流逝,笔者的C语言仍没有多大的起色,日新月急,但是没有办法,思前想后,笔者决定对于之前所学的内容进行一下回顾复习!因此刷题是必须的,所以笔者将最近做过的习题,将会在此整理一遍,重新整理成为一个C语言练习题集册,笔者也会将最近书写过的习题,统一归纳到该C语言练习题集册里面,供笔者借鉴参考!
 

快要开学了,此篇博客算是笔者在开学之前的为数不多的几篇末尾之作了!

1.判断在n个整数中,x出现几次!

 2.筛选法求素数

 

1.判断在n个整数中,x出现几次!

给定n个整数和一个整数x,小乐乐想从n个整数中判断x出现几次,请编程帮他实现。

输入描述:

共3行
第一行,一个整数,表示n(1 <= n <= 100)。
第二行,共输入n个整数,两个整数之间用空格分隔。
第三行,输入一个整数,表示要查找的整数x。

输出描述:

一行,表示整数x出现的次数。

示例1

输入:

5
1 1 2 1 3
1

输出:

3

代码为:

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

    for(i=0;i<n;i++)
    {
        if(arr[i]==k)
        {
            count++;
        }
    }

    printf("%d\n",count);
    return 0;
}

此段代码重要的部分还是在于:for 循环与  if语句连用的片段,只要理解了这段代码,其他的便就无所畏惧!

代码的运行结果为:

d227f45348a24b08af60e34ac9301f66.png

 2.筛选法求素数

描述

用筛选法求n以内的素数。筛选法求解过程为:将2~n之间的正整数放在数组内存储,将数组中2之后的所有能被2整除的数清0,再将3之后的所有能被3整除的数清0 ,以此类推,直到n为止。数组中不为0 的数即为素数。

输入描述:

多组输入,每行输入一个正整数(不大于100)。

输出描述:

针对每行输入的整数n,输出两行,第一行,输出n之内(包括n)的素数,用空格分隔,

第二行,输出数组中2之后被清0 的个数。每行输出后换行。

示例1

输入:

20

输出:

2 3 5 7 11 13 17 19
11

 

下面请看笔者代码:


#include <stdio.h>

int main()
{
    int n = 0;
    int arr[100] = { 0 };
    //多组输入
    while (scanf("%d", &n)==1)
    {
        //将2~n的数存起来
        int i = 0; //循环变量
        for (i = 2; i <= n; i++)
        {
            arr[i] = i;
        }
        //开始筛选
        for (i = 2; i <= n; i++)
        {
            int j = 0;
            for (j = 2; j < i; j++)
            {
                if (i % j == 0)
                {
                    arr[i] = 0;
                }
            }
        }
        int cnt = 0;
        //输出
        for (i = 2; i <= n; i++)
        {
            if (arr[i] != 0)
            {
                printf("%d ", arr[i]);
            }
            else
            {
                cnt++;
            }
        }
        printf("\n%d\n", cnt);
    }

    return 0;
}

在上述代码中,首先是判断是不是素数,这就需要:

       for (i = 2; i <= n; i++)
        {
            int j = 0;
            for (j = 2; j < i; j++)
            {
                if (i % j == 0)
                {
                    arr[i] = 0;
                }
            }
        }

双重for循环来进行控制if语句的判断,如果不是素数,则进行:arr[i] = 0;操作,目的是区分素数与质数,为后面统计做好基础!题目要求,对2后面清零的数字统计,所以就用到了后面的cnt++,来进行统计计算,最后在输出!

代码的运行结果为:

e2c66e9608ae4252860388cea1466058.png

 到此:笔者的暑假超越计划练习题(8)就已经结束!感谢读者!

 

本文含有隐藏内容,请 开通VIP 后查看