C语言练习实践1-创新互联
1.有 1、2、3、4 四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
成都创新互联公司从2013年创立,先为桦川等服务建站,桦川等地企业,进行企业商务咨询服务。为桦川企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。思路:将三位数字,分别放在个位,十位,百位来看,每位都是1,2,3,4,通过三层for循环,再通过if语句组成所有的排列后再去掉不满足条件的排列。
#includeint main(void)
{int i,j,k;
for(i=1;i<5;i++){for(j=1;j<5;j++){ for(k=1;k<5;k++){ if(i!=j&&j!=k&&i!=k){printf("%d%d%d\n",i,j,k);
}
}
}
}
return 0;
}
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,求应发放奖金总数?
思路:由上述内容分析可得
#includeint main(void)
{int i;
double bonus,bonus1,bonus2,bonus3,bonus4,bonus5;
scanf("%d",&i);//单位为万元;
bonus1 = 10 * 0.1;
bonus2 = bonus1 + 10*0.075;
bonus3 = bonus2 + 20*0.05;
bonus4 = bonus3 + 20*0.03;
bonus5 = bonus4 + 40*0.015;
if(i<= 10){bonus = i * 0.1;
}
else if(i< 20){bonus = bonus1 + (i-10)*0.075;
}
else if(i< 40){bonus = bonus2 + (i-20)*0.05;
}
else if(i< 60){bonus = bonus3 + (i-40)*0.03;
}
else if(i< 100){bonus = bonus4 + (i-60)*0.015;
}
else {bonus = bonus5 + (i-100)*0.01;
}
printf("bonus= %f",bonus*10000);
return 0;
}
3.一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
本题提供两条思路,根据自己选择更容易理解的方案
**思路一(转自菜鸟教程):**假设该数为 x。
1、则:x + 100 = n2, x + 100 + 168 = m2
2、计算等式:m2 - n2 = (m + n)(m - n) = 168
3、设置: m + n = i,m - n = j,i * j =168,i 和 j 至少一个是偶数
4、可得: m = (i + j) / 2, n = (i - j) / 2,i 和 j 要么都是偶数,要么都是奇数。
5、从 3 和 4 推导可知道,i 与 j 均是大于等于 2 的偶数。
6、由于 i * j = 168, j>=2,则 1< i< 168 / 2 + 1。
7、接下来将 i 的所有数字循环计算即可。
#includeint main (void)
{int i, j, m, n, x;
for (i = 1; i< 168 / 2 + 1; i++)
{if (168 % i == 0)
{j = 168 / i;
if ( i >j && (i + j) % 2 == 0 && (i - j) % 2 == 0)
{m = (i + j) / 2;
n = (i - j) / 2;
x = n * n - 100;
printf ("%d + 100 = %d * %d\n", x, n, n);
printf ("%d + 268 = %d * %d\n", x, m, m);
}
}
}
return 0;
}
思路二:
#include#includeint main(void)
{double x,n,a,b,m;
for(x=1.0;x<10000.0 ;x++){n = x + 100.0;
m = floor(sqrt(n)+0.5);//+0.5为了确保准确性;
if(m*m==n){ a = n + 168;
b = floor(sqrt(a)+0.5);
if(b*b==a){ printf("这个数是:%f\n",x);
}
else continue;
} else continue;
}
return 0;
}
4.输入某年某月某日,判断这一天是这一年的第几天?
思路:我们知道1,3,5,7,8,10,腊(12),有31天,通过观察可以发现当月份小于8时,奇数为31天,当大于等于8时,偶数为31天。因此解题步骤分为3步:
1.先判断是不是闰年2.第一个for循环计算小于8月的天数,并将2月的天数单独判 断(注意当for循环中的i等于月份时就退出循环)
3.第二个for循环计算大于等于8月的天数
#includeint main(void){int year,month,day;
scanf("%d %d %d",&year,&month,&day);
if ((year%4==0)&&(year%100 !=0)||(year%100==0)){year = 1;
}
else year = 0;
int i;
int sum = 0;
for (i=1;i<8;i++){if(i==month) break;
if(i%2 == 0){ if(i == 2&& year==1){ sum +=29;
continue;
}
else if(i == 2&& year==0){ sum +=28;
continue;
}
sum += 30;
}
else{ sum +=31;
}
}
for (;i<12;i++){if(i==month) break;
if(i%2==0) sum +=31;
else sum +=30;
}
printf("这一天是这一年的第%d",sum+day);
return 0;
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
名称栏目:C语言练习实践1-创新互联
当前网址:http://azwzsj.com/article/cdgpps.html