1,企业发放的奖金根据利润提成。
利润(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,求应发放奖金总数?
void main()
{
int i;
double j=0, k=0, a=0, b=0, c=0, d=0,g;
scanf("%d",&i);
getchar();
j = i*0.1;
d = j + (i - 10)*0.075;
k = + (i - 20)*0.05;
a = k + (i - 40)*0.03;
b = a + (i - 60)*0.015;
c = b + (i - 100)*0.01;
if (i <= 10)
{
g = i*0.1;
}
else if (10 < i&&i < 20)
{
g = j + (i - 10)*0.075;
}
else if (20 < i&&i < 40)
{
g = d + (i - 20)*0.05;
}
else if (40 < i&&i < 60)
{
g = k + (i - 40)*0.03;
}
else if (60 < i&&i < 100)
{
g = a + (i - 60)*0.015;
}
else if (i > 100)
{
g = b + (i - 100)*0.01;
}
printf("%lf",g);
getchar();
}
这题的条件全都给了,当时写这题的时候一直卡在了计算它的总数;没考虑到它每个范围的奖励百分比都是独立的;一直没有转过弯来满心的泪啊问题的考虑还是不够全面;
递归判断输入的数字有几位;
int f(int num)
{
if(num/10==0)
{
return 1;
}
else
{
return 1+f(num/10);
}
}
void main()
{
int a;
scanf("%d",&a);
getchar();
printf("%d",f(a));
getchar();
}
递归,自己调用自己用两个return,拿100举例,100满足第一个条件继续(num/10==0)除了两次后不满足第一个条件自动到第二个条件内,1+f(num/10)后就不在循环1+记录它进入了这,因此显示3;
4,求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。
例如输入3则求3+33+333(此时共有3个数相加),
例如输入5则求5+55+555+5555+55555(此时共有5个数相加);
void main()
{
int num,j,k,sum=0;
scanf("%d",&num);
getchar();
k=num;
printf("\n%d=",sum);
for(j=1;j<k;j++)
{
sum+=num;
num=num*10+k;
printf("%d+",num);
}
printf("=%d",sum);
getchar()
}
k的作用是开辟一处空间来装num因为num是在不断变化的所以需要一个变量来承载他的原始值j
void main()
{
int n, t;
float a = 2, b = 1, s = 0;
for (n = 1; n <= 20; n++)
{
s = s + a / b;
t = a;
a = a + b;
b = t;/*后面的b为前个a的数值*/
}
printf("sum == %9.6f\n", s);
getchar();
}
从题目中可知从第二项开始b=a,a=a+b,先输出第一个结果再给个循环次数;
将输入的元素插入到顺序数组中,插入后不改变数组的排列书序.
比如:有数组 a[10] = {12,14,23,45,66,68,70,77,90,91};
插入数字50后,数组将为:{12,14,23,45,50,66,68,70,77,90};
void main()
{
int a[10] = { 12, 14, 23, 45, 66, 68, 70, 77, 90, 91 },i,j,num,temp = 0;
for (i = 0; i < 10; i++)
{
printf("%5d", a[i]);
}
printf("\n\n请输入您要插入的数字:\t");
scanf("%d",&num);
getchar();
for (i = 0; i < 10; i++)
{
if (num <= a[i] && temp == 0)
{
temp = a[i];
for (j = i + 1; j<10; j++)
{
temp = a[j] ^ temp;
a[j] = a[j] ^ temp;
temp = a[j] ^ temp;
}
a[i] = num;
}
printf("%5d", a[i]);
}
getchar();
}
在数组中插入50,并且把最末尾的挤出去;首先给第一个数列循环;判断输入的数不能大于数列且变量初始化比较等于0;然后赋值用冒泡排序判断;再将数值转换回来输出;