• 《明解C语言》第三版 (入门篇) 第六章练习答案


    个别练习的解题方法很多本答案不是唯一答案

    练习6-1

    1. int main()//6-1(1)
    2. {
    3. int a, b, c, min;
    4. scanf("%d%d", &a, &b);
    5. min = a<b?a:b;
    6. printf("最小值 = %d", min);
    7. return 0;
    8. }
    9. 方法二
    10. int add(int x,int y)//6-1(2)
    11. {
    12. int min=0;
    13. if(x>y) min = y;
    14. if(y>x) min = x;
    15. printf("min=%d",min);
    16. return min;
    17. }
    18. int main()
    19. {
    20. int a=4;
    21. int b=6;
    22. add(a,b);
    23. return 0;
    24. }

    练习6-2 

    1. int add(int a,int b,int c)//6-2(1)
    2. {
    3. int min;
    4. if (a < b) {
    5. if (a < c) {
    6. min = a;
    7. } else {
    8. min = c;
    9. }
    10. } else {
    11. if (b < c) {
    12. min = b;
    13. } else {
    14. min = c;
    15. }
    16. }
    17. printf("最小的数是 %d\n", min);
    18. }
    19. int main()
    20. {
    21. int a, b, c;
    22. printf("请输入三个整数:\n");
    23. scanf("%d%d%d", &a, &b, &c);
    24. add(a,b,c);
    25. return 0;
    26. }
    27. 方法二
    28. int add(int x,int y,int z)//6-2(2)
    29. {
    30. int min = x; //假设x为最小数
    31. if (y<min) min = y;
    32. if (z<min) min = z;
    33. printf("最小数是:%d\n", min);
    34. }
    35. int main()
    36. {
    37. int x, y ,z;
    38. scanf("%d%d%d", &x, &y, &z);
    39. add(x, y ,z);
    40. return 0;
    41. }

    练习6-3

    1. int cube(int x){//6-3
    2. return x*x*x;
    3. }
    4. int main(void)
    5. {
    6. int a;
    7. scanf("%d",&a);
    8. printf("%d的立方为:%d",a,cube(a));
    9. return 0;
    10. }

    练习6-4 

    1. int sqr(int x)//6-4(1)
    2. {
    3. return x * x;
    4. }
    5. int pow4(int x)
    6. {
    7. return sqr(x)*sqr(x);
    8. }
    9. int main(void)
    10. {
    11. int x;
    12. printf("整数x:");
    13. scanf("%d", &x);
    14. printf("x的四次幂是%d。\n", pow4(x));
    15. return 0;
    16. }
    17. 方法2
    18. int sqr(int x) {//6-4(2)
    19. return x * x ; //求一个数的平方
    20. }
    21. int main(void) {
    22. int x;
    23. printf("请输入一个数:");
    24. scanf("%d", &x);
    25. printf("它的四次幂是%d", sqr(sqr(x)));
    26. return 0;
    27. }

    练习6-5

    1. int sumup(int n) {//6-5(1)
    2. int sum = 0;
    3. while (n-->0)
    4. {
    5. sum += n;
    6. }
    7. return sum;
    8. }
    9. int main()
    10. {
    11. int x;
    12. printf("请输入一个数:");
    13. scanf("%d", &x);
    14. printf("从1到%d之间所有整数的和是%d",x, sumup(x));
    15. return 0;
    16. }
    17. 方法2
    18. int sumup(int n)//6-5(2)
    19. {
    20. int i;
    21. int sum = 0;
    22. for (i = 1; i <= n; i++)
    23. sum += i;
    24. return sum;
    25. }
    26. int main(void)
    27. {
    28. int a;
    29. printf("请输入一个正整数:");
    30. do {
    31. scanf_s("%d", &a);
    32. if (a < 1)
    33. printf("请不要输入小于1的整数。");
    34. } while (a < 1);
    35. printf("从1到%d之间所有的整数的和为%d。\n", a, sumup(a));
    36. return 0;
    37. }

    练习6-6 

    1. void alert(int n) {//6-6(1)
    2. while (n-- > 0)
    3. {
    4. putchar('\a');
    5. }
    6. }
    7. int main()
    8. {
    9. int x;
    10. printf("请输入要发出响铃的次数:");
    11. scanf("%d", &x);
    12. alert (x);
    13. return 0;
    14. }
    15. 方法2
    16. void alert(int n)//6-6(2)
    17. {
    18. int i;
    19. for (i = 0; i < n; i++)
    20. {
    21. printf("\a");
    22. }
    23. return;
    24. }
    25. int main(void)
    26. {
    27. int n;
    28. printf("整数n:");
    29. scanf("%d", &n);
    30. printf("连续发出%d次响铃。\n",n);
    31. alert(n);
    32. return 0;
    33. }

    练习6-7

    1. void hello(void)
    2. {
    3. puts("你好。");
    4. }
    5. int main(void)
    6. {
    7. hello();
    8. return 0;
    9. }

     练习6-8

    1. int min_of(const int v[], int n)
    2. {
    3. int min;
    4. int i;
    5. min = v[0];
    6. for (i = 1; i < n; i++)
    7. {
    8. if (v[i] < min)
    9. min = v[i];
    10. }
    11. return min;
    12. }
    13. int main(void)
    14. {
    15. int min;
    16. int v[4] = {19,63,34,76};
    17. min = min_of(v,4);
    18. printf("min = %d\n",min);
    19. return 0;
    20. }
    21. 方法二
    22. #define NUMBER 5 // 学生人数
    23. //--- 返回元素个数为n的数组v中的最小值
    24. int min_of(const int v[], int n)
    25. {
    26. int i;
    27. int min = v[0];
    28. for (i = 1; i < n; i++){
    29. if (v[i] < min){
    30. min = v[i];
    31. }
    32. }
    33. return min;
    34. }
    35. int main(void)
    36. {
    37. int i;
    38. int eng[NUMBER];
    39. int min_e;
    40. printf("请输入%d名学生的分数。\n", NUMBER);
    41. for (i = 0; i < NUMBER; i++) {
    42. printf("[%d]英语:", i + 1);
    43. scanf("%d", &eng[i]);
    44. }
    45. min_e = min_of(eng, NUMBER); /* 英语的最低分 */
    46. printf("英语的最低分=%d\n", min_e);
    47. return 0;
    48. }

    练习6-9

    1. void daoxu(int v[], int n)//不可以用const int v[]
    2. {
    3. int tmp;
    4. int i;
    5. for(i=0;i<n/2;i++)
    6. {
    7. tmp=v[i];
    8. v[i]=v[n-1-i];
    9. v[n-1-i]=tmp;
    10. }
    11. }
    12. int main()
    13. {
    14. int i;
    15. int v[4] = {1,2,3,4};
    16. daoxu(v,4);
    17. for (i = 0; i < 4; i++)
    18. {
    19. printf("v[%d] = %d\n",i,v[i]);
    20. }
    21. return 0;
    22. }

     练习6-10 

    1. void intary_rcpy(int v1[], const int v2[], int n)
    2. {
    3. int i;
    4. for(i=0;i<n;i++)
    5. {
    6. v1[i]=v2[n-i-1];//减一才能获取v1[0]
    7. }
    8. }
    9. int main()
    10. {
    11. int i;
    12. int x[number];
    13. int y[number];
    14. for (i = 0; i < number; i++) {
    15. printf("x[%d] : ", i);
    16. scanf("%d", &x[i]);
    17. }
    18. intary_rcpy(y, x, number);
    19. puts("倒序:");
    20. for (i = 0; i < number; i++){
    21. printf("y[%d] = %d\n", i, y[i]);
    22. }
    23. return 0;
    24. }

    练习6-11

    1. #define NUMBER 5
    2. int search_idx(const int v[], int idx[], int key, int n)
    3. {
    4. int i=0;
    5. int j=0;
    6. for(i=0;i<n;i++)
    7. {
    8. if(v[i] == key){
    9. j++;
    10. }
    11. idx[j] = v[i];
    12. }
    13. return j;
    14. }
    15. int main()
    16. {
    17. int arr1[NUMBER];
    18. int arr2[NUMBER + 1];
    19. int i;
    20. int key;
    21. printf("要找的:");
    22. scanf("%d",&key);
    23. for(i=0;i<NUMBER;i++)
    24. {
    25. printf("v[%d]=",i);
    26. scanf("%d",&arr1[i]);
    27. }
    28. int tmp = search_idx(arr1,arr2,key,NUMBER);
    29. printf("有%d个相同的元素",tmp);
    30. return 0;
    31. }

     练习6-12

    1. int main()
    2. {
    3. int a[4][3];
    4. int b[3][4];
    5. int i, j, k, x, y, c[3][3];
    6. printf("输入4*3 个数 :\n");
    7. for (i = 0; i < 4; i++)
    8. {
    9. for (k = 0; k < 3; k++)
    10. {
    11. scanf("%d", &a[i][k]);
    12. }
    13. }
    14. printf("输入3*4 个数 :\n");
    15. for (i = 0; i < 3; i++)
    16. {
    17. for (k = 0; k < 4; k++)
    18. {
    19. scanf("%d", &b[i][k]);
    20. }
    21. }
    22. mat_mul(a, b, c);
    23. for (x = 0; x < 3; x++)
    24. {
    25. for (y = 0; y < 3; y++)
    26. {
    27. printf("%d\t", c[x][y]);
    28. }
    29. printf("\n");
    30. }
    31. return 0;
    32. }

     练习6-13

    1. /*--- 将43列矩阵a和b的和存储在c中 ---*/
    2. void mat_add(const int a[4][3], const int b[4][3], int c[2][4][3])
    3. {
    4. int x, y, z;
    5. for (x = 0; x < 2; x++)
    6. for (y = 0; y < 4; y++)
    7. for (z = 0; z < 3; z++) {
    8. c[x][y][z] = a[y][z] + b[y][z];
    9. }
    10. }
    11. /*--- 显示43列矩阵m ---*/
    12. void mat_print(const int m[4][3])
    13. {
    14. int i, j;
    15. for (i = 0; i < 4; i++) {
    16. for (j = 0; j < 3; j++)
    17. printf("%4d", m[i][j]);
    18. putchar('\n');
    19. }
    20. }
    21. int main(void)
    22. {
    23. int tensu1[4][3] = { {91, 63, 78}, {67, 72, 46}, {89, 34, 53}, {32, 54, 34} };
    24. int tensu2[4][3] = { {97, 67, 82}, {73, 43, 46}, {97, 56, 21}, {85, 46, 35} };
    25. int sum[2][4][3]; /* 总分 */
    26. mat_add(tensu1, tensu2, sum); /* 求两次考试中成绩的总和 */
    27. puts("第一次考试的分数"); mat_print(tensu1); /* 显示第一次考试的分数 */
    28. puts("第二次考试的分数"); mat_print(tensu2); /* 显示第二次考试的分数 */
    29. puts("总分"); mat_print(sum); /* 显示总分 */
    30. return 0;
    31. }

    练习6-14

    1. int main(void)
    2. {
    3. int i;
    4. static double a[5];
    5. for (i = 0; i < 5; i++)
    6. {
    7. printf("a[%d] = %.1f\n",i,a[i]);
    8. }
    9. return 0;
    10. }

     练习6-15

    1. static int n;
    2. void put_count(void)
    3. {
    4. return n++;
    5. }
    6. int main(void)
    7. {
    8. put_count();
    9. printf("put_count:第%d次\n",n);
    10. put_count();
    11. printf("put_count:第%d次\n", n);
    12. put_count();
    13. printf("put_count:第%d次\n", n);
    14. return 0;
    15. }

  • 相关阅读:
    小县城蔬菜配送小程序制作全攻略
    【Spring】20 解析Spring注解驱动的容器配置
    STM32 HAL库 利用CH376进行USB文件读写
    AutoCAD Electrical 2022—项目特性
    阿里云 ACK@Edge 助力元戎启行加速进入自动驾驶规模化生产
    如何将当前文件夹里的所有python文件打包到镜像里面
    sql函数实现模糊精确匹配
    day006--自连接,自然连接及using关键字的使用
    RocketMQ如何实现消息的顺序性
    为python安装opencv
  • 原文地址:https://blog.csdn.net/Good_go/article/details/134504812