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)就已经结束!感谢读者!