break;跳出循环。
continue;跳过循环的这一轮剩下的进入下一轮。(跳过一轮循环)
判断一个数是否为素数
#include二、多重循环int main() { int x; scanf("%d",&x); int i; int IsPrime = 1; //x是素数 for (i = 2; i < x; i++) { if (x %i == 0) { IsPrime = 0; break; } } if(IsPrime == 1) { printf("%d这个数是素数。n",x); } else { printf("%d这个数不是素数。",x); } return 0; }
求100以内的素数
#include循环的嵌套int main() { int x; scanf("%d",&x); for (x = 2; x < 100; x++) { int i; int IsPrime = 1; //x是素数 for (i = 2; i < x; i++) { if (x %i == 0) { IsPrime = 0; break; } } if(IsPrime == 1) { printf("%d这个数是素数。n",x); } } printf("n"); return 0; }
求前50个素数
#includeint main() { int x; scanf("%d",&x); x = 2; int cnt = 0; //for (x = 2; x < 100; x++) while (cnt < 50) { int i; int IsPrime = 1; //x是素数 for (i = 2; i < x; i++) { if (x %i == 0) { IsPrime = 0; break; } } if(IsPrime == 1) { printf("%d这个数是素数。n",x); cnt++; } x++; } printf("n"); return 0; }
用1角,2角和5角的硬币凑出10元以下的金额
#includeint main() { int x; int one, two, five; scanf("%d",&x); 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元。n3",one ,two ,five, x); } } } } return 0; }
break和continue只能对所在的循环做
接力break
#includeint main() { int x; int one, two, five; int exit =0 ; scanf("%d",&x); 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) break } if(exit)break; } return 0; }
goto (去哪)if(exit) 等于if(exit == 1)
goto语句被称为C语言中的跳转语句,用于无条件跳转到其他标签,它将控制权转移到程序的其他部分。
goto语句一般很少使用,因为它使程序的可读性和复杂性变得更差。
一个遍布goto语句的程序会让让人很难抓住重心,不便于对程序的理解和维护。
不过有的情况可以可以使用goto,比如:从多重循环中直接跳出 ,减少了接力break;
#include三、循环应用int main() { int x; int one, two, five; int exit =0 ; scanf("%d",&x); 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; goto out; } } } } out: return 0; }
f(n)=1+1/2+1/3+1/4...1/n
#includeint main() { int n; int i; double sum = 0.0; scanf("%d",&n); for (i = 1; i <= n; i++) { sum += 1.0/i; } printf("f(%d)=%fn",n ,sum); return 0; }
f(n)=1-1/2+1/3-1/4...1/n
#includeint main() { int n; int i; double sum = 0.0; //int sign = 1; double sign = 1.0; scanf("%d",&n); for (i = 1; i <= n; i++) { sum += sign/i; sign = -sign; } printf("f(%d)=%fn",n ,sum); return 0; }
最大公约数——枚举
#includeint main() { int a,b; int min; scanf("%d %d",&a ,&b); if (a < b) { min = a; } else { min = b; } int ret = 0; int i; for (i = 1; i < min; i++) { if(a%i == 0) { if(b%i == 0) { ret = i; } } } printf("%d和%d的最大公约数为%dn",a ,b ,ret); return 0; }
最大公约数——辗转相除
#includeint main() { int a,b; int t; scanf("%d %d",&a ,&b); while (b != 0) { t = a%b; a = b; b = t; } printf("gcd=%d",a); return 0; }
正序分解整数(不能求700一类的数)
#includeint main() { int x; scanf("%d",&x); x = 13425; int t=0; do { int d = x%10; t = t*10 + d; x /= 10; } while (x > 0); printf("x=%d,t=%dn",x ,t); x = t; do { int d = x%10; printf("%d",d); if (x > 9) { printf(" "); } x /= 10; } while (x > 0); printf("n"); return 0; }
正序分解整数(只能求限制位数)
#includeint main() { int x; scanf("%d",&x); // 13425 / 10000 ->1 // 13425 % 10000 ->3425 // 10000 / 10 ->1000 // 3425 / 1000 ->3 // 3425 % 1000 ->425 // 1000 / 10 ->100 // 425 / 100 ->4 // 425 % 100 ->25 // 100 / 10 ->10 // 25 / 10 ->2 // 25 % 10 ->5 // 10 / 10 ->1 // 5 / 1 ->5 // 5 % 10 ->5 // 1 / 10 ->0 // 70000 / 10000 ->7 // 70000 % 10000 ->0 int mask = 10000; do { int d = x / mask; printf("%d",d); if (mask > 9) { printf(" "); } x %= mask; mask /= 10; } while (mask > 0); printf("n"); return 0; }
正序分解整数(最终版)
#includeint main() { int x; scanf("%d",&x); // 13425 / 10000 ->1 // 13425 % 10000 ->3425 // 10000 / 10 ->1000 // 3425 / 1000 ->3 // 3425 % 1000 ->425 // 1000 / 10 ->100 // 425 / 100 ->4 // 425 % 100 ->25 // 100 / 10 ->10 // 25 / 10 ->2 // 25 % 10 ->5 // 10 / 10 ->1 // 5 / 1 ->5 // 5 % 10 ->5 // 1 / 10 ->0 // 70000 / 10000 ->7 // 70000 % 10000 ->0 int mask = 1; int t = x; while(t>9) { t /= 10; mask *= 10; } printf("x=%d,mask=%dn",x ,mask); do { int d = x / mask; printf("%d",d); if (mask > 9) { printf(" "); } x %= mask; mask /= 10; } while (mask > 0); printf("n"); return 0; }
感觉脑子不够用,,



