我的个人主页:☆光之梦☆的博客_CSDN博客-C语言基础语法(超详细)领域博主
欢迎各位 👍点赞 ⭐收藏 📝评论
特别标注:本博主将会长期更新c语言的语法知识,初学c语言的朋友们,可以收藏订阅一下我的<C语言基础语法>专栏。 关注博主,学习不迷路哦
目录
一、输入一个数,怎么判断是否为素数
二、如何输出100以内的素数
三、如何输出前50个素数
四、 凑硬币
方案1——得到多种结果
方案2(接力break)——只得到一种结果就结束
方案3——goto语句
一、💠输入一个数 判断是否为素数💠
素数:只能被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博客
创作不易,👍 +⭐ +📝(一键三连) 是对博主最大的鼓励与支持哦。