# 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); }