已完结:C语言经典100题目(满足所有C程序基础)

06-02 119阅读

C 练习实例1 - 组无重复数字的数

题目:有 1、2、3、4 四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

程序分析:可填在百位、十位、个位的数字都是 1、2、3、4,组成所有的排列后再去掉不满足条件的排列。

#include
#define MAX 5
int main() {
    int i,j,k;
    int count = 0;
    for (int i = 1; i  

C 练习实例2 - 阶段利润提成

题目:企业发放的奖金根据利润提成。

  • 利润(I)低于或等于10万元时,奖金可提10%;
  • 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;
  • 20万到40万之间时,高于20万元的部分,可提成5%;
  • 40万到60万之间时高于40万元的部分,可提成3%;
  • 60万到100万之间时,高于60万元的部分,可提成1.5%;
  • 高于100万元时,超过100万元的部分按1%提成。

    从键盘输入当月利润I,求应发放奖金总数?

    程序分析:定义时需把奖金定义成双精度浮点(double)型。

    #include
    #define LAC 100000 //将10w定义为一个常用数
    int main() {
        double i,bonus,bonus_0_10,bonus_10_20,bonus_20_40,bonus_40_60,bonus_60_100,bonus_100_;
        //先计算好各自区间的奖金,避免重复输入公式
        bonus_0_10 = LAC * 0.1;
        bonus_10_20 = LAC * 0.075;
        bonus_20_40 = LAC * 2 * 0.05;
        bonus_40_60 = LAC * 2 * 0.03;
        bonus_60_100 = LAC * 4 * 0.015;
        printf("从键盘输入当月利润I,求应发放奖金总数:\n");
        scanf("%lf",&i);
        if(iz){
            swap(&x,&z);
        }
        else if(y>z){
            swap(&y,&z);
        }
        printf("%d %d %d",x,y,z);
    }

    C 练习实例6 - 输出字母C图案

    题目:用*号输出字母C的图案。

    程序分析:可先用'*'号在纸上写出字母C,再分行输出。

    #include
    int main() {
        printf("用 * 号输出字母 C!\n");
        printf("  ****\n");
        printf(" *\n");
        printf("*\n");
        printf(" *\n");
        printf("  ****\n");
    }

    C 练习实例7 - 特殊图案

    题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!

    程序分析:字符共有256个。不同字符,图形不一样。

    VC6.0下出现中文乱码(原因+解决方法):

    176的16进制是B0,219的16进制是DB,0xB0DB是"佰"字的内码,所以输出的就是"佰"了。

    主要原因是文件信息的代码页不同,我们所使用的操作系统中文状态下的代码页,要显示扩展的ASCII码需要在437 OEM-美国这个下面显示,这样就可以显示出你所希望的。具体修改控制台的默认代码页步骤如下:

    • 1.点击运行界面左上角标题栏图标【c:\】,选择默认值一项
    • 2.修改默认代码页,936(ANSI/OEM-简体中文GBK)为437 OEM-美国
    • 3、关闭后重新运行一下即可 
      #include
      int main()
      {
          char a=176,b=219;
          printf("%c%c%c%c%c\n",b,a,a,a,b);
          printf("%c%c%c%c%c\n",a,b,a,b,a);
          printf("%c%c%c%c%c\n",a,a,b,a,a);
          printf("%c%c%c%c%c\n",a,b,a,b,a);
          printf("%c%c%c%c%c\n",b,a,a,a,b);
          return 0;
      }

      C 练习实例8 -  9*9 乘法表

      题目:输出 9*9 口诀。

      程序分析:分行与列考虑,共 9 行 9 列,i 控制行,j 控制列。

      #include
      #define MAX 9
      int main() {
          int i,j,result;
          for (i = 1; i next = createNode(3);
          head->next->next->next = createNode(4);
          printf("Original list:\n");
          printList(head);
          printf("Reversed list:\n");
          reversePrint(head);
          // 释放链表节点
          Node* temp;
          while (head != NULL) {
              temp = head;
              head = head->next;
              free(temp);
          }
          return 0;
      }
      

      C 练习实例74 - 链接两个链表

      题目:连接两个链表。

      程序分析:无。

      #include 
      #include 
      // 定义链表节点
      typedef struct Node {
          int data;
          struct Node* next;
      } Node;
      // 连接两个链表
      void concatenateLists(Node* list1, Node* list2) {
          if (list1 == NULL) {
              list1 = list2;
              return;
          }
          Node* temp = list1;
          while (temp->next != NULL) {
              temp = temp->next;
          }
          temp->next = list2;
      }
      // 辅助函数:打印链表
      void printList(Node* head) {
          while (head != NULL) {
              printf("%d -> ", head->data);
              head = head->next;
          }
          printf("NULL\n");
      }
      // 主函数示例
      int main() {
          // 示例代码省略链表创建部分
          // 创建和连接两个链表后,可以用以下代码进行测试:
          Node* list1 = /* 创建第一个链表 */;
          Node* list2 = /* 创建第二个链表 */;
          
          concatenateLists(list1, list2);
          printList(list1); // 打印连接后的链表
          return 0;
      }
      

      C 练习实例75 - 整数反转输出

      题目:输入一个整数,并将其反转后输出。

      程序分析:无。

      #include 
      int main() {
          int num, reversed = 0, original;
          
          // 读取整数
          printf("请输入一个整数: ");
          scanf("%d", &num);
          
          original = num; // 保存原始值用于输出
          // 处理负数情况
          int is_negative = (num  
      

      C 练习实例76 - 1/2+1/4+...+1/n

      题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数)。

      程序分析:无。

      #include 
      // 函数:计算偶数和
      // 输入:n - 偶数
      // 输出:result - 指向结果的指针
      void sum_even(int n, double *result) {
          *result = 0.0; // 初始化结果为0
          // 遍历2到n之间的偶数
          for (int i = 2; i  0) {
                      strcpy(temp, strings[i]);
                      strcpy(strings[i], strings[j]);
                      strcpy(strings[j], temp);
                  }
              }
          }
          printf("排序后的字符串:\n");
          for (i = 0; i  
      

      C 练习实例80 - 猴子桃子

      题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只 猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了 一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的, 问海滩上原来最少有多少个桃子?

      程序分析:

      • 从1开始循环尝试不同的桃子数量。
      • 使用一个循环模拟五只猴子分桃子的过程。
      • 在每轮中检查当前桃子数量是否能够满足条件(即能被5分且多一个)。
      • 如果最后桃子数为0且所有条件满足,打印出结果并退出循环。
        #include 
        int main() {
            int peaches = 1; // 从1开始尝试
            while (1) {
                int temp = peaches; // 临时变量保存当前桃子数
                int valid = 1; // 标记是否有效
                for (int i = 0; i  
        

        C 练习实例81 - 求??数

        题目:809*??=800*??+9*?? 其中??代表的两位数, 809*??为四位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。

         程序分析:

        • 循环范围:程序循环遍历所有两位数(10到99)。
        • 计算结果:分别计算 809×??809 \times ??809×??、8×??8 \times ??8×?? 和 9×??9 \times ??9×??。
        • 条件检查:检查结果是否符合题目中的条件。
        • 输出结果:如果条件满足,打印出 ?????? 的值以及 809×??809 \times ??809×?? 的结果。
          #include 
          int main() {
              for (int num = 10; num = 1000 && result1 = 10 && result2 = 100 && result3  
          

           

          C 练习实例82 - 八转十进制

          题目:八进制转换为十进制

          程序分析:

            • 使用while循环迭代处理每一位八进制数。
            • 通过取余操作获取最后一位(octal % 10)。
            • 将该位乘以当前的基数(初始为1,之后每次乘以8)。
            • 更新八进制数,去掉最后一位。
            • 输出结果:最后输出转换后的十进制数。

          假设用户输入的八进制数是 17,程序将输出其对应的十进制数 15。

          #include 
          #include 
          int main() {
              long octal, decimal = 0, remainder, base = 1;
              printf("请输入一个八进制数: ");
              scanf("%lo", &octal); // 读取八进制数,使用%lo格式符
              while (octal != 0) {
                  remainder = octal % 10; // 获取八进制的最后一位
                  decimal = decimal + remainder * base; // 计算十进制值
                  octal = octal / 10; // 去掉八进制的最后一位
                  base = base * 8; // 八进制的基数为8
              }
              printf("转换后的十进制数是: %ld\n", decimal);
              return 0;
          }
          

          C 练习实例83 - 组成的奇数个数

          题目:求0—7所能组成的奇数个数。

          程序分析:

          • 首先定义一个变量 count 来统计奇数的总数。
          • 对于每种位数的情况,依次计算所有可能的组合。
          • 对于每一位数的组合,最后一位必须是奇数(4种选择),而其他位数可以从可用的数字中选择(首位不能为0)。
          • 最后输出结果。
            #include 
            int main() {
                int count = 0;
                // 1位数
                count += 4; // 1, 3, 5, 7
                // 2位数
                count += 4 * 7; // (1, 3, 5, 7) * (0, 2, 4, 6)
                // 3位数
                count += 4 * 8 * 7; // (1, 3, 5, 7) * (0-7) * (0, 2, 4, 6)
                // 4位数
                count += 4 * 8 * 8 * 7; // (1, 3, 5, 7) * (0-7) * (0-7) * (0, 2, 4, 6)
                // 5位数
                count += 4 * 8 * 8 * 8 * 7; // (1, 3, 5, 7) * (0-7) * (0-7) * (0-7) * (0, 2, 4, 6)
                // 6位数
                count += 4 * 8 * 8 * 8 * 8 * 7; // (1, 3, 5, 7) * (0-7) * (0-7) * (0-7) * (0-7) * (0, 2, 4, 6)
                // 7位数
                count += 4 * 8 * 8 * 8 * 8 * 8 * 7; // (1, 3, 5, 7) * (0-7) * (0-7) * (0-7) * (0-7) * (0-7) * (0, 2, 4, 6)
                // 8位数
                count += 4 * 8 * 8 * 8 * 8 * 8 * 8 * 7; // (1, 3, 5, 7) * (0-7) * (0-7) * (0-7) * (0-7) * (0-7) * (0-7) * (0, 2, 4, 6)
                printf("0-7所能组成的奇数个数为: %d\n", count);
                
                return 0;
            }
            

            C 练习实例84 - 哥德巴赫猜想

            题目:一个偶数总能表示为两个素数之和。

            程序分析:

            • is_prime 函数:这个函数用于检查一个数字是否为素数。它从 2 开始检查,直到该数字的平方根。
            • 主函数:
              • 提示用户输入一个偶数,并检查输入的有效性。
              • 如果输入的偶数有效,程序将遍历从 2 到该偶数一半的所有数字。
              • 对于每个数字,检查其与 n - i 是否均为素数,如果是,则输出这个组合。
                #include 
                #include 
                #define MAX 1000 // 可以根据需要调整最大范围
                // 检查是否为素数
                bool is_prime(int num) {
                    if (num 
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

相关阅读

目录[+]

取消
微信二维码
微信二维码
支付宝二维码