C语言 百炼成钢1

//题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>

void main(){
    //三位数,有个,十,百,三位,可以通过循环来解决,百位上循环1次,十位上循环4次,个位上循环4*4=16次
    FILE *pf;
    pf = fopen("E:\h1.txt", "w");
    //定义缓冲区
    //字符串数组必须赋初始值
    char buff[10] = { 0 };
    for (int i = 1; i < 5; i++)
    {
        for (int j = 1; j < 5; j++)
        {
            for (int k = 1; k < 5; k++)
            {
                if (i!=j&&i!=k&&j!=k)
                {
                    //拼接字符串
                    sprintf(buff, "%d%d%d
", i, j, k);
                    printf("%s", buff);
                    //写入1.TXT
                    fputs(buff, pf);
                }
                
            }
        }
    }
    printf("执行成功!
");
    //关闭文件指针
    fclose(pf);
    system("pause");
}

//题目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,求应发放奖金总数?

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>

//分析:应发放奖金总数=10*10%+10*7.5%(利润高于10万元,低于20万元时)+20*5%....
//首先确定奖金处于哪一级别
//可以使用多函数实现

//低于10万元
double low10(int num){
    return num*0.1;
}

//利润高于10万元,低于20万元时
double low20(int num){
    return num*0.075;
}

//利润高于20万元,低于40万元时
double low40(int num){
    return num*0.05;
}

//利润高于40万元,低于60万元时
double low60(int num){
    return num*0.03;
}

//利润高于60万元,低于100万元时
double low100(int num){
    return num*0.015;
}

//利润高于60万元,低于100万元时
double lowm(int num){
    return num*0.01;
}

void main(){
    int num = 0;
    scanf("%d", &num);
    printf("
当月利润是%d
",num);
    double resnum = 0.0;
    switch ((num-1)/10)
    {
    case 0:
        resnum=low10(num);
        break;
    case 1:
        resnum = low10(10) + low20(num-10);
        break;
    case 2:
    case 3:
        resnum = low10(10) + low20(10) + low40(num - 20);
        break;
    case 4:
    case 5:
        resnum = low10(10) + low20(10) + low40(20)+low60(num-40);
        break;
    case 6:
    case 7:
    case 8:
    case 9:
        resnum = low10(10) + low20(10) + low40(20) + low60(20) + low100(num-60);
        break;
    default:
        resnum = low10(10) + low20(10) + low40(20) + low60(20) + low100(40)+lowm(num-100);
        break;
    }
    printf("应发放奖金总数%lf", resnum);

    system("pause");
}

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

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>


//分析:枚举法,用while循环  找到为止
void main(){
    int x, y,i=0;
    while (1){
        //sqrt在头文件mat.h中,函数原型为double sqrt(double);功能是求一个非负实数的平方根
        //这里存在强转,所以sqrt((double)(i + 100))求的值不一定是整数
        x =(int)sqrt((double)(i + 100));
        y =(int)sqrt((double)(i + 268));
        //x*x == (i + 100)用来判断上面sqrt((double)(i + 100))求的值是不是一个整数,如果不是整数就不会相等
        if (x*x == (i + 100) && y*y == (i + 268))
        {
            printf("该数i是%d,x的值是%d,y的值是%d
",i,x,y);
            break;
        }
        i++;
        if (i>100000)
        {
            break;
        }
    }
    system("pause");
}

原文地址:https://www.cnblogs.com/zhanggaofeng/p/5145325.html