# include <stdio.h> int f(void) //括号中的void表示该函数不能接受数据,int表示返回的类型为int类型 { return 10; //向主调函数返回10 } void g(void) //函数名前面的void表示该函数没有返回值 { //return 10; //error 与第8行行首的void相矛盾 } int main(void) { int j = 88; j = f(); printf("%d\n", j); return 0; }
函数中的return和break示例
# include <stdio.h> void f(void) { int i; for (i=0; i<5; i++) { printf("大家辛苦了!\n"); break; } printf("同志们好!\n"); } int main(void) { f(); return 0; }
函数声明示例:
# include <stdio.h> void f(void); //函数声明,分号不能丢掉,这是前置声明,程序编译的时候在main函数中就知道f是一个函数了 int main(void) { f(); return 0; } void f(void) { printf("哈哈!\n"); }
如何在软件开发中合理的设计函数来解决实际问题
# include <stdio.h> bool IsPrime(int val) { int i; for (i=2; i<val; i++) { if (0 == val%i) break; } if (i == val ) return true; else return false; } int main(void) { int val; scanf("%d", &val); if ( IsPrime(val) ) //如果变量 i 加到了 val, 则是素数 printf("Yes!\n"); else printf("No!\n"); return 0; }
未使用函数前代码不易懂,也不易读,使用函数前的代码如下:
# include <stdio.h> int main(void) { int val; int i; int j; scanf("%d", &val); for (i=2; i<=val; i++) { for (j=2; j<i; j++) { if (0 == i%j) break; } if(j == i) printf("%d\n", i); } }
使用函数之后的代码如下:代码清晰易读
# include <stdio.h> bool IsPrime(int m) { int i; for (i=2; i<m; i++) { if (0 == m%i) break; } if(i == m) return true; else return false; } int main(void) { int val; int i; int j; scanf("%d", &val); for (i=2; i<=val; i++) { if ( IsPrime(i) ) printf("%d\n", i); } }
继续优化的代码如下:
# include <stdio.h> bool IsPrime(int m) { int i; for (i=2; i<m; i++) { if (0 == m%i) break; } if(i == m) return true; else return false; } void TraverseVal(int n) { int i; for (i=2; i<=n; i++) { if ( IsPrime(i) ) printf("%d\n", i); } } int main(void) { int val; int i; int j; scanf("%d", &val); TraverseVal(val); }
相关推荐
本书集综合性、实用性为一体,是学习C语言的优秀入门教材,在世界范围内广受欢迎,口碑极佳。书中除了讲解C程序设计语言,还广泛介绍了作为一名C程序设计人员应该掌握的必要知识,并提供了大量的实用性很强的编程...
《明解C语言 第3版 入门篇》是日本的C语言经典教材,自出版以来不断重印、修订,被誉为“C语言圣经”。 《明解C语言 第3版 入门篇》图文并茂,示例丰富,第3版从190段代码和164幅图表增加到205段代码和220幅图表,对...
前言 学生成绩管理系统:C语言程序设计期末大作业。 控制台版本开发过程整理 (文中尽介绍主要函数且都只有函数名,代码直接看文件) ... (本系统中所有的goto只作用在用户输入错误次数过多时跳转到函数末尾)
本书本着零基础学习C语言的精神,分4篇介绍了C语言和程序设计的相关知识。第1篇是前置知识,介绍程序设计概念及C语言的历史和发展,让读者建立起程序设计的思想。第2篇是基础知识,详细介绍C语言的语法规则和如何...
我们在链表中找到内核链表结构的地址,通过这个地址就可以找到外部大结构体的地址,通过大结构体就可以访问其中的成员 优势: 内核链表突破了保存数据的限制,可以用内核链表来保存任何数据(使用一种链表表示各种...
书中专门为学生提供了一个用C语言编写的实习项目,包括前端和后端设计,学生可以在一学期内创建一个功能完整的编译器。 本书适用于高等院校计算机及相关专业的本科生或研究生,也可供科研人员或工程技术人员参考。...
然而,与特定类关联的文件作用域声明在该类中被声明为类型、静态数据成员或静态成员函数(什么意思?),而不是不具名命名空间的成员。像上文展示的那样,不具名命名空间结束时用注释// namespace标识。 2、函数...
C语言自增运算符的置于变量前和变量后的区别与理解自加自减运算符的概念:在普通语句定义并用printf函数输出结果for循环中作为判断条件结语Reference 自加自减运算符的概念: 自增自减运算符存在于C/C++/C#/Java/...
本教程共分为5个部分,第一部分是C语言提高部分,第二部分为C++基础部分,第三部分为C++进阶部分,第四部分为C、C++及数据结构基础部分,第五部分为C_C++与设计模式基础,内容非常详细. 第一部分 C语言提高部分目录...
为了解决这个新出现的问题,标准化委员会决定设计一些新的头文件名,给那些穿上std外衣的组件所使用。把C++头文件的.h去掉,于是就有前面出现的iostream,同样C的头文件也做了相同的处理,同时在前面加上了一个字母...
3.6.1 使用文法以外的信息来解决分析动作的冲突 3.6.2 特殊情况产生式引起的二义性 3.6.3 IR分析的错误恢复 3.7 分析器的生成器 3.7.1 分析器的生成器Yacc 3.7.2 用Yaec处理二义文法 3.7.3 Yaec的错误...
3.6.1 使用文法以外的信息来解决分析动作的冲突 3.6.2特殊情况产生式引起的二义性 3.6.3 LR分析的错误恢复 3.7 分析器的生成器 3.7.1 分析器的生成器Yacc 3.7.2 用Yacc处理二义文法 3.7.3 Yacc的错误恢复 第4...
全书按照作者本人学习和实践的过程,带着读者从基础的计算机知识到高级的编程技术,从非常专业的汇编优化到非常实际的项目管理进行了一次游戏开发的全景探索。 本书不仅适合游戏开发者阅读,也会给所有的开发者和...
全书按照作者本人学习和实践的过程,带着读者从基础的计算机知识到高级的编程技术,从非常专业的汇编优化到非常实际的项目管理进行了一次游戏开发的全景探索。 本书不仅适合游戏开发者阅读,也会给所有的开发者和...
1、详细分析CMenu菜单类的常用成员函数的功能; 2、开发一个彩色带图标的CMenuEx自绘菜单类,并在绘图软件中用于图层前置、后置和删除等功能开发;
1. 前置C语言语法复习:条件语句、循环、函数、指针、结构体、联合 1. EasyX是针对C++风格的图形库,提供了C/C++编程接口,可以用来快 2. 安装