《明解C语言》示例代码和练习代码[第4章]

来源:互联网 发布:java编程思想pdf 编辑:程序博客网 时间:2024/06/15 01:55

第4章 程序的循环控制


示例代码:


示例代码 4-1

/*    输入的整数是奇数还是偶数呢(按照自己的意愿进行循环操作) */#include <stdio.h>int main(void){    int cont;                                        // 要继续吗         do {        int no;            printf("请输入一个整数:");        scanf("%d", &no);            if (no % 2)            puts("该整数是奇数。");           else            puts("该整数是偶数。");                    printf("要重复一次吗?【Yes...0 / No...9】:");        scanf("%d", &cont);    } while (cont == 0);     return (0);}

示例代码 4-2

/*    逆向显示输入的非负整数  */#include <stdio.h>int main(void){    int num;        do {        printf("请输入一个非负整数:");        scanf("%d", &num);        if (num < 0)            puts("请不要输入负整数。");       } while (num < 0);                                                    // 当num大于等于0的时候     printf("该整数的逆向显示的结果是");    do {        printf("%d", num % 10);                     // 显示最后一位         num = num / 10;                             // 右移一位     } while (num > 0);        puts("。");       return (0);  }

示例代码 4-3

/*    计算输入的非负整数的位数 */#include <stdio.h>int main(void){    int num;    int dig;                                        // 位数         do {        printf("请输入一个非负整数:");        scanf("%d", &num);        if (num < 0)            puts("请不要输入负整数。");       } while (num < 0);                                                    // 当num大于等于0的时候     dig = 0;    do {        num = num / 10;                             // 右移一位         dig = dig + 1;     } while (num > 0);    printf("该整数的位数是%d。\n", dig);    return (0);  }

示例代码 4-4

/*    计算并显示从1到5的和 */#include <stdio.h>int main(void){    int no = 1;     int sum = 0;         do {        sum = sum + no;        no = no + 1;       } while (no <= 5);        printf("1到5的合计值是%d。\n", sum);        return (0);  }

示例代码 4-5

/*    计算并显示从1到5的和 (使用复合赋值运算符) */#include <stdio.h>int main(void){    int no = 1;     int sum = 0;         do {        sum += no;        no += 1;       } while (no <= 5);        printf("1到5的合计值是%d。\n", sum);        return (0);  }

示例代码 4-6

/*    计算并显示从1到5的和 (使用复合赋值运算符和后置递增运算符) */#include <stdio.h>int main(void){    int no = 1;     int sum = 0;         do {        sum += no;        no++;       } while (no <= 5);        printf("1到5的合计值是%d。\n", sum);        return (0);  }

示例代码 4-7

/*    从输入整数开始倒数到0 */#include <stdio.h>int main(void){    int no;        printf("请输入一个整数:");     scanf("%d", &no);        while (no >= 0) {        printf("%d ", no);        no--;                       // no的值递减(减少1)     }      putchar('\n');                  // 换行        return (0); }

示例代码 4-8

/*    从输入整数开始倒数到0 (第二版) */#include <stdio.h>int main(void){    int no;        printf("请输入一个整数:");     scanf("%d", &no);        while (no >= 0)        printf("%d ", no--);        // no的值在显示之后递减             putchar('\n');            return (0); }

示例代码 4-9

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

示例代码 4-10

/*    输入一个整数,连续显示出该整数个* */ #include <stdio.h>int main(void){    int no;        printf("请输入一个正整数:");    scanf("%d", &no);        while (no-- > 0)        putchar('*');    putchar('\n');        return (0);    }

示例代码 4-11

/*    输入规定个整数并显示出它们的合计值和平均值 */#include <stdio.h>int main(void){    int i = 0;    int sum = 0;    int num, tmp;        printf("要输入多少个整数:");     scanf("%d", &num);        while (i < num) {        printf("No.%d: ", ++i);        scanf("%d", &tmp);        sum += tmp;    }           printf("合计值:%d\n", sum);    printf("平均值:%.2f\n", (double)sum / num);        return (0);}

示例代码 4-12

/*    从0递增显示到输入的正整数位止(使用for语句) */#include <stdio.h>int main(void){    int i, no;        printf("请输入一个正整数:");    scanf("%d", &no);        for (i = 0; i <= no; i++)        printf("%d ", i);    putchar('\n');        return (0);    }

示例代码 4-13

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

示例代码 4-14

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

示例代码 4-15

/*    显示九九乘法表 */#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);   }

示例代码 4-16

/*     输入一个非负整数,连续显示出该非负整数个*(循环次数可任意指定) */#include <stdio.h>int main(void){    int cont;        do {        int num, i;                do {            printf("请输入一个非负整数:");            scanf("%d", &num);            if (num < 0)                puts("\a请不要输入负整数。");        } while (num < 0);                                             // num的值大于等于0         for (i = 1; i <= num; i++)            putchar('*');        putchar('\n');                printf("是否继续执行?【Yes...0/No...9】:");        scanf("%d", &cont);     } while (!cont);        return (0);}

示例代码 4-17

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

示例代码 4-18

/*    显示一个直角在左下方的直角三角形 */ #include <stdio.h>int main(void){    int i, j, ln;        printf("三角形有几层:");    scanf("%d", &ln);         for (i = 1; i <= ln; i++) {      // i行(i=1,2,...,ln)         for (j = 1; j <= i; j++)     // 显示i个*             putchar('*');        putchar('\n');               // 换行     }           return (0);}

示例代码 4-19

/*    显示一个直角在右下方的直角三角形 */ #include <stdio.h>int main(void){    int i, j, ln;        printf("三角形有几层:");    scanf("%d", &ln); /*        for (i = 1; i <= ln; i++) {              for (j = 1; j <= ln; j++) {                 if (j <= ln - i)                putchar(' ');            else                putchar('*');        }        putchar('\n');                  }   */    for (i = 1; i <= ln; i++) {             // i行(i = 1, 2,...,ln)         for (j = 1; j <= ln - 1; j++)       // 显示ln - i 个空格            putchar(' ');                           for (j = 1; j <= i; j++)            // 显示i个*             putchar('*');        putchar('\n');                      // 换行     }     return (0);}


练习代码 :


练习代码 e4-1

/*    逆向显示输入的非负整数  */#include int main(void){    int num;        do {        printf("请输入一个非负整数:");        scanf("%d", &num);        if (num < 0)            puts("请不要输入负整数。");       } while (num < 0);                                                    // 当num大于等于0的时候     printf("%d逆向显示的结果是", num);    do {        printf("%d", num % 10);                     // 显示最后一位         num = num / 10;                             // 右移一位     } while (num > 0);        puts("。");        system("pause");    return (0);  }

练习代码 e4-2

/*    计算输入的非负整数的位数 */#include int main(void){    int num;    int dig;                                        // 位数         do {        printf("请输入一个非负整数:");        scanf("%d", &num);        if (num < 0)            puts("请不要输入负整数。");       } while (num < 0);        printf("%d", num);                                                    // 当num大于等于0的时候     dig = 0;    do {        num = num / 10;                             // 右移一位         dig = dig + 1;     } while (num > 0);    printf("的位数是%d。\n", dig);        system("pause");    return (0);  }

练习代码 e4-3

/*    输入两个整数,计算出它们之间所有整数的和 */#include int main(void){    int n1, n2, temp;    int sum = 0;        puts("请输入两个整数:");    printf("整数1:");    scanf("%d", &n1);    printf("整数2:");    scanf("%d", &n2);        printf("大于等于%d小于等于%d的所有整数的和是", n1, n2);        if (n1 > n2 ) {        temp = n1;        n1 = n2;        n2 = temp;              }        do {        sum = sum + n1;        n1 = n1 + 1;    } while (n1 <= n2);        printf("%d。\n", sum);        system("pause");    return (0);}

练习代码 e4-4

/*    逆向显示输入的非负整数 (使用复合赋值运算符)*/#include int main(void){    int num;        do {        printf("请输入一个非负整数:");        scanf("%d", &num);        if (num < 0)            puts("请不要输入负整数。");       } while (num < 0);                                                    // 当num大于等于0的时候     printf("该整数的逆向显示的结果是");    do {        printf("%d", num % 10);                     // 显示最后一位         num /= 10;                             // 右移一位     } while (num > 0);        puts("。");        system("pause");    return (0);  }

练习代码 e4-5

/*    计算输入的非负整数的位数 */#include int main(void){    int num;    int dig;                                        // 位数         do {        printf("请输入一个非负整数:");        scanf("%d", &num);        if (num < 0)            puts("请不要输入负整数。");       } while (num < 0);                                                    // 当num大于等于0的时候     dig = 0;    do {        num /= 10;                             // 右移一位         dig++;     } while (num > 0);    printf("该整数的位数是%d。\n", dig);        system("pause");    return (0);  }

练习代码 e4-6

/*    从输入整数开始倒数到0 (输入负数时不执行换行操作) */#include int main(void){    int no;        printf("请输入一个整数:");     scanf("%d", &no);        while (no >= 0) {        printf("%d ", no);        no--;                       // no的值递减(减少1)        if (no < 0)    putchar('\n');     }          system("pause");    return (0); }

练习代码 e4-7

/*    从输入整数开始倒数到1  */#include int main(void){    int no;        printf("请输入一个整数:");     scanf("%d", &no);        while (no > 0)        printf("%d ", no--);        // no的值在显示之后递减             putchar('\n');            system("pause");    return (0); }

练习代码 e4-8

/*    递增显示从1到输入的正整数为止的各个整数 (输入小于0时不换行) */ #include int main(void){    int i, no;        printf("请输入一个正整数:");    scanf("%d", &no);        i = 1;    while (i <= no)        printf("%d ", i++);                 // i的值在显示之后递增         if (no >= 0)        putchar('\n');        system("pause");    return (0);   }

练习代码 e4-9

/*    递增显示小于输入的正整数的所有偶数 */ #include int main(void){    int i, no;        printf("请输入一个正整数:");    scanf("%d", &no);        i = 2;    while (i < no) {        printf("%d ", i);                 // i的值在显示之后递增2         i += 2;    }        if (no >= 0)        putchar('\n');        system("pause");    return (0);   }

练习代码 e4-10

/*    递增显示小于输入的正整数的所有偶2的乘方数 */ #include int main(void){    int i, no;        printf("请输入一个正整数:");    scanf("%d", &no);        i = 2;    while (i < no) {        printf("%d ", i);                        i *= 2;    }        if (no >= 0)        putchar('\n');        system("pause");    return (0);   }

练习代码 e4-11

/*    输入一个整数,连续纵向显示出该整数个* */ #include int main(void){    int no;        printf("请输入一个整数:");    scanf("%d", &no);        while (no-- > 0) {        putchar('*');        putchar('\n');    }        system("pause");    return (0);    }

练习代码 e4-12

/*    计算并显示从1到5的和 (使用复合赋值运算符和后置递增运算符,for语句) */#include int main(void){    int i;     int sum = 0;         for (i = 1; i <= 5; i++)         sum += i;        printf("1到5的合计值是%d。\n", sum);        system("pause");    return (0);  }

练习代码 e4-13

/*    循环显示1234567890,直到输入的整数位数 */#include int main(void){    int no;    int i;        printf("请输入一个整数:");    scanf("%d", &no);        for (i = 1; i <= no; i++)        printf("%d", i % 10);    putchar('\n');        system("pause");    return (0);}

练习代码 e4-14

/*    输入身高范围,间隔值,输出身高值对应标准体重 */ #include int main(void){    int height_1, height_2;    int step;    int i;    float weight;        printf("开始数值(cm):");                  scanf("%d", &height_1);    printf("结束数值(cm):");    scanf("%d", &height_2);    printf("间隔数值(cm):");    scanf("%d", &step);        for (; height_1 <= height_2; height_1 += step)        printf("%dcm\t%.2fkg\n", height_1, (height_1 - 100) * 0.9);            system("pause");    return (0);      }

练习代码 e4-15

/*    显示九九乘法表 ,加题头和侧栏 */#include int main(void){    int i, j;        for (i = 0; i <= 9; i++) {        if (!i)    printf("  |");        else    printf("%3d", i);    }        putchar('\n');        for (i = 0; i <= 9; i++)        printf("---");        putchar('\n');        for (i = 1; i <= 9; i++) {        printf("%d |", i);        for (j = 1; j <= 9; j++)            printf("%3d", i * j);        putchar('\n');    }         system("pause");    return (0);   }

练习代码 e4-16

/*    描绘一个横向长方形 */ #include int main(void){    int i, j;    int width, height;        puts("让我们描绘一个长方形。");    printf("一边:");    scanf("%d", &width);     printf("另一边:");    scanf("%d", &height);        for (i = 1; i <= width; i++) {                 // 长方形有height行         for (j = 1; j <= height; j++)                // 显示width个*             putchar('*');                                    putchar('\n');                              // 换行     }        system("pause");    return (0);    }

练习代码 e4-17-1

/*    显示一个直角在左上方的直角三角形 */ #include int main(void){    int i, j, ln;        printf("三角形有几层:");    scanf("%d", &ln);     for (i = 1; i <= ln; i++) {                     for (j = 1; j <= ln - i + 1; j++)                   putchar('*');        putchar('\n');                          }         system("pause");    return (0);}

练习代码 e4-17-2

/*    显示一个直角在右上方的直角三角形 */ #include int main(void){    int i, j, ln;        printf("三角形有几层:");    scanf("%d", &ln);     for (i = 1; i <= ln; i++) {                     for (j = 1; j <= ln; j++)            if (j <= i - 1)                putchar(' ');            else                putchar('*');        putchar('\n');                          }         system("pause");    return (0);}

练习代码 e4-18

/*    显示一个金字塔形状 */ #include int main(void){    int i, j, ln;        puts("让我们来描绘一个金字塔。");    printf("金字塔有几层:");    scanf("%d", &ln);     for (i = 1; i <= ln; i++) {                     for (j = 1; j <= 2 * ln; j++)            if (j <= ln - i || j >= ln + i)                putchar(' ');            else                putchar('*');        putchar('\n');                          }         system("pause");    return (0);}
0 0
原创粉丝点击