C语言中的循环语句练习
注:练习题目均出自《明解C语言 入门篇》
一、do语句
1,求多个整数的和及平均值
#include<stdio.h> int main(void) { int sum = 0; //和 int cnt = 0; //整数个数 int retry; //判断是否继续 do{ int t; printf("请输入一个整数:"); scanf("%d",&t); sum = sum + t; cnt = cnt + 1; printf("是否继续?<Yes...0/No...9:"); scanf("%d",&retry); } while(retry == 0); printf("和为%d,平均值为%.2f。\n",sum,(double)sum / cnt); return 0; }
二、whie语句
1,递增显示从0到输入的正整数为止的各个整数
#include<stdio.h> int main(void) { int i,n; printf("请输入一个正整数:"); scanf("%d",&n); i = 0; while(i <= n) printf("%d ",i++); //i的值在显示之后递增 printf("\n"); return 0; }
2,编写一段程序,按照升序显示出小于输入值的所有正偶数
#include<stdio.h> int main(void) { int i,n; printf("请输入一个正整数:"); scanf("%d",&n); i = 0; while(i <= n){ i = i + 2; if(i < n) //应先对递增后的值进行判断,看是否越界 printf("%d ",i); } printf("\n"); return 0; }
3,编写一段程序,使之交替显示+和-,总个数等于所输入的整数值
#include<stdio.h> int main(void) { int num; int i=0; printf("正整数:"); scanf("%d",&num); while (i<num) { if (++i%2) putchar('+'); else putchar('-'); } return 0; }
4,逆向显示正整数
#include<stdio.h> int main(void) { int n; do{ printf("请输入一个正整数:"); scanf("%d",&n); if(n <= 0) puts("请不要输入非正整数。"); }while(n <= 0); printf("该整数逆向显示的结果是 "); while(n > 0){ printf("%d", n % 10); n /= 10; } puts("。 "); return 0; }
三、for语句
1,编写一段程序,根据输入的整数,循环显示1234567890,显示的位数和输入的整数值相同
#include <stdio.h> int main(void) { int i,j,n; j=1; printf("请输入一个整数:"); scanf("%d",&n); for(i=0;i<n;i++) { printf("%d",j); j++; if(j>9) j-=10; } printf("\n"); return 0; }
2,编写一段程序,显示出身高和标准体重的对照表。注:显示的身高范围和间隔由输入的整数值进行控制,标准体重精确到小数点后两位。
#include <stdio.h> int main() { int beginHigh = 0, endHigh = 0; float weight = 0; int margin = 0; printf("开始数值(cm):"); scanf("%d", &beginHigh); printf("结束数值(cm):"); scanf("%d", &endHigh); printf("间隔值(cm):"); scanf("%d", &margin); for (int i = beginHigh;i <= endHigh; i+=margin) { weight = (i - 100)*0.9; //这是一个计算标准体重的公式 printf("%d cm\t\t%.2f\n", i, weight); // \t代表制表符,相当于按下一次Tab键 } return 0; }
3,显示输入的整数值的所有约数
#include<stdio.h> int main(void) { int i,n; printf("整数值:"); scanf("%d",&n); for(i = 1;i <= n;i++) if(n % i == 0) printf("%d ",i); putchar('\n'); return 0; }
4,编写一段程序,输入一个整数值,显示该整数值个' * '。每显示5个就进行换行。
#include<stdio.h> int main() { printf("请输入整数:"); int a; scanf("%d",&a); int b=0; for(int i=0;i<a;i++) { if(b==5) { printf("\n"); b=0; } printf("*"); b=b+1; } }
四、多重循环
1,显示九九乘法表
#include<stdio.h> int main(void) { int i,j; for(i = 1;i <= 9;i++){ for(j = 1;j <= 9;j++) printf("%3d",i * j); putchar('\n'); } return 0; }
2,编写一段程序,为九九乘法表增加横纵标题
#include <stdio.h> int main() { int i, j ; //打印第一行 printf(" |") ; for(i = 1; i <= 9; i++) { printf(" %d", i) ; } printf("\n") ; //打印第二行 for(i = 1; i <= 32; i++) printf("-") ; printf("\n") ; //开始打印99乘法表,每行开头要有行号 for(i = 1; i <= 9; i++)//行 { printf(" %d |", i) ; for(j = 1; j <= 9; j++)//列 { printf(" %2d", i*j) ; } printf("\n") ; } return 0 ; }
3,画一个长方形
#include<stdio.h> int main(void) { int i,j; int height,width; puts("让我们来画一个长方形。"); printf("高:"); scanf("%d",&height); printf("宽:"); scanf("%d",&width); for(i = 1;i <= height;i++) { //长方形有height行 for(j = 1;j <= width;j++) //每行显示width个 putchar('*'); putchar('\n'); //换行 } return 0; }
4,(1)显示直角在左下方的等腰直角三角形
#include<stdio.h> int main(void) { int i,j,len; puts("直角在左下方的等腰直角三角形。"); printf("边长:"); scanf("%d",&len); for(i = 1;i <= len;i++){ for(j = 1;j <= i;j++) putchar('*'); putchar('\n'); } return 0; }
(2)显示直角在右下方的等腰直角三角形
#include<stdio.h> int main(void) { int i,j,len; puts("直角在左下方的等腰直角三角形。"); printf("边长:"); scanf("%d",&len); for(i = 1;i <= len;i++){ for(j = 1;j <= len-i;j++) putchar(' '); for(j = 1;j <= i;j++) putchar('*'); putchar('\n'); } return 0; }
(3)显示直角在左上方的等腰直角三角形
#include <stdio.h> int main() { int i,j,len; puts("直角在左下方的等腰直角三角形。"); printf("边长:"); scanf("%d",&len); for (int i = 1; i<=len; i++) { for (int j = 1; j <=len-i+1; j++) { putchar('*'); } putchar('\n'); } return 0; }
(4)显示直角在右上方的等腰直角三角形
#include <stdio.h> int main() { int i,j,len; puts("直角在左下方的等腰直角三角形。"); printf("边长:"); scanf("%d",&len); for (int i = 1; i<=len; i++) { for (int j = 1; j <=i; j++) { putchar(' '); } for (int j=1; j<=len-i+1; j++) { putchar('*'); } putchar('\n'); } return 0; }
5,编写一段程序,输入一个整数,显示出输入整数层的金字塔形状
提示:第 i 行显示 (i - 1)* 2 + 1 个 ' * '
#include "stdio.h" int main(int argc, char const *argv[]) { int n; puts("让我们来描绘一个金字塔。"); printf("金字塔有几层:"); scanf("%d",&n); for (int i = 1;i<=n; i++) { for (int j = 1; j<=n-i; j++) { putchar(' '); } for (int j=1;j<=i ; j++) { putchar('*'); } for (int j=1; j<i; j++) { putchar('*'); } putchar('\n'); } return 0; }
金字塔变形(1)
#include<stdio.h> int main() { int i,j,n; puts("让我们来描绘一个金字塔。"); printf("金字塔有几层:"); scanf("%d",&n); for(i=1;i<=n;i++) { for(j=0;j<n-i;j++) printf(" "); for(j=1;j<2*i;j++) printf("%d",i); printf("\n"); } return 0; }
金字塔变形(2)
#include<stdio.h> int main() { int i,j,n; puts("让我们来描绘一个金字塔。"); printf("金字塔有几层:"); scanf("%d",&n); for(i=1;i<=n;i++) { for(j=0;j<n-i;j++) printf(" "); for(j=1;j<=i;j++) printf("%d",j); for(j=i-1;j>0;j--) printf("%d",j); printf("\n"); } }
总结
循环是C语言的基础,所以要扎实练习,孰能生巧。在此列举一些注意事项:
- 注意区分while语句和do-while语句,前者是先判断后执行,后者是先执行后判断。
- do语句的循环体至少会执行一次,而while语句的循环体则有可能一次也不会执行。
- 注意不要在for语句和while语句的()后放置空语句。
- do语句的循环体,即使是单一语句,也可以用{ }括起来使之成为复合语句(程序块),这样程序会易读。
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明。
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子里和园子外的大大们指正错误,共同进步。或者直接私信我 (^∀^)
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!
您的资助是我最大的动力!
金额随意,欢迎来赏!
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的
本博客的所有打赏均将用于博主女朋友的化妆品购买以及养肥计划O(∩_∩)O。我是【~不会飞的章鱼~】!