0%

一个整数,它加上100后是一个完全平方数,再加上 168又是一个完全平方数,请问该数是多少?

思路:先来一个while(1)死循环,每次这个数(num)自增,这两个完全平方数必定都小于num+这个完全平方数,设计两个for循环,让这两个完全平方数自增。当符合条件时,跳出while死循环。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
int main() {
    int num = 0;
    int a = 0;
    int b = 0;
    while (1) {
        num++;
        for (a=0; a<num+100; a++) {
            for (b=0; b<num+168; b++) {
                if ((num+100 == a*a)&&(num+168 == b*b)) {
                    printf("%d,%d,%d",a,b,num);
                    break;
                }
            }
        }
    }
    return 0;
}

题目:企业发放的奖金根据利润提成。
利润低于或等于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%提成。
从键盘输入当月利润数,求应发放奖金总数?

思路:根据输入的利润数,使用if语句判断利润的范围,然后根据不同情况进行计算。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <stdio.h>
int main() {
    int input = 0;
    int bonus = 0;
    printf("请输入利润:->");
    scanf("%d",&input);
    if (input<=100000)//利润低于或等于10万元时,奖金可提10%;
    {
        bonus = input * 0.1;
    }
    else if (input<=200000)//利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;
    {
        bonus = 100000 * 0.1 + (input - 100000) * 0.075;
    }
    else if (input<=400000)//20万到40万之间时,高于20万元的部分,可提成5%;
    {
        bonus = 100000 * 0.1 + 100000 * 0.075 + (input - 200000) * 0.05;
    }
    else if (input<=600000)
    {
        bonus = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + (input - 400000) * 0.03;
    }
    else if (input<=1000000)//60万到100万之间时,高于60万元的部分,可提成1.5%;
    {
        bonus = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + (input - 600000) * 0.015;
    }
    else//高于100万元时,超过100万元的部分按1%提成。
    {
        bonus = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + 400000 * 0.015 +(input - 1000000) * 0.01;
    }
    printf("%d\n",bonus);
    return 0;
}

改进上面的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <stdio.h>
int main() {
    int input = 0;
    int bonus = 0;
    int bonus1 = 100000 * 0.1;
    int bonus2 = bonus1 + 100000 * 0.075;
    int bonus3 = bonus2 + 200000 * 0.05;
    int bonus4 = bonus3 + 200000 * 0.03;
    int bonus5 = bonus4 + 400000 * 0.015;
    printf("请输入利润:->");
    scanf("%d",&input);
    if (input<=100000)//利润低于或等于10万元时,奖金可提10%;
    {
        bonus = input * 0.1;
    }
    else if (input<=200000)//利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;
    {
        bonus = bonus1 + (input - 100000) * 0.075;
    }
    else if (input<=400000)//20万到40万之间时,高于20万元的部分,可提成5%;
    {
        bonus = bonus2 + (input - 200000) * 0.05;
    }
    else if (input<=600000)
    {
        bonus = bonus3 + (input - 400000) * 0.03;
    }
    else if (input<=1000000)//60万到100万之间时,高于60万元的部分,可提成1.5%;
    {
        bonus = bonus4 + (input - 600000) * 0.015;
    }
    else//高于100万元时,超过100万元的部分按1%提成。
    {
        bonus = bonus5 +(input - 1000000) * 0.01;
    }
    printf("%d\n",bonus);
    return 0;
}

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

思路:1、2、3、4能组成无重复数字的三位数最小是123,最大是432,根据这个,设计一个for循环,最小是123,最大是432,在循环中,计算出这个当前数字的个位、十位和百位数字都是什么,用if进行筛选,选出个位十位百位这三个数字不相等的数字,再选出这3个数字都小于4的数字。

阅读全文 »

预处理

预定义符号

1
2
3
4
5
__FILE__      //进行编译的源文件
__LINE__ //文件当前的行号
__DATE__ //文件被编译的日期
__TIME__ //文件被编译的时间
__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义
阅读全文 »

文件类型

数据文件分为文本文件和二进制文件。
数据在内存中以二进制的形式存储,如果不加以转换的输出到外存,就是二进制文件。
以ASCII字符的形式存储的文件就是文本文件。

阅读全文 »

为什么存在动态内存分配

  • 之前开辟空间大小是固定的
  • 数组在创建时必须制定数组长度。
    动态内存分配,解决上面的问题。可以让内存分配更灵活。
    阅读全文 »

枚举

枚举就是一一列举
比如:一周有7天、性别有男女、一个月有30天,都可以一一列举

阅读全文 »

什么是位段?
——位段是一种类似结构体的类型。

位段的声明和结构体类似,但有两点不同:

  • 位段的成员必须是int、unsigned int或signed int(可能也有char,但是一个位段的类型必须是类似的)
  • 位段的成员名后边有一个冒号和一个数字(意思是这个变量需要多少个比特位)
    阅读全文 »

结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。
参考:初识结构体

阅读全文 »