#include<stdio.h>
#include<stdlib.h>
int waterLevel=145,choice;
double sedimentLevel=1.19;
void viewWaterLevel()
{
printf("当前水位高度:%d\n",waterLevel);
printf("完成功能1!\n\t");
}
void viewSediment(){
printf("当前泥沙含量:%.2f\n",sedimentLevel);
printf("完成功能2!\n\t");
}
void adjustWaterLevel()
{
float V,B,L,H,K,H0=145;
V=104;
printf("请输入坝址处河谷宽度B(m): ");
scanf("%f",&B);
printf("请输入蓄水后库区延伸长度L(km): ");
scanf("%f",&L);
K=27;
H=(K*V)/(B*L);
printf("水位计算结果:H=%.2f m\n",H);
if(H<H0)
{printf("库区安全,无需进一步操作\n");}
else
{
printf("水位过高,存在涨潮风险,请选择进一步操作\n");
printf("1、开闸放水,成功泄洪并退出程序\n");
printf("2、不管,发生洪涝灾害,危害下游\n");
int choice;
scanf("%d",&choice);
switch (choice)
{
case 1:printf("开闸放水,成功泄洪\n");
break;
case 2:printf("不管,发生洪涝灾害,危害下游\n");
break;
default:printf("无效的选择,退出程序\n");
break;
}
printf("完成功能3!\n\t");
}
void adjustSedimentLevel()
{
float change;
printf("请输入要调节的泥沙含量(正表示增加,负表示减少): ");
scanf("%f",&change);
sedimentLevel+=change;
printf("调节后的泥沙含量:%f",sedimentLevel);
if(sedimentLevel<=2)
{printf("水闸状态良好,无需进行下一步操作\n");}
else
{printf("泥沙含量过高,堵塞警告,是否清淤");
printf("1、堵塞警告,完成清淤操作\n");
printf("2、不管,河床堵塞,下游缺水");
int choice;
scanf("%d",&choice);
switch(choice)
{
case 1:printf("清淤完成,退出程序\n");
break;
case 2:printf("河床堵塞,下游缺水,退出程序\n");
break;
default:printf("无效的选择,退出程序\n");
break;
}
printf("完成功能4!\n\t");
}
void good_bye()
{printf("\n\n\t 感谢使用,再见!");getchar();}
int menu_select()
{ char c; int n;
printf("\n********************程序主界面********************");
printf("\n\t1.查看水位高度\n");
printf("\t2.查看泥沙含量\n");
printf("\t3.输入水位高度\n");
printf("\t4.输入泥沙含量\n");
printf("\t5.退出本程序\n");
printf("************************************************\n");
printf("请输入数字1-5\n");
c=getchar();
if(c=='\n')
c=getchar();
n=c-48;
while((n<1)||(n>5)) {
printf("\n\t\t\t未输入1-4之间的有效数字,请重新输入:");
c=getchar();
n=c-48;
while(c=='\n')
c=getchar();
n=c-48;
}
return(n);
}
void main()
{ int k;
do{ k=menu_select();
switch(k)
{ case 1: viewWaterLevel();break;
case 2: viewSediment();break;
case 3: adjustWaterLevel();break;
case 4: adjustSedimentLevel();break;
case 5: good_bye();exit(0);
}
} while(k!=5);
}
修改后代码不少于100行?你总共才多少,我的ide带了插件,没发现有什么错误,可能补全了一些括号小问题
#include<stdio.h>
#include<stdlib.h>
int waterLevel=145,choice;
double sedimentLevel=1.19;
void viewWaterLevel()
{
printf("当前水位高度:%d\n",waterLevel);
printf("完成功能1!\n\t");
}
void viewSediment()
{
printf("当前泥沙含量:%.2f\n",sedimentLevel);
printf("完成功能2!\n\t");
}
void adjustWaterLevel()
{
float V,B,L,H,K,H0=145;
V=104;
printf("请输入坝址处河谷宽度B(m): ");
scanf("%f",&B);
printf("请输入蓄水后库区延伸长度L(km): ");
scanf("%f",&L);
K=27;
H=(K*V)/(B*L);
printf("水位计算结果:H=%.2f m\n",H);
if(H<H0)
{
printf("库区安全,无需进一步操作\n");
}
else
{
printf("水位过高,存在涨潮风险,请选择进一步操作\n");
printf("1、开闸放水,成功泄洪并退出程序\n");
printf("2、不管,发生洪涝灾害,危害下游\n");
int choice;
scanf("%d",&choice);
switch (choice)
{
case 1:
printf("开闸放水,成功泄洪\n");
break;
case 2:
printf("不管,发生洪涝灾害,危害下游\n");
break;
default:
printf("无效的选择,退出程序\\n");
break;
}
printf("完成功能3!\n\t");
}
}
void adjustSedimentLevel()
{
float change;
printf("请输入要调节的泥沙含量(正表示增加,负表示减少): ");
scanf("%f",&change);
sedimentLevel+=change;
printf("调节后的泥沙含量:%f",sedimentLevel);
if(sedimentLevel<=2)
{
printf("水闸状态良好,无需进行下一步操作\n");
}
else
{
printf("泥沙含量过高,堵塞警告,是否清淤");
printf("1、堵塞警告,完成清淤操作\n");
printf("2、不管,河床堵塞,下游缺水");
int choice;
scanf("%d",&choice);
switch(choice)
{
case 1:
printf("清淤完成,退出程序\n");
break;
case 2:
printf("河床堵塞,下游缺水,退出程序\n");
break;
default:
printf("无效的选择,退出程序\n");
break;
}
printf("完成功能4!\n\t");
}
}
void good_bye()
{
printf("\n\n\t 感谢使用,再见!");
getchar();
}
int menu_select()
{
char c; int n;
printf("\n********************程序主界面********************");
printf("\n\t1.查看水位高度\n");
printf("\t2.查看泥沙含量\n");
printf("\t3.输入水位高度\n");
printf("\t4.输入泥沙含量\n");
printf("\t5.退出本程序\n");
printf("************************************************\n");
printf("请输入数字1-5\n");
c=getchar();
if(c=='\n')
c=getchar();
n=c-48;
while((n<1)||(n>5))
{
printf("\n\t\t\t未输入1-4之间的有效数字,请重新输入:");
c=getchar();
n=c-48;
while(c=='\n')
c=getchar();
n=c-48;
}
return(n);
}
int main()
{
int k;
do
{
k=menu_select();
switch(k)
{
case 1:
viewWaterLevel();
break;
case 2:
viewSediment();
break;
case 3:
adjustWaterLevel();
break;
case 4:
adjustSedimentLevel();
break;
case 5:
good_bye();
exit(0);
}
} while(k!=5);
}
目的是裁剪到100行?题目要表达清楚哦
这个代码好像在哪答题过,直接是能跑的代码,配到什么把问题反馈上来,大家给你解决,你这个代码合格的。
程序应该能正常工作的,只是把代码行数变短?
可以加两三个功能,或者多一点case when
少了两个括号闭合,程序运行没有问题:
#include<stdio.h>
#include<stdlib.h>
int waterLevel = 145, choice;
double sedimentLevel = 1.19;
void viewWaterLevel()
{
printf("当前水位高度:%d\n", waterLevel);
printf("完成功能1!\n\t");
}
void viewSediment() {
printf("当前泥沙含量:%.2f\n", sedimentLevel);
printf("完成功能2!\n\t");
}
void adjustWaterLevel()
{
float V, B, L, H, K, H0 = 145;
V = 104;
printf("请输入坝址处河谷宽度B(m): ");
scanf("%f", &B);
printf("请输入蓄水后库区延伸长度L(km): ");
scanf("%f", &L);
K = 27;
H = (K*V) / (B*L);
printf("水位计算结果:H=%.2f m\n", H);
if (H < H0)
{
printf("库区安全,无需进一步操作\n");
}
else
{
printf("水位过高,存在涨潮风险,请选择进一步操作\n");
printf("1、开闸放水,成功泄洪并退出程序\n");
printf("2、不管,发生洪涝灾害,危害下游\n");
int choice;
scanf("%d", &choice);
switch (choice)
{
case 1:printf("开闸放水,成功泄洪\n");
break;
case 2:printf("不管,发生洪涝灾害,危害下游\n");
break;
default:printf("无效的选择,退出程序\n");
break;
}
printf("完成功能3!\n\t");
}
}
void adjustSedimentLevel()
{
float change;
printf("请输入要调节的泥沙含量(正表示增加,负表示减少): ");
scanf("%f", &change);
sedimentLevel += change;
printf("调节后的泥沙含量:%f", sedimentLevel);
if (sedimentLevel <= 2)
{
printf("水闸状态良好,无需进行下一步操作\n");
}
else
{
printf("泥沙含量过高,堵塞警告,是否清淤");
printf("1、堵塞警告,完成清淤操作\n");
printf("2、不管,河床堵塞,下游缺水");
int choice;
scanf("%d", &choice);
switch (choice)
{
case 1:printf("清淤完成,退出程序\n");
break;
case 2:printf("河床堵塞,下游缺水,退出程序\n");
break;
default:printf("无效的选择,退出程序\n");
break;
}
printf("完成功能4!\n\t");
};
}
void good_bye()
{
printf("\n\n\t 感谢使用,再见!"); getchar();
}
int menu_select()
{
char c; int n;
printf("\n********************程序主界面********************");
printf("\n\t1.查看水位高度\n");
printf("\t2.查看泥沙含量\n");
printf("\t3.输入水位高度\n");
printf("\t4.输入泥沙含量\n");
printf("\t5.退出本程序\n");
printf("************************************************\n");
printf("请输入数字1-5\n");
c = getchar();
if (c == '\n')
c = getchar();
n = c - 48;
while ((n<1) || (n>5)) {
printf("\n\t\t\t未输入1-4之间的有效数字,请重新输入:");
c = getchar();
n = c - 48;
while (c == '\n')
c = getchar();
n = c - 48;
}
return(n);
}
void main()
{
int k;
do {
k = menu_select();
switch (k)
{
case 1: viewWaterLevel(); break;
case 2: viewSediment(); break;
case 3: adjustWaterLevel(); break;
case 4: adjustSedimentLevel(); break;
case 5: good_bye(); exit(0);
}
} while (k != 5);
}
?你这个代码本来就可以运行呀,什么意思意思改多点代码吗?
以下是修改后的代码,已在Visual C++ 2010上测试运行通过:
#include<stdio.h>
#include<stdlib.h>
int waterLevel = 145, choice;
double sedimentLevel = 1.19;
void viewWaterLevel()
{
printf("当前水位高度:%d\n", waterLevel);
printf("完成功能1!\n\t");
}
void viewSediment()
{
printf("当前泥沙含量:%.2f\n", sedimentLevel);
printf("完成功能2!\n\t");
}
void adjustWaterLevel()
{
float V, B, L, H, K, H0 = 145;
V = 104;
printf("请输入坝址处河谷宽度B(m): ");
scanf_s("%f", &B);
printf("请输入蓄水后库区延伸长度L(km): ");
scanf_s("%f", &L);
K = 27;
H = (K * V) / (B * L);
printf("水位计算结果:H=%.2f m\n", H);
if (H < H0)
{
printf("库区安全,无需进一步操作\n");
}
else
{
printf("水位过高,存在涨潮风险,请选择进一步操作\n");
printf("1、开闸放水,成功泄洪并退出程序\n");
printf("2、不管,发生洪涝灾害,危害下游\n");
scanf_s("%d", &choice);
switch (choice)
{
case 1:
printf("开闸放水,成功泄洪\n");
break;
case 2:
printf("不管,发生洪涝灾害,危害下游\n");
break;
default:
printf("无效的选择,退出程序\n");
break;
}
printf("完成功能3!\n\t");
}
}
void adjustSedimentLevel()
{
float change;
printf("请输入要调节的泥沙含量(正表示增加,负表示减少): ");
scanf_s("%f", &change);
sedimentLevel += change;
printf("调节后的泥沙含量:%f", sedimentLevel);
if (sedimentLevel <= 2)
{
printf("水闸状态良好,无需进行下一步操作\n");
}
else
{
printf("泥沙含量过高,堵塞警告,是否清淤");
printf("1、堵塞警告,完成清淤操作\n");
printf("2、不管,河床堵塞,下游缺水");
scanf_s("%d", &choice);
switch (choice)
{
case 1:
printf("清淤完成,退出程序\n");
break;
case 2:
printf("河床堵塞,下游缺水,退出程序\n");
break;
default:
printf("无效的选择,退出程序\n");
break;
}
printf("完成功能4!\n\t");
}
}
void good_bye()
{
printf("\n\n\t 感谢使用,再见!");
getchar();
}
int menu_select()
{
char c;
int n;
printf("\n********************程序主界面********************");
printf("\n\t1.查看水位高度\n");
printf("\t2.查看泥沙含量\n");
printf("\t3.输入水位高度\n");
printf("\t4.输入泥沙含量\n");
printf("\t5.退出本程序\n");
printf("************************************************\n");
printf("请输入数字1-5\n");
c = getchar();
if (c == '\n')
c = getchar();
n = c - 48;
while ((n < 1) || (n > 5))
{
printf("\n\t\t\t未输入1-4之间的有效数字,请重新输入:");
c = getchar();
while (c == '\n')
c = getchar();
n = c - 48;
}
return (n);
}
int main()
{
int k;
do
{
k = menu_select();
switch (k)
{
case 1:
viewWaterLevel();
break;
case 2:
viewSediment();
break;
case 3:
adjustWaterLevel();
break;
case 4:
adjustSedimentLevel();
break;
case 5:
good_bye();
exit(0);
}
} while (k != 5);
return 0;
}
这个代码没问题呀 啥问题跟大家说清楚好给你解决
你这个代码没问题,要增加代码行数,可以通过增加一些条件判断、方法多套几层壳等方式