笔者开头感想:现如今,暑假已经过大半部分,但是随着时间流逝,笔者的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语句连用的片段,只要理解了这段代码,其他的便就无所畏惧!
代码的运行结果为:
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++,来进行统计计算,最后在输出!
代码的运行结果为:
到此:笔者的暑假超越计划练习题(8)就已经结束!感谢读者!