怎么在循环中精简代码——将循环测试和更新循环放在一起~
2017-03-25 21:42
176 查看
先来看一个代码
再来看这个精简代码
可以发现这个精简方法是——将循环测试与更新循环放在一起
/*感觉写代码最不舒服的就是下面的这个情况
真的感觉为之难受了一个学期。。。就是明明循环内要写这个语句,但是循环外又必须写,没有办法的难受。。。
但是今天,突然有一个代码给我启发:
*********C对代码的格式要求宽松,这样写让其中的每个行为更加清晰
那么根据上面的这个格式的启发,我突然想到精简上面的那个难受的代码可以这么干:
核心思想还是精简方法是——将循环测试与更新循环放在一起
所以下次再面对这种难受的情况的时候,就像上面的那个代码那样干哦~~
精简代码第二弹
核心思想还是精简方法是——将循环测试与更新循环放在一起
这里利用的是scanf函数的返回值,将其作为测试循环的条件~
核心思想还是精简方法是——将循环测试与更新循环放在一起
#include #include #include int main(void) { char ch; ch = getchar(); while (ch != '\n') { if (ch == ' ') putchar(ch); else putchar(ch + 1); ch = getchar(); } putchar(ch); system("pause"); return 0; }
再来看这个精简代码
#include #include #include int main(void) { char ch; while ((ch=getchar()) != '\n') { if (ch == ' ') putchar(ch); else putchar(ch + 1); } putchar(ch); system("pause"); return 0; }
可以发现这个精简方法是——将循环测试与更新循环放在一起
/*感觉写代码最不舒服的就是下面的这个情况
#include #include #include int square_sum(int a, int b); int main(void) { int lower, upper; printf("请输入下限整数:"); scanf("%d", &lower); printf("请输入上限整数:"); scanf("%d", &upper); while (lower < upper) { printf("%d\n", square_sum(lower, upper)); printf("请输入下限整数:"); scanf("%d", &lower); printf("请输入上限整数:"); scanf("%d", &upper); } printf("Done\n"); system("pause"); return 0; } int square_sum(int a, int b) { int sum = 0; for (; a <= b; a++) { sum += a*a; } return sum; }
真的感觉为之难受了一个学期。。。就是明明循环内要写这个语句,但是循环外又必须写,没有办法的难受。。。
但是今天,突然有一个代码给我启发:
#include #include #include int main(void) { char ch; while ( (ch = getchar()) != '\n') { if (ch == ' ') putchar(ch); else putchar(ch + 1); } putchar(ch); system("pause"); return 0; }
*********C对代码的格式要求宽松,这样写让其中的每个行为更加清晰
那么根据上面的这个格式的启发,我突然想到精简上面的那个难受的代码可以这么干:
#include #include #include int square_sum(int a, int b); int main(void) { int lower, upper; while (printf("请输入下限整数:"), scanf("%d", &lower), printf("请输入上限整数:"), scanf("%d", &upper), lower < upper) { printf("%d\n", square_sum(lower, upper)); } printf("Done"); system("pause"); return 0; } int square_sum(int a, int b) { int sum = 0; for (; a <= b; a++) { sum += a*a; } return sum; }
核心思想还是精简方法是——将循环测试与更新循环放在一起
所以下次再面对这种难受的情况的时候,就像上面的那个代码那样干哦~~
精简代码第二弹
#include #include #include #include int main(void) { bool isPrime;//像这种只用取两个值,只用占一个字节的变量就可以设置成bool类型 long num;//为了扩大num可以取值的范围,故使用long型的变量 while (isPrime=true,scanf("%ld",&num)==1)//一定要记得,long型变量的转换说明对应的不应该是%l而应该是%ld !!!!!!!! { for (long i = 2; (i*i) <= num; i++) { if (num%i == 0) { isPrime = false; if ((i*i) == num) { printf("%ld is %ld的因数\n", i, num); } else printf("%ld and %ld is %ld 的因数\n", i, num / i, num); } } if (isPrime) { printf("%ld is prime\n", num); } printf("press a digit to continue or press a nonnumeric to quit:"); } printf("bey~\n"); system("pause"); return 0; }
核心思想还是精简方法是——将循环测试与更新循环放在一起
这里利用的是scanf函数的返回值,将其作为测试循环的条件~
核心思想还是精简方法是——将循环测试与更新循环放在一起
相关文章推荐
- 141029 V7 异步通知测试,15分钟循环代码重构,同步更新payInfo测试,支付成功timer测试成功说明
- 并非所有的代码路径都返回值问题,返回值一般是放在循环语句里..
- 一起谈.NET技术,VS2010 测试功能之旅:编码的UI测试(4)-通过编写测试代码的方式建立UI测试(下)
- sos 怎么在代码里设置将一个imagebutton放在屏幕的中间
- [Unity3D学习]Unity代码热更新解决方案测试结果总结
- [Unity3D学习]Unity代码热更新解决方案测试结果总结
- J2ME代码效率测试_for循环和除法
- 第15篇 安卓一对一测试问题(三)更新代码(一)
- sos 怎么在代码里设置将一个imagebutton放在屏幕的中间
- 可运行代码 文本框 插入html code 更新以后出现乱码。怎么解决?
- ASP.Net一键自动化更新代码、编译、合并dll、压缩js、css、混淆dll、zip打包、发布到测试环境的bat批处理
- MySQL与MSSQl使用While语句循环生成测试数据的代码
- 做的一些测试数据的分析 一个是直接循环插入数据库 一个是循环好了放在数组里 在插入数据库
- Java 7:最新特性更新、代码示例及性能测试
- 工作中积累的一些验证基础知识的测试代码(以后不定期更新)
- 一起谈.NET技术,走向ASP.NET架构设计——第二章:设计/ 测试/代码
- views中的公共代码放在一起
- 再探Java 7:最新特性更新、代码示例及性能测试
- [Unity3D学习]Unity代码热更新解决方案测试结果总结
- 【腾讯TMQ】和开发一起写代码,让测试左移起来