189 8069 5689

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://cdxtjz.cn/article/cdgpps.html

其他资讯