明解C语言 入门篇 第四章答案

  • 2019 年 11 月 7 日
  • 筆記

 

练习4-1

 #include <stdio.h>     int main(void)   {       int no;       int x;         do{      printf("请输入一个整数:");       scanf("%d", &no);         if (no == 0)           puts("该整数为0。");       else if (no > 0)           puts("该整数为正数。");       else          puts("该整数为负数。");         printf("要重复一次吗?【yes···0/No···9】:");       scanf("%d", &x);       } while (x == 0);       }

练习4-2

 1 #include <stdio.h>   2 int main()   3 {   4     int a;   5     int b;   6     int sum = 0;   7     int x;   8   9     puts("请输入两个整数。");  10     printf("整数a:"); scanf("%d", &a);  11     printf("整数b:"); scanf("%d", &b);  12     x=a;  13  14     do {  15         sum+=x;  16         x--;  17     } while (x!=b-1);  18  19     printf("大于等于%d小于等于%d的所有整数的和是%d",b,a,sum);  20  21  22     return 0;  23 }

练习4-3

 1 /*   2     从输入的整数开始倒数到0   3 */   4   5 #include <stdio.h>   6   7 int main(void)   8 {   9     int no;  10  11     printf("请输入一个正整数:");  12     scanf("%d", &no);  13  14     while (no >= 0) {  15         printf("%d ", no);  16         no--;  17     }  18     if (no == -1) {  19         printf("n");  20     }  21  22  23     return 0;  24 }

练习4-4

 1 /*   2     从输入的整数开始倒数到0   3 */   4   5 #include <stdio.h>   6   7 int main(void)   8 {   9     int no;  10  11     printf("请输入一个正整数:");  12     scanf("%d", &no);  13  14     while (no > 0)  15         printf("%d ", no--);    /* no的值在显示之后递减 */  16     if (no == 0) {  17         printf("n");  18     }                /* 换行 */  19  20     return 0;  21 }

练习4-5

 1 /*   2     递增显示从0到输入的正整数为止的各个整数   3 */   4   5 #include <stdio.h>   6   7 int main(void)   8 {   9     int i, no;  10  11     printf("请输入一个正整数:");  12     scanf("%d", &no);  13  14     i = 1;  15     while (i <= no)  16         printf("%d ", i++);        /* i的值在显示之后递增 */  17     if (no >= 0) {  18         printf("n");  19     }                /* 换行 */  20  21     return 0;  22 }

练习4-6

 1 #include <stdio.h>   2   3 int main(void)   4 {   5     int no;   6     int i;   7   8     printf("请输入一个正整数:");   9     scanf("%d", &no);  10  11     i = 0;  12     while (i < no) {  13         if ((i % 2)==0) {  14             printf("%d ", i);  15         }  16         i++;  17     }  18  19  20     return 0;  21 }

练习4-7

 1 #include <stdio.h>   2 int main(void)   3 {   4     int n1, n2;   5   6     printf("请输入一个整数:");   7     scanf("%d", &n1);   8   9     n2 = 2;  10     while (n2 < n1) {  11         printf("%d ", n2);  12         n2 *= 2;  13     }  14     putchar('n');  15  16     return 0;  17 }

练习4-8

 1 /*   2     输入一个整数,连续显示出该整数个*   3 */   4   5 #include <stdio.h>   6   7         int main(void)   8         {   9             int no;  10  11             printf("正整数");  12             scanf("%d", &no);  13  14             while (no-- > 0) {  15                 putchar('*');  16             }  17             if (no == -1)  18                 putchar('n');  19  20             return 0;  21         }

 

练习4-9

 1 #include <stdio.h>   2 int main(void)   3 {   4     int no;   5     printf("正整数:");   6     scanf("%d", &no);   7     int i;   8     i = 0;   9     while (i < no) {  10         if (no %2 )  11         {  12             printf("+");  13         }  14         else  15         {  16             printf("-");  17         }  18         no--;  19     }  20  21     return 0;  22 }

练习4-10

 1 #include <stdio.h>   2   3         int main(void)   4         {   5             int no;   6             printf("正整数:");   7             scanf("%d", &no);   8             while (no-- > 0) {   9                 putchar('*');  10                 putchar('n');  11             }  12                 return 0;  13  14         }

练习4-11

 1 /*   2     逆向显示正整数   3 */   4   5 #include <stdio.h>   6   7 int main(void)   8 {   9     int no;  10  11     do {  12         printf("请输入一个正整数:");  13         scanf("%d", &no);  14         if (no <= 0)  15             puts("a请不要输入非正整数。");  16     } while (no <= 0);  17     int  x = no;  18  19     printf("%d逆向显示的结果是",x);  20     while (no > 0) {  21         printf("%d",no % 10);        /* 显示最后一位数 */  22         no /= 10;                    /* 右移一位 */  23     }  24     puts("");  25  26     return 0;  27 }

练习4-12

 1 #include <stdio.h>   2   3 int main(void)   4 {   5     int no;   6     int x;   7     int i;   8     i = 0;   9         printf("请输入一个正整数:");  10         scanf("%d", &no);  11         x = no;  12         while (no>0)  13         {  14             no/=10;  15             i++;  16  17         }  18         printf("%d的位数是%d", x,i);  19     return 0;  20 }

练习4-13

 1 #include <stdio.h>   2   3 int main(void)   4 {   5     int n;   6     int i;   7     int sum;   8     sum = 0;   9     printf("n的值:");  10     scanf("%d", &n);  11     for (i = 0; i <= n; i++) {  12         sum += i;  13     }  14     printf("1到%d的和为%d", i-1, sum);  15  16 }

练习4-14

 1 #include <stdio.h>   2   3 int main(void)   4 {   5     int no;   6     int i;   7     printf("请输入一个整数:");   8     scanf("%d", &no);   9     for (i = 1; i <=no; i++) {  10         printf("%d",i%10);  11  12     }  13  14 }

练习4-15

 1 #include <stdio.h>   2   3 int main(void)   4 {   5     int begin;   6     int final;   7     int interval;   8     int i;   9     printf("开始数值(cm):");  10         scanf("%d", &begin);  11         printf("结束数值(cm):");  12         scanf("%d", &final);  13         printf("间隔数值(cm):");  14         scanf("%d", &interval);  15         int x;  16         x = begin;  17  18         for (i = 0; i <=(final - x) / interval; i++) {  19             printf("%dcmt%.2fkg", begin, (begin - 100) * 0.9);  20             putchar('n');  21             begin += interval;  22         }  23 }

练习4-16

 1 #include <stdio.h>   2   3 int main(void)   4 {   5     int no;   6     int i;   7     printf("整数值:");   8     scanf("%d", &no);   9     putchar('n');  10     for (i = 1; i <=no; i += 2) {  11         printf("%d ", i);  12     }  13 }

练习4-17

 1 #include <stdio.h>   2   3 int main(void)   4 {   5     int n;   6     printf("n的值是:");   7         scanf("%d",&n);   8         int i;   9         for (i = 1; i <= n; i++) {  10             printf("%d的二次方是%d",i,i*i);  11             putchar('n');  12  13         }  14 }

练习4-18

 1 #include <stdio.h>   2   3 int main(void)   4 {   5     int n;   6     printf("显示多少个*:");   7         scanf("%d",&n);   8         int i;   9         for (i = 1; i <= n; i++) {  10             putchar('*');  11             if (i % 5 == 0) {  12                 putchar('n');  13             }  14  15         }  16 }

练习4-19

 1 #include <stdio.h>   2   3 int main(void)   4 {   5     int i, n;   6     int m;   7     m = 0;   8   9     printf("整数值:");  10     scanf("%d", &n);  11  12     for (i = 1; i <= n; i++)  13         if (n % i == 0) {  14             printf("%d ", i);  15             putchar('n');  16             m++;  17         }  18     printf("约数有%d个。", m);  19     return 0;  20 }

练习4-20 

#include <stdio.h>    int main(void)  {      int i, j;      printf(" |");      for (i = 1; i < 10; i++) {          printf("%3d", i);      }      putchar('n');      for (i = 1; i < 30; 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');          }  }

 

练习4-21

#include <stdio.h>    int main(void)  {      int height;      int i, j;      printf("生成一个正方形n");      printf("正方形有几层:");      scanf("%d", &height);      for (i = 0; i < height; i++) {            for (j = 0; j < height; j++) {              putchar('*');            }          putchar('n');      }  }

练习4-22

 

#include <stdio.h>    int main(void)  {      int a,b;      int i, j;      int height;      int length;      printf("让我们画一个长方形n");      printf("一边:");      scanf("%d", &a);      printf("另一边:");      scanf("%d", &b);      length = (a > b) ? a : b;      height = (a < b) ? a : b;      for (i = 0; i < height; i++) {            for (j = 0; j < length; j++) {              putchar('*');            }          putchar('n');      }  }

练习4-23

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

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

练习4-24

#include <stdio.h>    int main(void)  {      int i, j, len;        puts("让我们来画一个金字塔。");      printf("金字塔有几层:");      scanf("%d", &len);        for (i = 1; i <= len; i++) {          for (j = 0; j<len-i; j++) {              putchar(' ');          }          for (j = 0; j < ((i - 1) * 2 + 1); j++)          {              putchar('*');            }          putchar('n');      }        return 0;  }

练习4-25

#include <stdio.h>    int main(void)  {      int i;      int j;      int len;      puts("让我们来画一个向下的金字塔");      printf("金字塔有几层:");      scanf("%d", &len);      for (i = 1; i <= len; i++) {          for (j = 0; j < i - 1; j++)          {              putchar(' ');          }          for (j = 0; j < (len - i) * 2 + 1; j++) {              printf("%d", i%10);          }          for (j=0; j <i-1; j++)          {              putchar(' ');          }          putchar('n');         }    }