C语言期末复习条记(中)
目录五、选择控制结构
1.算法中的概念及形貌方法
2.关系运算符和逻辑表达式
3.条件运算符和条件表达式
4.两种多分支if
5.switch语句
6.逻辑运算符和逻辑表达式
六、循环控制结构
1.控制循环的方式
2.控制非法输入
3.选择三种循环的一样寻常原则
4.猜数游戏
5.嵌套循环
6.流程的转移控制
7.goto语句
七、函数
1.函数的参数传递
2.函数定义和函数声明的区别
3.防御性程序的设计
4.断言(Assert)
5.函数设计基本原则
6.嵌套调用
7.递归函数
8.变量的存储类型
9.模块化设计猜数游戏
八、数组
1.二维数组的存储结构
2.最大值算法
3.排序算法
(1)冒泡排序
(2)选择排序
4.查找算法
(1)序次查找
(2)折半查找
五、选择控制结构
1.算法中的概念及形貌方法
https://i-blog.csdnimg.cn/direct/36d73c6277364a0499c609df85824b77.png
https://i-blog.csdnimg.cn/direct/10bfd18829754c628d2b1a935166cfeb.png https://i-blog.csdnimg.cn/direct/1907dd9151004dbd8bbf0d7ad84fccef.png
2.关系运算符和逻辑表达式
https://i-blog.csdnimg.cn/direct/ba6205f14846434a9b37ca83835ee532.png
3.条件运算符和条件表达式
https://i-blog.csdnimg.cn/direct/e4c80ed4802846e5baec6e1dde95020d.png 4.两种多分支if
https://i-blog.csdnimg.cn/direct/6dd6cde1e47b4f768dd5015317d47548.png
https://i-blog.csdnimg.cn/direct/7844b790d72d47998428482230f29407.png
https://i-blog.csdnimg.cn/direct/2d89953ce07a4d84a9d3f9dc5cb1b444.png
如三角形的判定
main()
{
……
if (a+b>c && b+c>a && a+c>b) /*三角形的基本条件*/
{
if (a==b && b==c && c==a)
{
printf("等边");
flag = 0;
}
else if (a==b || b==c || c==a)
{
printf("等腰");
flag = 0;
}
if (a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a)
{
printf("直角");
flag = 0;
}
if (flag)
printf("一般");
printf("三角形\n");
}
else
printf("不是三角形\n");
}
5.switch语句
https://i-blog.csdnimg.cn/direct/2916fa46a9b24dad9e94b5e8f856a7ae.png
https://i-blog.csdnimg.cn/direct/a78411a92da3443abfcc245fca63d43f.png
没有break就会不停往下实行,记得写break
盘算器程序:
main()
{
int data1, data2; /*定义两个操作符*/
char op; /*定义运算符*/
printf("Please enter the expression:");
scanf("%d%c%d", &data1, &op, &data2);/*输入运算表达式*/
switch (op)
{
case '+': /*处理加法*/
printf("%d + %d = %d\n", data1, data2, data1 + data2);
break;
case '-': /*处理减法*/
printf("%d - %d = %d\n", data1, data2, data1 - data2);
break;
case '*': /*处理乘法*/
printf("%d * %d = %d\n", data1, data2, data1 * data2);
break;
case '/': /*处理除法*/
if (0 == data2)
printf("Division by zero!\n");
else
printf("%d/%d = %d\n", data1, data2, data1/data2);
break;
default:
printf("Invalid operator! \n");
}
}
此中为什么不消if (data2 == 0)?
答:在一些编程规范和老派的编程习惯中,保举将常量写在比力表达式的左边,像 if (0 == data2) 如许的写法。如许做的好处是,假如不小心写成了 if (0 = data2) (将比力写成了赋值),编译器会直接报错,由于在 C 语言中,常量是不能被赋值的,所以如许的写法能帮助程序员尽早发现这种低级但容易疏忽的错误。而假如写成 if (data2 == 0) ,当误写成 if (data2 = 0) 时,编译器通常不会报错,只是会把赋值操作的结果(也就是 0)作为条件判定的值,每每会导致程序逻辑出现意外情何况不容易被察觉。
6.逻辑运算符和逻辑表达式
https://i-blog.csdnimg.cn/direct/4f41167e545348b9af38a31962b273d9.png
https://i-blog.csdnimg.cn/direct/07a2146614ee4c33b5a1755ee7c8204f.png
六、循环控制结构
1.控制循环的方式
https://i-blog.csdnimg.cn/direct/ff2542af206c4088a485260e5d33d86a.png
2.控制非法输入
https://i-blog.csdnimg.cn/direct/fbc3db1430d44f488d81287dc22e771b.png
3.选择三种循环的一样寻常原则
https://i-blog.csdnimg.cn/direct/4f0deeaeabdd4700b2992a00d3143818.png
4.猜数游戏
https://i-blog.csdnimg.cn/direct/cc2d355fe9f3401ea374181dce47fa63.png
https://i-blog.csdnimg.cn/direct/9d69794231584643b4e5f80c4b520bae.png
https://i-blog.csdnimg.cn/direct/f352161abc6e405e80ceb8aaf255a92b.png
直到猜对为止
#include<stdlib.h>
#include<stdio.h>
#include<time.h>
main()
{
intmagic;
intguess;
intcounter; /*记录人猜次数的计数器变量*/
srand(time(NULL));
magic = rand() % 100 + 1;
counter = 0; /*计数器变量count初始化为0*/
do{
printf("Please guess a magic number:");
scanf("%d", &guess);
counter ++; /*计数器变量count加1*/
if (guess > magic)
printf("Wrong! Too high!\n");
else if (guess < magic)
printf("Wrong! Too low!\n");
else
printf("Right!\n");
}while (guess != magic);
printf("counter = %d \n", counter);
}
最多猜十次
#include<stdlib.h>
#include<stdio.h>
#include<time.h>
main()
{
intmagic;
intguess;
intcounter; /*记录人猜次数的计数器变量*/
srand(time(NULL));
magic = rand() % 100 + 1;
counter = 0; /*计数器变量count初始化为0*/
do{
printf("Please guess a magic number:");
scanf("%d", &guess);
counter ++; /*计数器变量count加1*/
if (guess > magic)
printf("Wrong! Too high!\n");
else if (guess < magic)
printf("Wrong! Too low!\n");
else
printf("Right!\n");
}while (guess != magic && counter < 10);
printf("counter = %d \n", counter);
}
猜多个数10次,猜不对就猜下一个数,直到用户选择竣事为止
do{
magic = rand() % 100 + 1;
counter = 0;
do{
printf("Please guess a magic number:");
scanf("%d", &guess);
counter ++;
if (guess > magic)
printf("Wrong!Too high!\n");
else if (guess < magic)
printf("Wrong!Too low!\n");
else
printf("Right!\n");
}while (guess != magic && counter < 10);
printf("counter = %d\n", counter);
printf("Do you want to continue(Y/N or y/n)?");
scanf(" %c", &reply);
}while ((reply == 'Y') || (reply == 'y'));
防止非法字符输入https://i-blog.csdnimg.cn/direct/370783a166634b5f828bb8c322b3083b.png
5.嵌套循环
https://i-blog.csdnimg.cn/direct/14e08576ed204779b53fd8f024e096b6.png
https://i-blog.csdnimg.cn/direct/4fd968d6372c4bbd8e782b76f3f1aa69.png
https://i-blog.csdnimg.cn/direct/ca2dacc694c84d4084c02f5e73625ebf.png 6.流程的转移控制
break和continue语句
break退出一层循环
continue中断此次循环,开启下一次
7.goto语句
https://i-blog.csdnimg.cn/direct/5de176132072413c8f7c209250b25dbe.png
韩信点兵
https://i-blog.csdnimg.cn/direct/6f119a9194a6404d963a3963aaecff44.png
#include <stdio.h>
main()
{
intx;
for (x=1; ;x++)
{
if (x%5==1 && x%6==5 && x%7==4 && x%11==10)
{
printf("x = %d\n", x);
goto END;
}
}
END:;
}
#include <stdio.h>
main()
{
intx;
for (x=1; ;x++)
{
if (x%5==1 && x%6==5 && x%7==4 && x%11==10)
{
printf("x = %d\n", x);
break;
}
}
}
#include <stdio.h>
#include <stdlib.h>
main()
{
intx;
for (x=1; ;x++)
{
if (x%5==1 && x%6==5 && x%7==4 && x%11==10)
{
printf("x = %d\n", x);
exit(0);
}
}
}
#include <stdio.h>
main()
{
intx;
intfind = 0; /*置找到标志为假*/
for (x=1; !find ;x++)
{
if (x%5==1 && x%6==5 && x%7==4 && x%11==10)
{
printf("x = %d\n", x);
find = 1; /*置找到标志为真*/
}
}
}
https://i-blog.csdnimg.cn/direct/5407b8c984294a0299bf0e63fa592611.png
七、函数
1.函数的参数传递
https://i-blog.csdnimg.cn/direct/398b2852ab1c4de0b6d0afcda6d88931.png2.函数定义和函数声明的区别
https://i-blog.csdnimg.cn/direct/f014469277774ae198709405917fc754.png
3.防御性程序的设计
https://i-blog.csdnimg.cn/direct/2361143257b64fb5b170d7869fb4c5e1.png
https://i-blog.csdnimg.cn/direct/b46d743c0a804704b74865794c4d662a.png
注意标红部门,声明为无符号类型,会产生报错,可以用下面的解决方法
https://i-blog.csdnimg.cn/direct/49f498b00cf342db81f0b46ffb09dd25.png 4.断言(Assert)
https://i-blog.csdnimg.cn/direct/0f3586c076c94df28f226a205254b19a.pnghttps://i-blog.csdnimg.cn/direct/8f1ee39be81e4fb39fb7c03121a43409.png
5.函数设计基本原则
https://i-blog.csdnimg.cn/direct/b6063ec67a244b8cb6242314aceb2887.png
6.嵌套调用
https://i-blog.csdnimg.cn/direct/49fd74028042438088f797f16c155f11.png 7.递归函数
https://i-blog.csdnimg.cn/direct/eca9c3da6b034c08adf790542171dffe.pnghttps://i-blog.csdnimg.cn/direct/b2dec62e2af048689a1bb4561c7f55bd.png
8.变量的存储类型
https://i-blog.csdnimg.cn/direct/32846019f1db4ab3ba529da397383f62.png
https://i-blog.csdnimg.cn/direct/a8c0d6d97cbc45f690d8d370c53667d4.png
auto和static https://i-blog.csdnimg.cn/direct/33143b0856cf496d96bb7a7d4544c207.png
寄存器变量
https://i-blog.csdnimg.cn/direct/319d10c6ee1945448a25a479703bc95d.pnghttps://i-blog.csdnimg.cn/direct/1a11bcc7392141e1a9ce90969444f016.png
9.模块化设计猜数游戏
https://i-blog.csdnimg.cn/direct/a387272f168b4bddbc289c16a9b17ed7.png
https://i-blog.csdnimg.cn/direct/45f3300ad38a4007b62f5e03f0a833bc.png https://i-blog.csdnimg.cn/direct/b9f0ec3da1ec42d2a09e9781526a1e43.png
https://i-blog.csdnimg.cn/direct/9248d8f0f7d14c3d9f1be77334912ef1.png
八、数组
1.二维数组的存储结构
https://i-blog.csdnimg.cn/direct/fd93659776e54da29a54b4dd5e1b4856.png
数组名的数组的首地址
2.最大值算法
https://i-blog.csdnimg.cn/direct/e145968b740948d885f343e5513b138e.png
3.排序算法
(1)冒泡排序
https://i-blog.csdnimg.cn/direct/0c897e98d0f94ce08283b98a4418466e.png
(2)选择排序
https://i-blog.csdnimg.cn/direct/62dcf37af69048a79ef2a39ea43fe2b7.png
4.查找算法
(1)序次查找
https://i-blog.csdnimg.cn/direct/ceacddbc656b47eebfe646449ee8b86a.png (2)折半查找
https://i-blog.csdnimg.cn/direct/de2d0b1209d94ade8c38c4f187b0e057.png
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]