C语言循环结构实验
一、实验目的
1、掌握C语言循环结构相关知识
2、使用C语言掌握循环结构定义及应用。
二、实验设备与器件
PC机、头歌实践教学平台
三、实验内容
使用头歌平台编程:

(一)设计题目
1、循环结构实验(A)
编写一个程序,输入一个正整数 N,输出从 1 到 N 的所有偶数的和。
C程序1: |
#include <stdio.h> int main(){ int N; int sum = 0; /***********begin********/ scanf("%d", &N); int i; for(i=1;i<=N;i++){ if(i%2==0){ sum += i; } } printf("从1到%d的所有偶数的和为:%d\n", N, sum); /**********end***********/ return 0; }


 |
2、循环结构实验(B)
编写一个程序,输入一个正整数 N,输出一个 N 行的数字金字塔。
C程序2: |
#include <stdio.h> int main(){ int N; /***********begin********/ scanf("%d", &N); int n = 1; int i, j; for(i=1;i<=N;i++){ for(j=1;j<=n;j++){ printf("%d ", j); } printf("\n"); n++; } /**********end***********/ }


 |
3、循环嵌套
打印九九乘法表。
C程序3: |
#include <stdio.h> int main() { /***********begin********/ for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i; j++) { printf("%d*%d=%d\t", j, i, i*j); } printf("\n"); } /**********end***********/ return 0; }
 |
4、统计最大值
输入多个整数(一行),输出其中最大的整数。
C程序4: |
#include <stdio.h> int main() { int maxnum = 0; int num = 0; /***********begin********/ while(scanf("%d",&num)!=EOF){//读到结尾停止读取 if(num>maxnum) //判断是否为最大值 maxnum=num; } printf("%d\n",maxnum); /**********end***********/ return 0; }


 |
5、输出100~200之间的素数
输出100~200之间的素数。
C程序5: |
#include <stdio.h> #include <math.h> int main() { /***********begin********/ for (int i = 100; i <= 200; i++) { int is_prime = 1; for (int j = 2; j <= sqrt(i); j++) { if (i % j == 0) { is_prime = 0; break; } } if (is_prime) { printf("%d ", i); } } printf("\n"); /**********end***********/ return 0; }
 |
6、break和continue语句
编写一个程序,求出 1 到 n 之间的所有数字的和,当和大于 n 时,跳出循环。
C程序6: |
#include <stdio.h> int main() { int sum = 0; int n; /***********begin********/ scanf("%d",&n); for (int i = 1; i <= n; i++) { sum += i; if (sum > n) { break; } } printf("%d", sum); /**********end***********/ return 0; }


 |
7、break和continue语句2
编写一个程序,求出 1 到 n 之间的所有奇数的和。
C程序7: |
#include <stdio.h> int main() { int sum = 0; int n; /***********begin********/ scanf("%d",&n); for (int i = 1; i <= n; i++) { if (i % 2 == 0) { continue; } sum += i; } printf("%d", sum); /**********end***********/ return 0; }


 |
8、do…while语句
编写一个程序,输入一个正整数n(n>0),判断n是否为回文数。
C程序8: |
#include <stdio.h> int main() { /***********begin********/ int n, m, r = 0; scanf("%d", &n); m = n; do { r = r * 10 + m % 10; m /= 10; } while (m > 0); if (r == n) { printf("%d是回文数\n", n); } else { printf("%d不是回文数\n", n); } /**********end***********/ return 0; }


 |
9、求n的质因数
编写一个程序,输入一个正整数n(n>0),求n的所有质因数。
C程序9: |
#include <stdio.h> int main() { int n, i = 2; /***********begin********/ scanf("%d", &n); do { if (n % i == 0) { printf("%d ", i); n /= i; } else { i++; } } while (i <= n); printf("\n"); /**********end***********/ return 0; }


 |
10、while语句
编写一个程序,输入一个正整数n(n>1),判断n是否为质数(除1和n外没有其他因数)。
C程序10: |
#include <stdio.h> #include <stdbool.h> int main() { /***********begin********/ int n, i = 2; bool is_prime = true; scanf("%d", &n); while (i < n) { if (n % i == 0) { is_prime = false; break; } i++; } if (is_prime) { printf("%d是质数\n", n); } else { printf("%d不是质数\n", n); } /**********end***********/ return 0; }


 |
11、求n的阶乘
编写一个程序,输入一个正整数n(n>0),求n的阶乘。
C程序11: |
#include <stdio.h> int main() { int n, i = 1, fact = 1; /***********begin********/ scanf("%d", &n); while (i <= n) { fact *= i; i++; } printf("%d\n", fact); /**********end***********/ return 0; }


 |
12、求n的阶乘
编写一个程序,输入两个正整数m和n(m>n),求m到n之间所有整数的和。
C程序12: |
#include <stdio.h> int main() { int m, n, sum = 0; /***********begin********/ scanf("%d%d", &m, &n); for (int i = m; i >= n; i--) { sum += i; } printf("%d\n", sum); /**********end***********/ return 0; }


 |
13、求约数和
编写一个程序,输入一个正整数n(n>1),求n的所有约数之和。
C程序13: |
#include <stdio.h> int main() { int n, sum = 0; /***********begin********/ scanf("%d", &n); for (int i = 1; i <= n; i++) { if (n % i == 0) { sum += i; } } printf("%d\n",sum); /**********end***********/ return 0; }


 |