C语言水平测试题 过关斩将(2)基础好❓你可知道有关 “素数“ 的三连问❓

我的个人主页☆光之梦☆的博客_CSDN博客-C语言基础语法(超详细)领域博主

欢迎各位 👍点赞 ⭐收藏 📝评论

我的专栏C语言基础语法(超详细)_☆光之梦☆的博客-CSDN博客(这个专栏里的平均文章质量分是95噢,基本全都是高质量文章,本博主将会长期更新c语言的语法知识,初学c语言的朋友们,可以收藏订阅一下,收藏绝对不亏噢)

目录

一、输入一个数,怎么判断是否为素数

二、如何输出100以内的素数

三、如何输出前50个素数  

四、 凑硬币

 方案1——得到多种结果

方案2(接力break)——只得到一种结果就结束  

方案3——goto语句  


下列是:C语言水平测试题(2)

大家冲鸭!

一、💠输入一个数 判断是否为素数💠

素数:只能被1和自己整除的数,不包括1 2,3,5,7,11,13,17,19.

素数(1)输入一个数,判断是否为素数

代码示例:

#include <stdio.h>

int main()
{
	int x;
	int i; 
	printf("请输入一个数:");
	scanf("%d",&x);
	
	int isPrime = 1;	//x是素数
	for (i =2; i < x; i++){
		if (x % i == 0){
			isPrime = 0;//x不是素数 
			break;
		}
		break;
	}
	if (isPrime == 1) {
		printf("%d是素数\n",x);
	} else {
		printf("%d不是素数\n",x); 
	}
	
	return 0;
}

二、💠如何输出100以内的素数💠

素数(2)如何输出100以内的素数

代码示例:

#include <stdio.h>
// 输出100以内的素数 
int main()
{
	int x;
	// 因为1不是素数,所以从2开始 
	for (x = 2; x<100; x++){
		int i;
		int isPrime = 1;	//x是素数
		for (i =2; i < x; i++){
			if (x % i == 0){
				isPrime = 0;//x不是素数 
				break;
			}
		}
		if (isPrime == 1){
			printf("%d ",x);
		}
	}
	printf("\n");
	
	return 0;
}

运行结果:

2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

三、💠如何输出前50个素数💠

素数(3)如何输出前50个素数

 代码示例:

#include <stdio.h>
// 输出前50个素数 
int main()
{
	int x = 2;
	int cnt = 0;
	// 因为1不是素数,所以从2开始 
	while (cnt < 50){
		int i;
		int isPrime = 1;	//x是素数
		for (i =2; i < x; i++){
			if (x % i == 0){
				isPrime = 0;//x不是素数 
				break;
			}
		}
		if (isPrime == 1){
			printf("%d ",x);
			cnt++;
		}
		x++; 
	}
	printf("\n");
	
	return 0;
}

运行结果:

2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229

四、🔷 凑硬币🔷

如何用 1 角、2 角和 5 角的硬币凑出 10 元以下的金额呢?

 方案1——得到多种结果

代码示例:

#include <stdio.h>

int main()
{
	int x;
	int one,two,five;
	
	// scanf("%d",&x);
	x = 2;
	for (one = 1; one <= x*10; one++) {
		for (two = 1; two <= x*10/2; two++) {
			for (five = 1; five <= x*10/5; five++) {
				if (one + two*2 + five*5 == x*10) {
					printf("可以用%d个1角+%d个2角+%d个5角得到%d元\n",one,two,five,x);
				}
			}
		}
	}
	return 0;
}

运行结果:

可以用1个1角+2个2角+3个5角得到2元
可以用1个1角+7个2角+1个5角得到2元
可以用2个1角+4个2角+2个5角得到2元
可以用3个1角+1个2角+3个5角得到2元
可以用3个1角+6个2角+1个5角得到2元
可以用4个1角+3个2角+2个5角得到2元
可以用5个1角+5个2角+1个5角得到2元
可以用6个1角+2个2角+2个5角得到2元
可以用7个1角+4个2角+1个5角得到2元
可以用8个1角+1个2角+2个5角得到2元
可以用9个1角+3个2角+1个5角得到2元
可以用11个1角+2个2角+1个5角得到2元
可以用13个1角+1个2角+1个5角得到2元

方案2(接力break)——只得到一种结果就结束  

代码示例:

#include <stdio.h>

int main()
{
	int x;
	int one,two,five;
	int exit = 0;
	
	// scanf("%d",&x);
	x = 2;
	for (one = 1; one <= x*10; one++) {
		for (two = 1; two <= x*10/2; two++) {
			for (five = 1; five <= x*10/5; five++) {
				if (one + two*2 + five*5 == x*10) {
					printf("可以用%d个1角+%d个2角+%d个5角得到%d元\n",one,two,five,x);
					exit = 1;
					break;
				}
			}
			if (exit == 1){
				break;
			}
		}
		if (exit == 1){
			break;
		}
	}
	return 0;
}

运行结果 :

可以用1个1角+2个2角+3个5角得到2元

方案3——goto语句  

代码示例:

#include <stdio.h>

int main()
{
	int x;
	int one,two,five;
	
	// scanf("%d",&x);
	x = 2;
	for (one = 1; one <= x*10; one++) {
		for (two = 1; two <= x*10/2; two++) {
			for (five = 1; five <= x*10/5; five++) {
				if (one + two*2 + five*5 == x*10) {
					printf("可以用%d个1角+%d个2角+%d个5角得到%d元\n",one,two,five,x);
                goto out;
				}
			}
		}
	}
out:
	return 0;
}

注:只在多重内循环需要跳转到最外侧的场景下使用goto语句,其他场景都不要去使用goto语句。因为goto语句破坏了程序结构性,难查错

今日小 tip:

if 语句只会在乎0与非0,为0则不执行,不为0则执行

以下代码段的输出是:

int sum = 0;
for ( int i=0; i<10; i++ ) {
    if ( i%2 ) continue;
    sum += i;
}
printf("%d\n", sum); //2+4+6+8   20

各位学习C语言的初学者,如果有问题随时都可以来问我,我会随时为您解答!欢迎大家与我一起学习,互相进步。

我的C语言专栏:C语言基础语法(超详细)_☆光之梦☆的博客-CSDN博客

创作不易,👍 +⭐ +📝(一键三连) 是对博主最大的鼓励与支持哦。

  • 12
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 22
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

☆光之梦☆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值