• C语言成长学习题(十二)


    五十一、将从键盘输入的一个数,插入到已按降序排列的数组中,要求按原来的排序规律插入。

     1 #include <stdio.h>
     2 
     3 void main(void)
     4 {
     5     int i, j = 0, k, a[11] = {20, 18, 16, 14, 12, 10, 8, 6, 4, 2};
     6 
     7     for (i = 0; i < 10; i++)
     8         printf("%4d", a[i]);
     9     printf("
    ");
    10 
    11     printf("Input k: ");
    12     scanf("%d", &k);
    13     while (a[j] >= k && j < 10)
    14         j++;
    15     for (i = 10; i >= j + 1; i--)
    16         a[i] = a[i-1];
    17     a[j] = k;
    18     for (i = 0; j < 11; j++)
    19         printf("%4d", a[i]);
    20     printf("
    ");
    21 }

     结果:

    20  18  16  14  12  10  8   6   4   2
    Input k: 15

    20  18  16  15  14  12  10  8   6   4   2

      while后的表达式a[j] >k && j < 10不能只写出a[j] > k,因为结束while循环的条件有两个:当找出第一个比k小的元素或者找不到比k小的元素。

    五十二、投掷100次骰子,统计各点数出现的次数。

     1 #include <stdio.h>
     2 #include <time.h>    //调用randomize()时需要此头文件
     3 #include <stdlib.h>    //调用randomize()或random()时需要此头文件
     4 
     5 void main(void)
     6 {
     7     int i, n, a[7] = {0, 0, 0, 0, 0, 0, 0};
     8 
     9     randomize();
    10     for (i = 1; i <= 100; i++)
    11     {
    12         n = random(6) + 1;
    13         a[n] = a[n] + 1;
    14     }
    15     printf("    出现1点    出现2点    出现3点    出现4点    出现5点    出现6点
    ");
    16     for (i = 1; i <= 6; i++)
    17         printf("%8d", a[i]);
    18     printf("
    ");
    19 }

      randomize()能够保证每次运行时产生的随机数不同,random(k)是随机产生大于等于0,且小于k的整数。

    五十三、编程实现用数组的方法找出2~100以内所有素数。

     1 #include <stdio.h>
     2 
     3 void main(void)
     4 {
     5     int i, j, a[100] = {0};
     6 
     7     for (i = 2; i < 100; i++)
     8         if(a[i] == 1)
     9             continue;
    10         else
    11             for (j = i + i; i < 100; j = j + i)
    12                 if (a[j] != 1)
    13                     a[j] = 1;
    14     
    15     for( i = 2; i < 100; i++)
    16         if (a[i] == 0)
    17             printf("%3d", i);
    18     printf("
    ");
    19 }

    结果:

    2  3  5  7  11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

    五十四、编写程序将字符串存放在一维字符组中。

     1 #include <stdio.h>
     2 
     3 void main(void)
     4 {
     5     int i = 0;
     6     char a[] = "K"                    //等价于char a[] = {'K', '');
     7     char b[] = {"Sit down"};    //等价于char b[9] = "Sit down";
     8 
     9     while ( a[i] != '')
    10         putchar(a[i++]);
    11     printf("
    ");
    12     i = 0;
    13     while (b[i] != '')
    14         putchar(b[i++]);
    15     printf("
    ");
    16 }

    结果:

    K

    Sit down

    Mark:

      "K"和'K'不同,“K”是字符串,占两个字节,而‘K'是字符常亮,占一个字节。“”和’ '也不同,“”是空串,占一个字节,存放'',’ ‘是字符常亮,也占一个字节,“”的ASCII码值为0,空格的ASCII码值为32。

      用gets函数输入字符串时,只有遇到回车符才认为字符串输出结束;而用scanf函数输入时,遇到空格、跳格符或回车符,都认为字符串输入结束。

    五十五、输入一个字符串,统计其中单词个数,单词之间用空格隔开。

     1 #include <stdio.h>
     2 
     3 void main(void)
     4 {
     5     char a[80];
     6     int i = 0, count = 0;
     7 
     8     gets(a);
     9     while (a[i] ==' ')
    10         i++;
    11     if (a[i] !='')
    12         count++;
    13     while (a[i] != '')
    14     {
    15         if (a[i] == ' ' && a[i+1] != ' ' && a[i+1] != '')
    16             count++;
    17         i++;
    18     }
    19     printf("%s : %d words.
    ", a, count);
    20 }

    结果:

      I am OK

      I am OK : 3 words.

  • 相关阅读:
    201671010145 20162017 《Java程序设计》java的继承中什么叫方法覆盖,是如何实现的?
    201671010145 20162017《Java程序设计》Java接口的功能
    Java与C语言的区别
    201671010145 201620173《Java程序设计》Java中类与对象的区别
    Java 加密算法
    Java 基础
    Java 新建线程时使用线程池处理
    sublime text 3安装
    C语言的基本数据类型
    有点跑题的随笔
  • 原文地址:https://www.cnblogs.com/zero-jh/p/5026214.html
Copyright © 2020-2023  润新知