for 循环
- 输出1,2,3,…,n的值
#include<stdio.h> int main() { int n; scanf("%d", &n); for(int i=1; i<=n; i++){ printf("%d\n", i); } return 0; }
- for循环的格式:
for(初始化; 条件; 调整) 循环体;
- 注意理解for循环的执行过程
- 在循环内定义变量的i,循环体外不可见。尽量缩小变量定义的范围。
- for循环的格式:
- 输出所有形如aabb的4位完全平方数。
#include<stdio.h> #include<math.h> int main() { // 两层循环嵌套 for(int i=1; i<10; i++){ for(int j=0; j<10; j++){ // 得到 aabb 这种数 int n = i*1100+j*11; // 开方,四舍五入 int m = floor(sqrt(n) + 0.5); if(m*m == n){ printf("%d\n", n); } } } return 0; }
- 伪代码,实际应用中,不需要太拘泥于伪代码的格式,主要目标是描述算法梗概,避开细节,启发思路。
- 浮点运算可能存在误差。在进行浮点数比较时,应考虑到浮点误差。
注:把所有平方数都列举出来,选出满足条件的,四位数,aabb型。// 解答二 枚举法 #include<stdio.h> #include<math.h> int main() { for(int i=1; ; i++){ int x = i*i; if(x < 1000){ continue; } if(x > 9999){ break; } int hi = x/100; int low = x%100; if(hi/10 == hi%10 && low/10 == low%10){ printf("%d\n", x); } } return 0; }
while循环和do-while循环
- 3n+1问题
对于任意大于1的自然数n,若n为奇数,则将n变为3n+1,否则变为n的一半。经过若干次这样的变换,一定会使n变为1。求变换次数。#include<stdio.h> int main() { int n, times; scanf("%d", &n); times = 0; while(n != 1){ if(n%2 == 0){ n =