技术宅的结界

 找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 1842|回复: 12
收起左侧

【C】气死C老师系列,求教优化。【槽点极多】

[复制链接]

5

主题

22

帖子

109

积分

用户组: 小·技术宅

UID
594
精华
0
威望
0 点
宅币
87 个
贡献
0 次
宅之契约
0 份
在线时间
7 小时
注册时间
2014-12-14
发表于 2015-8-19 00:09:44 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有帐号?立即注册→加入我们

x
[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");
}
if.c.rar (1.25 KB, 下载次数: 0)

本帖被以下淘专辑推荐:

回复

使用道具 举报

1059

主题

2442

帖子

6万

积分

用户组: 管理员

一只技术宅

UID
1
精华
221
威望
348 点
宅币
19502 个
贡献
40278 次
宅之契约
0 份
在线时间
1840 小时
注册时间
2014-1-26
发表于 2015-8-19 00:30:06 来自手机 | 显示全部楼层
这大概没啥可优化的。。
另外你这个清屏居然还会显示“清屏完毕”

5

主题

22

帖子

109

积分

用户组: 小·技术宅

UID
594
精华
0
威望
0 点
宅币
87 个
贡献
0 次
宅之契约
0 份
在线时间
7 小时
注册时间
2014-12-14
 楼主| 发表于 2015-8-19 02:37:47 | 显示全部楼层
0xAA55 发表于 2015-8-19 00:30
这大概没啥可优化的。。
另外你这个清屏居然还会显示“清屏完成”

听说最好少用goto,我这里到处都是goto,还有如果第一次按了回车,第二次就要多输入一次的bug....感觉写的是不是挺烂的......

1059

主题

2442

帖子

6万

积分

用户组: 管理员

一只技术宅

UID
1
精华
221
威望
348 点
宅币
19502 个
贡献
40278 次
宅之契约
0 份
在线时间
1840 小时
注册时间
2014-1-26
发表于 2015-8-19 20:18:24 | 显示全部楼层
W·Y 发表于 2015-8-19 02:37
听说最好少用goto,我这里到处都是goto,还有如果第一次按了回车,第二次就要多输入一次的bug....感觉写 ...

其实主要是C++最忌讳用goto,因为这个涉及到类构造、析构、变量初始化的逻辑位置问题。
C语言就好多了,用goto也没什么错,但是goto如果用得太多(甚至各种往回跳)那就不应该了。

85

主题

260

帖子

3763

积分

用户组: 管理员

No. 418

UID
418
精华
13
威望
52 点
宅币
1969 个
贡献
1365 次
宅之契约
0 份
在线时间
252 小时
注册时间
2014-8-9
发表于 2015-8-19 21:01:50 | 显示全部楼层
加油!
。。。。其实还是习惯循环一点点。。。
In the beginning I was not the best.
And the world was also not the best.
But I still know that I am who I am.
Because I think that it is good.
I have been working hard.
I have been keeping growth with the world.
And it was so.

1

主题

12

帖子

661

积分

用户组: 大·技术宅

UID
374
精华
0
威望
11 点
宅币
626 个
贡献
1 次
宅之契约
0 份
在线时间
89 小时
注册时间
2014-7-7
发表于 2015-8-19 22:32:32 | 显示全部楼层
不是在一堆循环里直接改变流程或者非用不可的话,goto是能不用最好别用,在企业的话就和工资挂钩了

5

主题

22

帖子

109

积分

用户组: 小·技术宅

UID
594
精华
0
威望
0 点
宅币
87 个
贡献
0 次
宅之契约
0 份
在线时间
7 小时
注册时间
2014-12-14
 楼主| 发表于 2015-8-19 23:18:23 | 显示全部楼层
0xAA55 发表于 2015-8-19 20:18
其实主要是C++最忌讳用goto,因为这个涉及到类构造、析构、变量初始化的逻辑位置问题。
C语言就好多了, ...

嗯,受教了!

5

主题

22

帖子

109

积分

用户组: 小·技术宅

UID
594
精华
0
威望
0 点
宅币
87 个
贡献
0 次
宅之契约
0 份
在线时间
7 小时
注册时间
2014-12-14
 楼主| 发表于 2015-8-19 23:18:53 | 显示全部楼层
cyycoish 发表于 2015-8-19 21:01
加油!
。。。。其实还是习惯循环一点点。。。

刚刚学习,还不知道循环怎么写

5

主题

22

帖子

109

积分

用户组: 小·技术宅

UID
594
精华
0
威望
0 点
宅币
87 个
贡献
0 次
宅之契约
0 份
在线时间
7 小时
注册时间
2014-12-14
 楼主| 发表于 2015-8-19 23:19:09 | 显示全部楼层
coffee 发表于 2015-8-19 22:32
不是在一堆循环里直接改变流程或者非用不可的话,goto是能不用最好别用,在企业的话就和工资挂钩了 ...

原来如此,谢大神指教!

85

主题

260

帖子

3763

积分

用户组: 管理员

No. 418

UID
418
精华
13
威望
52 点
宅币
1969 个
贡献
1365 次
宅之契约
0 份
在线时间
252 小时
注册时间
2014-8-9
发表于 2015-8-21 16:55:03 | 显示全部楼层
@0xAA55 我发现有时候为了硬往结构化程序设计里边套,而不用goto语句,写出来的程序越难以理解
所以说正确少量地使用goto应该是好习惯
In the beginning I was not the best.
And the world was also not the best.
But I still know that I am who I am.
Because I think that it is good.
I have been working hard.
I have been keeping growth with the world.
And it was so.

1059

主题

2442

帖子

6万

积分

用户组: 管理员

一只技术宅

UID
1
精华
221
威望
348 点
宅币
19502 个
贡献
40278 次
宅之契约
0 份
在线时间
1840 小时
注册时间
2014-1-26
发表于 2015-8-21 19:02:42 | 显示全部楼层
cyycoish 发表于 2015-8-21 16:55
@0xAA55 我发现有时候为了硬往结构化程序设计里边套,而不用goto语句,写出来的程序越难以理解
所以说正确 ...

其实应该做成子程序的就得做成子程序,事实上这样效率更高(过小的子程序会被编译器自动内联,而有一定体积的子程序则会被CPU缓存起来。)

5

主题

22

帖子

109

积分

用户组: 小·技术宅

UID
594
精华
0
威望
0 点
宅币
87 个
贡献
0 次
宅之契约
0 份
在线时间
7 小时
注册时间
2014-12-14
 楼主| 发表于 2015-8-24 17:08:16 | 显示全部楼层
0xAA55 发表于 2015-8-21 19:02
其实应该做成子程序的就得做成子程序,事实上这样效率更高(过小的子程序会被编译器自动内联,而有一定体 ...

SOGA..原来如此。。

37

主题

184

帖子

1851

积分

用户组: 管理员

UID
8
精华
1
威望
14 点
宅币
1610 个
贡献
24 次
宅之契约
0 份
在线时间
259 小时
注册时间
2014-1-27
发表于 2017-9-8 18:52:31 | 显示全部楼层
cyycoish 发表于 2015-8-21 16:55
@0xAA55 我发现有时候为了硬往结构化程序设计里边套,而不用goto语句,写出来的程序越难以理解
所以说正确 ...

用下goto,程序有可能更清晰易读。

本版积分规则

QQ|申请友链||Archiver|手机版|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图  

GMT+8, 2020-7-11 20:12 , Processed in 0.116923 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表