【C】气死C老师系列,求教优化。【槽点极多】
#include <stdio.h>#include <stdlib.h>
int if_and();
int if_huo();
int if_fei();
int if_3();
int cls();
int main()
{
int num;
char yn;
start:
cls();
printf("请输入数字进入你所想要的区域\n1.if嵌套与elseif教学。\n2.相同条件教学\n3.当一个条件满足时教学\n4.!x判断x是否为0,是的话,!x为1,否则!x为0。\n");
scanf("%d",&num);
if (num == 1)
if_3();
else if (num == 2)
if_and();
else if(num==3)
if_huo();
else if(num==4)
if_fei();
else
{
printf("输入错误,请重新输入。");
goto start;
}
ynb:printf("y继续执行程序,n退出程序。\nPs:如果第一次输入的是回车,第二次输入前请先按下回车:");
scanf("%c",&yn);
scanf("%c",&yn);
if('y' == yn || 'Y' == yn)
{
goto start;
}
else if('n' == yn || 'N' == yn)
{
printf("程序结束\n");
return 0;
}
else
{
printf("输入有误,请重新输入。");
goto ynb;
}
}
int if_3()
{
int xf;
loop:
printf("请输入您拥有的金额,要求为10的平方数,负数随便输:\n");
scanf("%d",&xf);
if (xf < 0)
{
printf("已经濒临灭绝的地步了,要加油啊,不过不能放弃生命哦\n");
}
else
{
if(xf >= 0)
{
if(xf == 0)
{
printf("还不行哦,要加油,你会生存不下去的。\n");
}
else if(xf == 10)
{
printf("还好,勉强能活几天,试试再辛苦一点赚钱吧\n");
}
else if(xf == 100)
{
printf("还好,慢慢来,不要因为有一点小钱而得意\n");
}
else if(xf == 1000)
{
printf("不错,偶尔去吃点几元的小吃吧,继续努力!\n");
}
else if(xf == 10000)
{
printf("投资点地摊试试吧,也许会更有钱的哦。\n");
}
else if(xf == 100000)
{
printf("不错,可以租个地方干点什么了。\n");
}
else if(xf == 1000000)
{
printf("不错哦,开个大点的公司吧!,可以买电钢琴了。\n");
}
else if(xf == 10000000)
{
printf("这时候应该基本稳定下来了吧,继续加油吧!哦,对了,你可以买斯坦威钢琴了\n");
}
else if(xf >= 100000000)
{
printf("不错,到了今天你应该已经不需要我了。\n");
}
else
{
printf("请输入10的平方数!\n");
goto loop;
}
}
}
}
int if_and()
{
int x,y;
printf("请输入x和y的值,x=1,y=2,当有一个不吻合就会输出不吻合:\n");
printf("请输入x的值:");
scanf("%d",&x);
printf("请输入y的值:");
scanf("%d",&y);
if(x==1 && y==2)
printf("条件全部吻合\n");
else
printf("有一个或多个条件不吻合\n");
}
int if_huo()
{
int x,y;
printf("当x=1,y=2有一个条件吻合时即输出吻合\n");
printf("请输入x的值:");
scanf("%d",&x);
printf("请输入y的值:");
scanf("%d",&y);
if(x==1 || y==2)
printf("全部吻合或者其中一个条件吻合\n");
else
printf("全不吻合\n");
}
int if_fei()
{
int x;
printf("你会看见相反的答案......\n");
printf("请输入x的值:");
scanf("%d",&x);
if(!x==1)
printf("x为0\n");
else
printf("x不为0\n");
}
int cls()
{
system("cls");
printf("清屏完毕\n");
}
这大概没啥可优化的。。
另外你这个清屏居然还会显示“清屏完毕” 0xAA55 发表于 2015-8-19 00:30
这大概没啥可优化的。。
另外你这个清屏居然还会显示“清屏完成”
听说最好少用goto,我这里到处都是goto,还有如果第一次按了回车,第二次就要多输入一次的bug....感觉写的是不是挺烂的...... W·Y 发表于 2015-8-19 02:37
听说最好少用goto,我这里到处都是goto,还有如果第一次按了回车,第二次就要多输入一次的bug....感觉写 ...
其实主要是C++最忌讳用goto,因为这个涉及到类构造、析构、变量初始化的逻辑位置问题。
C语言就好多了,用goto也没什么错,但是goto如果用得太多(甚至各种往回跳)那就不应该了。 加油!
。。。。其实还是习惯循环一点点。。。 不是在一堆循环里直接改变流程或者非用不可的话,goto是能不用最好别用,在企业的话就和工资挂钩了 0xAA55 发表于 2015-8-19 20:18
其实主要是C++最忌讳用goto,因为这个涉及到类构造、析构、变量初始化的逻辑位置问题。
C语言就好多了, ...
嗯,受教了! cyycoish 发表于 2015-8-19 21:01
加油!
。。。。其实还是习惯循环一点点。。。
刚刚学习,还不知道循环怎么写:D coffee 发表于 2015-8-19 22:32
不是在一堆循环里直接改变流程或者非用不可的话,goto是能不用最好别用,在企业的话就和工资挂钩了 ...
原来如此,谢大神指教! @0xAA55 我发现有时候为了硬往结构化程序设计里边套,而不用goto语句,写出来的程序越难以理解
所以说正确少量地使用goto应该是好习惯 cyycoish 发表于 2015-8-21 16:55
@0xAA55 我发现有时候为了硬往结构化程序设计里边套,而不用goto语句,写出来的程序越难以理解
所以说正确 ...
其实应该做成子程序的就得做成子程序,事实上这样效率更高(过小的子程序会被编译器自动内联,而有一定体积的子程序则会被CPU缓存起来。) 0xAA55 发表于 2015-8-21 19:02
其实应该做成子程序的就得做成子程序,事实上这样效率更高(过小的子程序会被编译器自动内联,而有一定体 ...
SOGA..原来如此。。 cyycoish 发表于 2015-8-21 16:55
@0xAA55 我发现有时候为了硬往结构化程序设计里边套,而不用goto语句,写出来的程序越难以理解
所以说正确 ...
用下goto,程序有可能更清晰易读。
页:
[1]