//题目:有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"); }