前言

本文为业余学习《明解C语言入门篇》的记录,包含代码清单和练习题。
开始学习时间:2022年8月21日
+++++++++++++++++++++++++++++++
第1章 初识C语言
第2章 运算和数据类型
第3章 分支结构程序
第4章 程序的循环控制
第5章 数组
第6章 函数
第7章 基本数据类型
第8章 动手编写各种程序吧
第9章 字符串的基本知识
第10章 指针
第11章 字符串和指针
第12章 结构体
第13章 文件处理
+++++++++++++++++++++++++++++++

第4章、程序的循环控制

4-1 do语句

代码清单 4-1

//输入的整数是奇数还是偶数呢(按照自己的意愿进行循环操作)#include <stdio.h>int main()
{int retry;do {int no;printf("请输入一个整数:");scanf("%d",&no);switch (no % 2){case  0 : puts("该整数是偶数。");    break;default : puts("该整数是奇数。");}printf("还想再来一次吗?【Yes…0 / No …9】:");scanf("%d",&retry);} while (retry==0);return 0;
}

代码清单 4-2

//根据读取的整数值显示所出的拳(只接收0、1、2)#include <stdio.h>int main()
{int hand;do {printf("请选择出什么拳【0…石头/1…剪刀/2…布】");scanf("%d",&hand);} while (! (!(hand < 0) && !(hand > 2)));printf("你选择了");switch (hand){case 0 : printf("石头。\n");  break;case 1 : printf("剪刀。\n");   break;case 2 : printf("布。\n");        break;}return 0;
}

代码清单 4-3

//不停地输入整数,显示其和及平均值#include <stdio.h>int main()
{int sum=0;int cnt=0;int retry;do {int no;printf("请输入一个整数:");scanf("%d",&no);sum+=no;cnt+=1;printf("是否继续?【Yes…0/No…9】");scanf("%d",&retry);}while (retry == 0);printf("它们的和是%d,平均值是%.2f。\n",sum,(double)sum/cnt);return 0;
}

练习 4-1

//判断整数值的符号,可将输入的过程循环任意次#include <stdio.h>int main()
{int retry;do {int no;printf("请输入一个整数:");scanf("%d",&no);if (no==0)puts("该整数为0。");else if (no>0)puts("该整数为正整数。");elseputs("该整数为负整数。");printf("继续?【Yes…0/No…9】");scanf("%d",&retry);}while (retry==0);return 0;
}

练习 4-2

/*---输入两个数,计算出它们之间所有的整数的和---*/#include <stdio.h>int main(void)
{int a, b, sum=0, min, max;puts("请输入两个整数。");printf("整数a:"); scanf("%d",&a);printf("整数b:");   scanf("%d",&b); (a>b)?(max = a)&&(min = b):(min = a)&&(max = b);do {sum+=min;} while(min++ != max);(a>b)?(max = a)&&(min = b):(min = a)&&(max = b);printf("大于等于%d小于等于%d的所有整数的和是%d。\n",min,max,sum);return 0;}

代码清单 4-3

//不停地输入整数,显示其和及平均值#include <stdio.h>int main()
{int sum=0;int cnt=0;int retry;do {int no;printf("请输入一个整数:");scanf("%d",&no);sum+=no;cnt+=1;printf("是否继续?【Yes…0/No…9】");scanf("%d",&retry);}while (retry == 0);printf("它们的和是%d,平均值是%.2f。\n",sum,(double)sum/cnt);return 0;
}

代码清单 4-4

//不停地输入整数,显示其和及平均值(其2)。※使用复合赋值运算符及后置递增运算符#include <stdio.h>int main()
{int sum=0;int cnt=0;int retry;do{int t;printf("请输入一个整数:");scanf("%d",&t);sum+=t;cnt++;printf("是否继续?【Yes…0/No…9】:");scanf("%d",&retry);}while (retry==0);printf("它们的和为%d,平均值为%.2f。\n",sum,(double)sum/cnt);return 0;
}

4-2 while语句

代码清单 4-5

//从输入的整数开始倒数到0#include <stdio.h>int main()
{int n;printf("请输入一个整数:");scanf("%d",&n);while (n>=0){printf("%d ",n);n--;}puts("");return 0;
}

练习 4-3

#include<stdio.h>int main(void)
{int n;printf("请输入一个正整数: ");scanf("%d", &n);if (n>=0){while (n >= 0){printf("%d ", n);n--;}puts("");}return 0;
}

代码清单 4-6

//从输入的整数开始倒数到0(其2)#include <stdio.h>int main()
{int n;printf("请输入一个整数:");scanf("%d",&n);while (n>=0){printf("%d ",n--);}puts("");return 0;
}

练习 4-4

//修改代码清单4-6,使其递减到1而不是0,同时输入的值小于0时,不进行换行(等于0时还是要换行,但不显示0)#include <stdio.h>int main()
{int n;printf("请输入一个正整数:");scanf("%d",&n);if (n>=0){while (n>=1){printf("%d ",n--);}puts("");}return 0;
}

代码清单 4-7

// 递增显示从0到输入的正整数为止的各个整数#include <stdio.h>int main()
{int i=0,n;printf("请输入一个正整数:");scanf("%d",&n);while (i<=n){printf("%d ",i++);}puts("");return 0;
}

练习 4-5

//修改代码清单4-7,从1开始递增,输入的值小于0的时候不换行(等于0时还会换行,但不显示0)#include <stdio.h>int main()
{int i=1,n;printf("请输入一个正整数:");scanf("%d",&n);if (n>=0){while (i<=n){printf("%d ",i++);}puts("");}return 0;
}

练习 4-6

//编写一段程序,按照升序显示出小于输入值的所有正偶数#include <stdio.h>int main()
{int n,i=0;printf("请输入一个正整数:");scanf("%d",&n);while (i<=n){if (i>0 && i%2==0)  //0是整数,但不是正整数{printf("%d ",i);}i++;}puts("");return 0;
}

练习 4-7

//显示出小于输入的整数的所有2的乘方(只能小于,不能大于或等于)#include <stdio.h>int main()
{int n2=1,n;   //n2是2的乘方,初始值不能是0,否则会一直输出0。printf("请输入一个整数:");scanf("%d",&n);while (n2*2<n) //因循环体里面直接输出n2=n2*2,为防止最后一次n2*2>n也输出结果,故在while里面提前判断。{    printf("%d\n",n2*=2);}return 0;
}

此题有点绕,试验结果如下图:

代码清单 4-8

//输入一个整数,连续显示出该整数个*#include <stdio.h>int main()
{int n;printf("请输入一个整数:");scanf("%d",&n);while (n-- > 0){putchar('*');  //输出单个字符,用单引号。输出字符串要用printf("...")或puts("...")函数,用双引号。}putchar('\n');return 0;
}

练习 4-8

//改写代码清单4-8的程序,当输入的值小于1时不输出换行符。#include <stdio.h>int main()
{int n;printf("请输入一个整数:");scanf("%d",&n);if (n>=1){while (n-- > 0){putchar('*');}putchar('\n');}return 0;
}

练习 4-9

//交替显示+和-,总个数等于输入的整数值,输入0以下的整数时,什么也不显示#include <stdio.h>int main()
{int n;int i=0;printf("要输入几个符号:");scanf("%d",&n);while (i<n){++i;switch (i%2){case 1 : putchar('+');    break;default: putchar('-');  break;}}putchar('\n');return 0;
}

练习 4-10

//连续显示*,总个数等于所输入的整数值。当输入0以下整数时,什么也不显示#include <stdio.h>int main()
{int n;printf("正整数:");scanf("%d",&n);while (n>0){--n;puts("*");}return 0;
}

代码清单 4-10

//逆向显示正整数#include <stdio.h>int main()
{int n;do {printf("请输入一个正整数:");scanf("%d",&n);if (n<=0){printf("请不要输入非正整数。\n");}}while (n<=0);while (n>0){printf("%d",n%10);n/=10;}puts("。");return 0;
}

练习 4-11

//练习4-11,对代码清单4-10的程序进行修改,使其显示结果的同时显示输入的整数值#include <stdio.h>int main()
{int n;do {printf("请输入一个正整数:");scanf("%d",&n);if (n<=0){puts("请不要输入非正整数。");}}while (n<=0);printf("%d逆向显示的结果是",n);while (n>0){printf("%d",n%10);n/=10;}puts("。");return 0;
}

练习 4-12

//练习4-12,读取一个正整数,显示其位数#include <stdio.h>int main()
{int n;int digit=0;do {printf("请输入一个正整数:");scanf("%d",&n);if (n<=0){puts("请不要输入非正整数。");}}while (n<=0);printf("%d的位数是",n);   //或者再增加一个变量 int temp; temp=n;while (n>0){n/=10;digit+=1;}printf("%d。\n",digit);return 0;
}

4-3 for语句

代码清单 4-11

//递增显示从1到输入的正整数为止的各个整数(使用for语句)#include <stdio.h>int main()
{int n;int i;printf("请输入一个正整数:");scanf("%d",&n);for (i=1;i<=n;i++){printf("%-d ",i);if (i%30==0) //每输出30个整数就换行{putchar('\n');}}putchar('\n');return 0;
}

代码清单 4-12

//输入一个整数,连续显示出该整数个*(使用for语句)#include <stdio.h>int main()
{int n;int i;printf("请输入一个正整数:");scanf("%d",&n);for (i=1;i<=n;i++){printf("*");}putchar('\n');
}

代码清单 4-13

//输入规定个数个整数并显示出它们的合计值和平均值(使用for语句)#include <stdio.h>int main()
{int i=0;int sum=0;int temp;int num;printf("要输入几个整数:");scanf("%d",&num);for (i=0;i<num;i++){printf("No.%d : ",i+1);scanf("%d",&temp);sum+=temp;}printf("它们的合计值是%d,平均值是%.2f。\n",sum,(double)sum/num);return 0;
}

练习 4-13

//练习4-13,求1到n的和。n的值从键盘输入。#include <stdio.h>int main()
{int n;int sum=0;int i;printf("请输入整数:");scanf("%d",&n);for (i=1;i<=n;i++){sum+=i;}printf("1到%d的和是%d。\n",n,sum);return 0;
}

练习 4-14

//练习4-14,根据输入的整数,循环显示1234567890,显示的位数和输入的整数值相同#include<stdio.h>int main()
{int n;int i;printf("请输入要显示的位数:");scanf("%d", &n);for (i = 1; i <= n; i++){printf("%d", i%10);}putchar('\n');return 0;
}

练习 4-15

//根据输入的身高范围和间隔,显示身高和标准体重对照表。#include <stdio.h>int main()
{int Height_start,Height_end,Height_interval;printf("开始数值(cm):");  scanf("%d",&Height_start);printf("结束数值(cm):");   scanf("%d",&Height_end);printf("间隔数值(cm):"); scanf("%d",&Height_interval);for (;Height_start<=Height_end;Height_start+=Height_interval){printf("%dcm     %.2fkg\n",Height_start,(Height_start-100)*0.9);}return 0;
}

代码清单 4-14

//显示输入的整数值以下的偶数#include <stdio.h>int main()
{int n;int i;printf("请输入一个整数:");scanf("%d",&n);for (i=2;i<=n;i+=2){printf("%d ",i);}putchar('\n');return 0;
}

代码清单 4-15

//显示输入的整数值的所有约数#include <stdio.h>int main()
{int n;int i;printf("请输入一个整数:");scanf("%d",&n);for (i=1;i<=n;i++){if (n%i==0){printf("%d ",i);}}putchar('\n');return 0;
}

练习 4-16

// 输入一个整数值,显示该数以下的所有奇数#include <stdio.h>int main()
{int n;int i;printf("请输入一个整数:");scanf("%d",& n);for (i=1;i<=n;i++){if (i%2==1){printf("%d ",i);}}putchar('\n');return 0;
}

练习 4-17

//显示1到n的整数值的二次方#include <stdio.h>int main()
{int n;int i=1;printf("请输入一个整数:");scanf("%d",&n);while (i<=n){printf("%d的二次方是%d\n",i++,i*i);}return 0;
}

练习 4-18

//输入一个整数值,显示该整数值个‘*’。每显示5个就进行换行#include <stdio.h>int main()
{int n;int i;printf("请输入一个整数:");scanf("%d",&n);for (i=1;i<=n;i++){putchar('*');if (i%5==0){putchar('\n');}}putchar('\n');return 0;
}

练习 4-19

//对代码清单4-15进行修改,在显示所输入的整数值的所有约数之后,显示约数的个数#include <stdio.h>int main()
{int n;int i;int num=0;printf("请输入一个整数:");scanf("%d",&n);for (i=1;i<=n;i++){if (n%i==0){printf("%d\n",i);num+=1;}}printf("约数有%d个。\n",num);return 0;
}

4-4 多重循环

代码清单 4-16

//显示九九乘法表#include <stdio.h>int main()
{int i,j;for (i=1;i<=9;i++){for (j=1;j<=9;j++){printf("%d * %d = %-2d  ",i,j,i*j);}putchar('\n');}return 0;
}

break语句跳出循环

//break语句跳出循环#include <stdio.h>int main()
{int i,j;for (i=1;i<=9;i++){for (j=1;j<=9;j++){int product=i*j;if (product>40){break;}printf("%2d *%2d = %-3d",i,j,product);}putchar('\n');}return 0;
}

代码清单 4-17

//画一个长方形#include <stdio.h>int main()
{int i,j;int height,width;puts("让我们来画一个长方形。");printf("高:");      scanf("%d",&height);printf("宽:");        scanf("%d",&width);for (i=1;i<=height;i++){for (j=1;j<=width;j++){putchar('*');}putchar('\n');}return 0;
}

代码清单 4-18

//显示直角在左下方的等腰直角三角形#include <stdio.h>int main()
{int i,j,length;puts("生成直角在左下方的等腰直角三角形。");printf("短边:");scanf("%d",&length);for (i=1;i<=length;i++){for (j=1;j<=i;j++){putchar('*');}putchar('\n');}return 0;
}

代码清单 4-19

//显示直角在右下方的等腰直角三角形#include <stdio.h>int main()
{int i,j,length;puts("生成直角在右下方的等腰直角三角形。");printf("短边:");scanf("%d",&length);for (i=1;i<=length;i++){for (j=1;j<=length-i;j++)putchar(' ');for (j=1;j<=i;j++)putchar('*');putchar('\n');}return 0;
}

代码清单 4-20

//输入一个整数,显示该整数个*(循环次数可任意指定)#include <stdio.h>int main()
{int retry;do {int i;int n;do {printf("想显示几个*:");scanf("%d",&n);if (n<=0){puts("请不要输入非正整数。");}}while (n<=0);for (i=1;i<=n;i++){putchar('*');}putchar('\n');printf("再来一次?【Yes…0/No…9】:");scanf("%d",&retry);}while (retry==0);return 0;
}

练习 4-20

//练习4-20,为九九乘法表增加横纵标题#include <stdio.h>int main()
{int i,j;/*画横标题*/printf("  |");for (i=1;i<=9;i++){printf("%3d",i);}putchar('\n');/*画分隔线*/for (i=1;i<=31;i++){putchar('-');}putchar('\n');/*画纵标题及写乘法表*/for (i=1;i<=9;i++){/*画纵标题*/printf("%-d |",i);/*写九九乘法表*/for (j=1;j<=9;j++){printf("%3d",i*j);}putchar('\n');}return 0;
}

练习 4-21

//显示以所输入整数为边长的正方形#include <stdio.h>int main()
{int i,j;int n;printf("生成一个正方形\n正方形有几层:");scanf("%d",&n);for (i=1;i<=n;i++){for (j=1;j<=n;j++){putchar('*');}putchar('\n');}return 0;
}

练习 4-22

//显示出一个横向较长的长方形
/*读取两个边的边长,以较小的数作为行数,以较大的数作为列数*/#include <stdio.h>int main()
{int n1,n2;int i,j;puts("让我们来画一个长方形。");printf("一边:");        scanf("%d",&n1);printf("另一边:");      scanf("%d",&n2);for (i=1;i<=(n1>n2?n2:n1);i++){for (j=1;j<=(n1>n2?n1:n2);j++){putchar('*');}putchar('\n');}return 0;
}

练习 4-23(直角在左上方的等腰直角三角形)

//显示出直角在左上方的等腰直角三角形#include <stdio.h>int main()
{int n;int i,j;printf("边长:");scanf("%d",&n);for (i=0;i<n;i++){for (j=0;j<n-i;j++){putchar('*');}putchar('\n');}return 0;
}

练习 4-23(直角在右上方的等腰直角三角形)

//显示出直角在右上方的等腰直角三角形#include <stdio.h>int main()
{int n;int i,j;printf("边长:");scanf("%d",&n);for (i=1;i<=n;i++){for (j=1;j<=i-1;j++){putchar(' ');}for (j=1;j<=n-i+1;j++){putchar('*');}putchar('\n');}return 0;
}

练习 4-24

//显示输入整数层的金字塔形状#include <stdio.h>int main()
{int n;int i,j,k;puts("让我们来画一个金字塔。");printf("金字塔有几层:");scanf("%d",&n);for (i=1;i<=n;i++){for (j=1;j<=n-i;j++){putchar(' ');}for (k=1;k<=i*2-1;k++){putchar('*');}putchar('\n');}return 0;
}

练习 4-25

//显示输入整数层的向下的金字塔形状。#include <stdio.h>int main()
{   int n;int i,j,k;puts("让我们来画一个向下的金字塔。");printf("金字塔有几层:");scanf("%d",&n);for (i=1;i<=n;i++){for (j=1;j<=i-1;j++){putchar(' ');}for (k=1;k<=(n-i)*2+1;k++){printf("%d",i%10);}putchar('\n');}return 0;
}

专题4-1 continue语句

#include <stdio.h>int main()
{int i,j;for (i=1;i<=9;i++){for (j=1;j<=9;j++){int product=i*j;if (product % 10 == 4 || product / 10 == 4){printf("   "); //两个空格continue;}printf("%3d",product);}putchar('\n');}return 0;
}

4-5 程序的组成元素和格式

代码清单 4-21

/*显示九九乘法表*/#include <stdio.h>int                main()      {int i,   j
;for(i=                            1;i<=9;            i
++)   {     for (j=1;j
<=9;j
++)    printf("%3d",i *
j);putchar('\n');                  /*换行*/                                      }return 0;
}

总结

summary

#include <stdio.h>int main()
{int i, j;int x, y, z;do{printf(" 0~100的整数值:");scanf("%d",&x);}while (x<0 || x>100);y=x;z=x;while (y>=0){printf("%d %d\n", y--, ++z);}printf("宽和高为整数面积为%d""的长方形的边长是:\n", x);for (i=1; i<x; i++){if (i*i>x)  break;if (x%i != 0)   continue;printf("%d * %d\n", i, x/i);}puts("5行7列的星号");for (i=1; i<=5; i++){for (j=1; j<=7; j++){putchar('*');}putchar('\n');}return 0;
}

明解C语言入门篇_第4章_程序的循环控制相关推荐

  1. 明解C语言入门篇练习题第十三章

    练习13-1 #include <stdio.h> int main(void) {FILE *fp;char file_name[128];printf("file name: ...

  2. 《明解C语言 入门篇》第5章 数组 练习题解答

    练习5-1 数组的赋值 练习5-2 数组的赋值 练习5-3 数组的初始化 练习5-4 数组的倒序复制 练习5-5 数组元素倒序排列 练习5-6 赋值表达式的判断 练习5-7 对象式宏的应用 练习5-8 ...

  3. 明解C语言入门篇_第12章_结构体

    前言 本文为业余学习<明解C语言入门篇>的记录,包含代码清单和练习题. 开始学习时间:2022年8月21日 +++++++++++++++++++++++++++++++ 第1章 初识C语 ...

  4. 明解C语言入门篇_第9章_字符串的基本知识

    前言 本文为业余学习<明解C语言入门篇>的记录,包含代码清单和练习题. 开始学习时间:2022年8月21日 +++++++++++++++++++++++++++++++ 第1章 初识C语 ...

  5. 明解C语言入门篇_第8章_动手编写各种程序吧

    前言 本文为业余学习<明解C语言入门篇>的记录,包含代码清单和练习题. 开始学习时间:2022年8月21日 +++++++++++++++++++++++++++++++ 第1章 初识C语 ...

  6. 明解C语言入门篇_第10章_指针

    前言 本文为业余学习<明解C语言入门篇>的记录,包含代码清单和练习题. 开始学习时间:2022年8月21日 +++++++++++++++++++++++++++++++ 第1章 初识C语 ...

  7. 明解C语言入门篇_第13章_文件处理

    前言 本文为业余学习<明解C语言入门篇>的记录,包含代码清单和练习题. 开始学习时间:2022年8月21日 +++++++++++++++++++++++++++++++ 第1章 初识C语 ...

  8. 明解C语言入门篇_第7章_基本数据类型

    前言 本文为业余学习<明解C语言入门篇>的记录,包含代码清单和练习题. 开始学习时间:2022年8月21日 +++++++++++++++++++++++++++++++ 第1章 初识C语 ...

  9. 明解C语言入门篇_第6章_函数

    前言 本文为业余学习<明解C语言入门篇>的记录,包含代码清单和练习题. 开始学习时间:2022年8月21日 +++++++++++++++++++++++++++++++ 第1章 初识C语 ...

最新文章

  1. 某程序员求助:因考虑不周,签字确认后又拒了虾皮offer,被hr告知进入黑名单,永不录用!以后还能进虾皮吗?...
  2. VC非ASCII语言复制到剪切板乱码问题
  3. 分布式架构高可用架构篇_04_Keepalived+Nginx实现高可用Web负载均衡
  4. Esper 20章 优化
  5. port常用和不常用端口一览表
  6. [Redux/Mobx] Redux和vuex有什么区别?
  7. jsp进入另一个jsp分块之后js代码失效_一个架构师的缓存修炼之路
  8. 从WINDOWS日志判断哪块硬盘好坏!!
  9. iPhone SE 3钢化膜已上架海外市场:4.7英寸屏 Home键得到保留
  10. Tally项目笔记001
  11. 关于利用DEM生成水系图
  12. 强烈推荐!!!Ubuntu19.04安装向日葵踩到的坑【尤其是ubuntu 19.04 遇到了libpng12.so.0 导致无法apt 更新!!!!】
  13. inode客户端连接成功上不了网_iNode的客户端部分常见问题
  14. DLP Digital Light Procession 的缩写 数字光处理
  15. 【制作】基于51单片机的蓝牙遥控小车方案
  16. git命令行操作指南(git指令及使用场景详解及git stash、git branch、git分支关联等)
  17. 利用pdfbox和itext包将pdf转换为图片
  18. 身体健康是第一生产力 --- 我看央视主持人李咏早逝
  19. SPI和IIC异同点
  20. 作为应届大学生的我和准职业人的差距

热门文章

  1. 除了神经网络其他的智能算法,人工神经网络算法与机器算法
  2. EIM是什么?与QQ有什么区别?
  3. 关于自动驾驶高精定位的几大问题
  4. J-LINK的VCC还是TVCC?
  5. 服务器信号满格但上不了网,新版tplink路由器wifi信号满格上不了网怎么办?
  6. 新中新身份证读卡器开发问题
  7. 太阳黄经和平黄经的计算方法
  8. git clone出现 fatal: unable to access 'https://github.com/...'的解决办法(亲测有效)
  9. 「解析」Self-Attention 关键点
  10. [Java] Node和Entry