您的位置:首页 > 编程语言 > C语言/C++

C语言 百炼成钢1

2016-01-20 15:22 567 查看
//题目:有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\r\n", i, j, k);
printf("%s", buff);
//写入1.TXT
fputs(buff, pf);
}

}
}
}
printf("执行成功!\n");
//关闭文件指针
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("\n当月利润是%d\n",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\n",i,x,y);
break;
}
i++;
if (i>100000)
{
break;
}
}
system("pause");
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: