搭建一个视频网站多少钱,百度注册页面,做游戏网站要多少钱,百度静态网站C 语言 - 循环嵌套、函数
1. 循环嵌套
1.1 作用
循环 套 循环。
1.2 使用
需求1#xff1a; 打印以下图形#xff1a; * * * *
* * * *
* * * *
* * * *代码#xff1a; 1、使用循环打印 #include stdio.h
int main(int argc, char const *argv[])
{for (int i…C 语言 - 循环嵌套、函数
1. 循环嵌套
1.1 作用
循环 套 循环。
1.2 使用
需求1 打印以下图形 * * * *
* * * *
* * * *
* * * *代码 1、使用循环打印 #include stdio.h
int main(int argc, char const *argv[])
{for (int i 0; i 4; i){printf(* * * *\n);}return 0;
}2、循环嵌套打印 #include stdio.h
int main(int argc, char const *argv[])
{for (int i 0; i 4; i) //外层控制行数{for (int j 0; j 4; j) //内层控制每一行的样式{printf(* );}printf(\n);}return 0;
}#include stdio.h
int main(int argc, char const *argv[])
{for (int i 0; i 4; i){for (int j 0; j 4; j){if (j i){printf(* );}}printf(\n);}return 0;
}小结 i
0 *
1 * *
2 * * *
3 * * * *0 1 2 3 j外层 控制 行数 内层 控制 每一行的样式 需求2 打印以下图形 *
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
* * * * * * * *
* * * * * * * * * 代码 #include stdio.h
int main(int argc, char const *argv[])
{for (int i 0; i 9; i){for (int j 0; j 9; j){if (j i){printf(* );}}printf(\n);}return 0;
}优化 #include stdio.h
int main(int argc, char const *argv[])
{for (int i 0; i 9; i){for (int j 0; j i; j){printf(* );}printf(\n);}return 0;
}需求3 打印9*9乘法表 #include stdio.h
int main(int argc, char const *argv[])
{for (int i 1; i 10; i){for (int j 1; j i; j){// 1 * 1 1printf(%d * %d %d\t, i, j, i*j);}printf(\n);}return 0;
}结果如下 1.3 案例
例1 百文百鸡 中国古代有一个人去市场买鸡 公鸡3文钱一只母鸡2文钱一只小鸡1文钱三只 这个人有100文钱要求买100只鸡请问他可以有多少中买法每种每种买法可以可以公鸡多少只母鸡多少只小鸡多少只 数学思路假设:公鸡x只母鸡y只小鸡100-x-y只3 * x 2 * y (100 -x -y) / 3 100;x y (100 - x - y) 100;
代码思路:公鸡取值范围:0~33母鸡取值范围:0~50小鸡取值范围:0~100遍历代码 #include stdio.h
int main(int argc, char const *argv[])
{int num 0;for (int g 0; g 34; g){for (int m 0; m 51; m){int x 100 - g - m;if (3 * g 2 * m x / 3 100 x % 3 0){printf(公鸡:%d只,母鸡:%d只,小鸡:%d只\n, g, m, x);num;}}}printf(共有%d种买法\n, num);return 0;
}输出结果 公鸡:0只,母鸡:40只,小鸡:60只
公鸡:5只,母鸡:32只,小鸡:63只
公鸡:10只,母鸡:24只,小鸡:66只
公鸡:15只,母鸡:16只,小鸡:69只
公鸡:20只,母鸡:8只,小鸡:72只
公鸡:25只,母鸡:0只,小鸡:75只
共有6种买法例2 鸡兔同笼 养殖户将鸡与兔子放在同一个笼中 该养殖户无法数清鸡的数量与兔的数量 但是该养殖户数出了腿的数量与头的数量 腿60 头20 请您帮助养殖户计算鸡兔个几何 数学思想:设:兔子有t只,鸡有j只4 * t 2 * j 60;t j 20;t 20 - j;4 * (20 -j ) 2j 60;80 -4j 2j 60;80 - 2j 60;80 - 60 2j;20 2j;j 10;t 10;
代码思想:鸡的取值范围:0~20兔的取值范围:0~15代码 #include stdio.h
int main(int argc, char const *argv[])
{int tag 0;for(int j 0; j 20; j){for(int t 0; t 15; t){if(j t 20 4 * t 2 * j 60){tag 1;printf(鸡有:%d只,兔有:%d只\n,j,t);}}}if(tag){printf(输入的头与腿数量正确\n);}else{printf(此题无解,头腿数量有误\n);}return 0;
}// 输出鸡有:10只,兔有:10只2. 函数
2.1 作用
封装一段代码使其便于使用。 注意 一个功能可以封装一个函数定义函数的时候一切 以功能为目的根据功能去定义函数的参数和返回值。 2.2 分类 1、库函数 (c 库实现的) 不能直接操作内核 2、系统调用 (操作系统实现的函数) 可以直接操作内核 3、自定义函数 程序员自己实现的函数 定义调用 2.3 使用步骤
① 声明(可有可无) 语法: extern 返回值类型 函数名(形参列表); 注意: 在函数外声明声明函数时可以忽略形参的变量名不写 ② 定义
语法
返回值类型 函数名(形参列表)
{函数体
}解释 返回值类型返回值的数据类型当函数没有返回值返回值类型为void(空类型) 函数名标识符自定义的 形参列表根据实际情况可有可无多个参数之间使用逗号隔开每个参数有数据类型变量名编写 函数体封装的代码 return结束当前函数 return xxx结束当前函数并返回xxxxxx就是返回值 注意 一个函数最多只能有一个返回值同一个源文件中函数名不能重复(c语言不支持重载)函数不能定义在函数中 例1定义函数计算101的结果
voild add01()
{int x 10 1;printf(x%d\n,x);
}例2定义一个函数计算两数之和
void add02(int x,int y)
{int sum x y;printf(sum%d\n,sum);
}例3定义一个函数计算 1 2的结果并将结果返回给调用处
int add03()
{int x 1 2;return x;
}例4定义一个函数判断是否成年成年返回1未成年返回0
int iscN(int age)
{if(age 18){return 1;} else{return 0;}
}③ 调用 语法: 调用 无返回值 的函数 函数名(实参列表); 调用有返回值的函数 函数名(实参列表);变量名 函数名(实参列表); 注意: 实参列表 要与 形参列表 一致 (长度一致顺序一致数据类型一致)一个函数可以被调用无数次只能在函数中调用 例
add01();add02(1,2);
add02(5,10);int a 1;
int b 9;
add02(a,b);add03();
int x add03();iscN(19);
int y iscN(20);
int age 17;
int z iscN(age);2.4 特殊情况
① 多重调用
在函数A中调用函数B,在B中调用c,c中调用....例
#include stdio.h
extern void funA();
extern void funB();
extern void func();
void funA()
{printf(A开始\n);funB();printf(A结束\n);
}void funB()
{printf(B开始\n);func();printf(B结束\n);
}
void func()
{printf(c开始\n);printf(c结束\n);
}
int main(int argc, char const *argv[])
{funA();return 0;
}② 递归
在函数中调用该函数,会形成循环例
#include stdio.h
void test(int num)
{printf(num%d\n,num);if (num 0){num--;test(num);}
}
int main(int argc, char const *argv[])
{test(2);return 0;
}③ 多文件编译跨文件调用函数 文件105_codeA.c #include stdio.h
extern void test05();
extern int num;
int main(int argc, char const *argv[])
{test05();printf(05_codeB\tnum%d\n,num);return 0;
}文件205_codeB.c #include stdio.h
int num 20;
void test05()
{printf(测试\n);
}编译 gcc 05_codeA.c 05_codeB.c 结果 3. 变量的存储类别 程序是一个文件 一个正在进行的程序称为一个进程 一个进程系统会为其分配一片运行内存 在32位系统下每个进程的寻址范围是4G
3.1 数据存储分类 1)、堆 在动态申请内存的时候在堆里开辟内存。 2)、栈 主要存放局部变量。 3)、静态全局区 未初始化的静态全局区 静态变量定义变量的时候前面加 static 修饰或全局变量 没有初始化的存在此区 初始化的静态全局区 全局变量、静态变量赋过初值的存放在此区 4)、代码区 存放咱们的程序代码 5)、文字常量区 存放常量的 3.2 函数相关
① 普通成员函数(全局函数)
语法:返回值类型 函数名(形参列表){函数体}特点: 可以在当前 .c 文件(源文件)中使用也可以在其他.c文件中使用 ② 静态成员函数(静态全局函数)
语法:static 返回值类型 函数名(形参列表){函数体}特点: 只能在当前.c文件(源文件)中使用 3.3 变量相关
① 局部变量 定义位置当前函数中 作用域所声明的代码块中 生命周期调用所在函数时生成随着所在代码块的执行完毕而销毁 默认值随机数 ② 成员变量(全局变量) 定义位置在函数外 作用域当前程序中 生命周期随着所在进程的执行而生成随着所在进程的结束而结束 默认值0 ③ 静态局部变量 定义位置当前函数中 作用域所声明的代码块中 生命周期第一次调用所在函数时生成随着所在进程的执行完毕而销毁只会定义一次 默认值0 例
#include stdio.h
void test()
{static int x 10;x;printf(x%d\n,x);
}int main(int argc, char const *argv[])
{test();test();test();return 0;
}输出结果 x11 x12 x13 ④ 静态成员变量(静态全局变量) 定义位置在函数外 作用域当前源文件中 生命周期随着所在进程的执行而生成随着所在进程的结束而结束 默认值0 4. const
const 修饰的变量值不能被修改