题目1:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
个人总结:三个数有4种选择,三次循环并设条件三个数不相等就行。
#include"stdio.h"
void main()
{
int a, b, c;
int n = 0;
for(a = 1;a <= 4; a++){
for(b = 1; b <=4 ; b++)
for(c = 1; c <=4 ;c++){
if(a!=b&&b!=c&&c!=a){
printf("%d%d%d\n",a,b,c);
n++;
}
}
}
printf("%d",n);
}
题目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,求应发放奖金总数?
个人总结:条件选择题目
#include"stdio.h"
void main()
{
float x, pro;
printf("please input the numble of momey(万元):");
scanf("%f",&x);
if(x >= 0 && x <= 10)
pro = x*0.1;
else if(x > 10 &&x <= 20)
pro = 10*0.1 + (x - 10)*0.075;
else if(x > 20 &&x <= 40)
pro = 10*0.1 + 10*0.75 + (x - 20)*0.05;
else if(x > 40 &&x <= 60)
pro = 10*0.1 + 10*0.75 + 20*0.05 + (x - 40)*0.03;
else if(x > 60 &&x <= 100)
pro = 10*0.1 + 10*0.75 + 20*0.05 + 20*0.03 + (x - 60)*0.015;
else if(x > 100)
pro = 10*0.1 + 10*0.75 + 20*0.05 + 20*0.03 + 40*0.015 + (x - 100)*0.01;
printf("profit(万元):%.4f\n", pro);
}
题目3:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
#include"stdio.h"
void main()
{
int i, j, k;
for(i = 0; i <= 1000; i++)
for(j = 10; j <= 1000; j++)
for(k = 13; k <= 1000; k++)
if((i+100) == (j*j) && (i+168) == (k*k)){
printf("%d\n",i);
break;
}
}
// 算法思路正确: 在一定范围内穷举, 对每个数i进行测试,看是否满足条件,如满足,则为待寻找的数。
// 条件为:(i+100) 为一个完全平方数, (i+268)为一个完全平方数。
// 该条件有一个更简单的判断方法,如下:
//long x = sqrt(i+100);
//if(x*x == i+100) 则(i+100)为一个完全平方数。
题目4:输入某年某月某日,判断这一天是这一年的第几天?
个人总结:个人推出来的,网上有种代码简短的答案。
#include"stdio.h"
int judge(int y);
int monthday(int m, int y);
void main()
{
int year, month, day, d1, sum;
printf("please input year,month,day:\n");
scanf("%d%d%d", &year, &month, &day);
d1 = monthday(month, year);
sum = d1 + day;
printf("%d\n", sum);
}
int judge(int y)
{
if(y%4 == 0 && y%100 != 0)
return 1;
else
return 0;
}
int monthday(int m, int y)
{
int d1;
if (judge(y)){
switch(m-1)
{
case 0:d1 = 0;break;
case 1:d1 = 31;break;
case 2:d1 = 60;break;
case 3:d1 = 91;break;
case 4:d1 = 121;break;
case 5:d1 = 152;break;
case 6:d1 = 182;break;
case 7:d1 = 213;break;
case 8:d1 = 244;break;
case 9:d1 = 274;break;
case 10:d1 = 305;break;
case 11:d1 = 335;break;
case 12:d1 = 366;break;
}
}
else
{
switch(m-1)
{
case 0:d1 = 0;break;
case 1:d1 = 31;break;
case 2:d1 = 59;break;
case 3:d1 = 90;break;
case 4:d1 = 120;break;
case 5:d1 = 151;break;
case 6:d1 = 181;break;
case 7:d1 = 212;break;
case 8:d1 = 243;break;
case 9:d1 = 273;break;
case 10:d1 = 304;break;
case 11:d1 = 334;break;
case 12:d1 = 365;break;
}
}
return d1;
}
题目5:输入三个整数x,y,z,请把这三个数由小到大输出。
#include"stdio.h"
void sort(int *a, int *b, int *c);
void main()
{
int x, y, z;
scanf("%d %d %d",&x, &y, &z);
sort(&x, &y, &z);
printf("%d %d %d",x, y, z);
}
void sort(int *a, int *b, int *c)
{
int t;
if(*a > *b){
t = *a;
*a = *b;
*b = t;
}
if(*b > *c){
t = *b;
*b = *c;
*c = t;
}
if(*a > *b){
t = *a;
*a = *b;
*b = t;
}
return;
}