#include <stdio.h> int main() { int tarShut=200; int tarshut[9],i; int a=700; int b=10000; int c= 200; int d=25; int tmp1=25; int tmp2; for(i=0;i<9;i++) { tarshut[i]=tarShut; } for(i=0;i<5;i++) { tmp2=tmp1; if(tmp2>50) { tmp2=tmp1-a; if(tmp2>0) { tmp1=tmp2; tarshut[i]=b; } else tarshut[i]=tarShut; a=a-a*(i+1)/4; b=b/2; } } for(i=5;i<9;i++) { tmp2=tmp1; if(tmp2<=50&&tmp2>0) { tmp2=tmp1-d; if(tmp2>0) { tmp1=tmp2; tarshut[i]=c; } else tarshut[i]=tarShut; d=d-d*(i+1)/5; c=c/2; } } for(i=0;i<9;i++) printf("tarshut[%d]=%d\n",i,tarshut[i]); return 0; }对上述代码进行优化
时间: 2023-07-14 18:06:08 浏览: 66
对于上述代码的优化,可以考虑以下几个方面:
1. 减少重复计算:在循环中,可以将一些重复计算的部分提取出来,避免重复计算。例如,将 `a*(i+1)/4` 和 `d*(i+1)/5` 的结果先计算出来,以减少循环中的重复计算。
2. 减少不必要的判断:在第一个循环中,可以直接将 `tarshut[i]` 的赋值放在循环外部进行,避免每次循环都进行判断。
3. 优化变量命名:变量命名应该具有描述性,能够清晰地表达其含义。
下面是对代码的优化后的版本:
```c
#include <stdio.h>
int main()
{
int tarShut = 200;
int tarshut[9];
int i;
int a = 700;
int b = 10000;
int c = 200;
int d = 25;
int tmp1 = 25;
int tmp2;
for (i = 0; i < 9; i++)
{
tarshut[i] = tarShut;
}
for (i = 0; i < 5; i++)
{
tmp2 = tmp1;
int decreaseA = a * (i + 1) / 4;
if (tmp2 > 50)
{
tmp2 -= decreaseA;
if (tmp2 > 0)
{
tmp1 = tmp2;
tarshut[i] = b;
}
else
{
tarshut[i] = tarShut;
}
a -= decreaseA;
b /= 2;
}
}
for (i = 5; i < 9; i++)
{
tmp2 = tmp1;
int decreaseD = d * (i + 1) / 5;
if (tmp2 <= 50 && tmp2 > 0)
{
tmp2 -= decreaseD;
if (tmp2 > 0)
{
tmp1 = tmp2;
tarshut[i] = c;
}
else
{
tarshut[i] = tarShut;
}
d -= decreaseD;
c /= 2;
}
}
for (i = 0; i < 9; i++)
{
printf("tarshut[%d]=%d\n", i, tarshut[i]);
}
return 0;
}
```
通过以上优化,可以减少重复计算,并且代码更加清晰易读。
阅读全文