C语言练习题

    选择打赏方式

持续更新中......

说实话有些逻辑是真的难,我吐了,我要砸电脑!!!

  1. 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
# include<stdio.h>
int main()
{
    int i,j,k;
    printf("\n");
    for(i=1;i<5;i++) { // 以下为三重循环
        for(j=1;j<5;j++) {
            for (k=1;k<5;k++) { // 确保i、j、k三位互不相同
                if (i!=k&&i!=j&&j!=k) { 
                    printf("%d,%d,%d\n",i,j,k);
                }
            }
        }
    }
} 
  1. 写一个代码计算n的阶乘
 # include<stdio.h>
 int main()
 {
     int a = 0;
     int n = 0;
     int num = 1;
     scanf("%d",&n);
     for(a=1;a<=n; a++)
     {
         num*=a;
     }
     printf("的阶乘= %d\n",num);
     return 0;
 } 
  1. 写一个代码计算1!+2!+3!……计算这种首先输入一个数字,使得每一次都从1开始计算阶乘直到计算到输入的数字为之,5的阶乘的计算方法为1*2*3*4*5
int main()
{
    int a = 0;
    int add = 0;
    int num = 1;
    int n = 0;
    scanf("%d", &n);
    for (a = 1; a <= n; a++)
    {
        num *= a;
        add = add + num;
    }
    printf("阶乘=: %d", add);
    return 0;
} 
  1. 计算99乘法表,分析:通过for循环从内往外循环
#include

int main()
{
    int a=0;
    int b=0;
    for(a=1; a<=9; a++) { for(b=1; b<=a; b++) { printf("%dx%d=%d\n",a,b,a*b); } } return 0; }
  1. // 企业发放的奖金根据利润提成。
    // 利润(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,求应发放奖金总数?
# include
int main()
{
    int i = 0;
    int n = 0;
    float award = 0;
    printf("hello 打工人,请输入今年你的成果(利润):\n");
    scanf("%d",&i);
    if(i>0)
    {

    if(i<=100000 && i>0)
    {
        n = 1;
    }
    else if(i>100000 && i<200000) { n = 2; } else if(i>=200000 && i<400000) { n = 3; } else if(i>=400000 && i<600000) { n = 4; } else if(i>=600000 && i<1000000) { n = 5; } else n = 6; switch(n) { case 1: award = i*0.1; break; case 2: award = (100000*0.1)+(i-100000)*0.075; break; case 3: award = (100000*0.1)+(100000*0.075); award = award + (i-200000)*0.05; break; case 4: award = (100000*0.1)+(100000*0.075); award = award + (200000*0.05); award = award + (i-400000)*0.03; break; case 5: award = (100000*0.1)+(100000*0.075); award = award + (200000*0.05); award = award + (200000*0.03); award = award + (i-600000)*0.015; break; case 6: award = (100000*0.1)+(100000*0.075); award = award + (200000*0.05); award = award + (200000*0.03); award = award + (400000)*0.015; award = award + (i-1000000)*0.01; break; default: printf("输入错误"); } printf("你好,打工人,今年奖励你:\n%f",award); } else{ printf("输入错误"); } return 0; } 
  1. 写一个代码实现输入年月日得出今年到今天经历了几天
    这个代码我真的是醉了,就是吧month写成了years导致数组那里溢出,最后搞了半天才搞出来
    其实实现这个功能还可以使用switch语句,我这里不过是创新了一下。
# define _CRT_SECURE_NO_WARNINGS
# include
int main()
{
    int n;
    int add = 0;
    int num;
    printf("请输入日期(2020,11,3):\n");
    int years, month, days;
    scanf("%d,%d,%d", &years, &month, &days);
    if (years >= 1888 && years<=2065 && month >= 1 && month<=12 && days >= 1 && days<=31) 
      { 
       if (years % 4 == 0 || years % 100 != 0) 
        { 
         n = 1; printf("今年是闰年\n"); 
         } 
          else 
           { 
            n = 0; printf("今年是平年\n");  
             } 
             int day[] = { 31,28,31,30,31,30,31,31,30,31,30,31 }; 
             if (n == 1 && month > 2)
        {
            for (num = 1; month > num; num++)
            {
                add += day[num - 1];
            }
            add += days;
            add += 1;
        }
        else if (n == 1)
        {
            for (num = 1; month > num; num++)
            {
                add += day[num - 1];
            }
            add += days;
        }
        else if (n == 0)
        {
            for (num = 1; month > num; num++)
            {
                add += day[num - 1];
            }
            add += days;
        }
        printf("%d年%d月%d日共有%d天\n", years, month, days, add);
    }
    else
    {
        printf("请输入合法字符");
    }
    return 0;
}
  1. 再写一个代码计算n的阶乘
 long compute(int x)
{
    int k,jc=1;
    for(k=1;k<=x;k++) { jc = k*jc; } printf("%d!=%ld\n",x,jc); return jc; } void main() { int k; long s = 0; for(k = 1;k<=10;k++) s = s+compute(k); printf("阶乘的和为s=1!+2!......+n!=%d",s); } } 
  1. 通过冒泡排序的方式将一组数按照升序的排列方式进行排序
//首先给出一组数9876543210,我们要将相邻的两个数进行比较,小的数在前,大的在后
//首先第一位数和剩下的几位数依次进行比较,如果第一个比第二个大,那么一和二交换,假设有十组数字,那么将要比较九次
//然后第一个数字比较完成后,第二个数字接着和后面的七个数字进行比较,循环往复,第三个和后面的5个
#include <stdio.h>
void bubble_sort(int arr[], int size)
{
    int i = 0;
    int j = 0;
    int temp = 0;
    int flag = 1; //优化假设已经有序
    for (j = 0; j < size - 1; j++)
    {
        for (i = 0; i < size - 1 - j; i++)
        {
            if (arr[i] > arr[i + 1])
            {
                temp = arr[i + 1];
                arr[i + 1] = arr[i];
                arr[i] = temp;
                flag = 0;
            }
        }
        if (flag == 1)
        {
            break;
        }
    }
}
int main()
{
    int i = 0;
    int arr[] = {5, 4, 2, 3, 8, 9, 2, 7, 6, 5, 4}; //对这组数进行升序排序
    int size = sizeof(arr) / sizeof(arr[0]);
    bubble_sort(arr, size);
    for (i = 0; i < size; i++)
    {
        printf("%d", arr[i]);
    }

    return 0;
}
版权声明:若无特殊注明,本文为《若离风》原创,转载请保留文章出处。
本文链接:https://www.rlfit.cn/post-21.html
正文到此结束

热门推荐

发表吐槽

你肿么看?

你还可以输入 250 / 250 个字

嘻嘻 大笑 可怜 吃惊 害羞 调皮 鄙视 示爱 大哭 开心 偷笑 嘘 奸笑 委屈 抱抱 愤怒 思考 日了狗 胜利 不高兴 阴险 乖 酷 滑稽

评论信息框
可使用QQ号实时获取昵称+头像

私密评论

吃奶的力气提交吐槽中...

已有2条吐槽

昵称获取失败

2021-12-28 21:12 北京市阿里云BGP数据中心
。牛批
 Windows 10 x64   Google Chrome 96.0.4664.110
昵称获取失败

若离风

2021-11-03 11:16
如果存在什么问题,欢迎小伙伴指出哦!
若离风