C语言学习笔记4

张开发
2026/4/15 6:40:44 15 分钟阅读

分享文章

C语言学习笔记4
一、综述今天真正的系统性的学完了循环包括for、while、do...while以及相关的语句比如break、continue、goto还学习了随机数相关的关键词接下来是详细的讲解。二、循环1、循环语句纠正一下之前的错误循环语句是for、while、do...whileswitch并不是循环函数for循环是C语言中最常用的循环主体结构为for(表达式1;表达式2;表达式3)其中表达式1用于初始化变量表达式2用来描述表达式表达式3则用于操作函数使其发生变化。#includestdio.h int main() { int a 0; // 初始化aa10则继续循环;a自增1 for(a 0 ; a 10 ; a) { printf(%d\n , a ); } return 0 ; }这段代码会一直循环打印a代码的输出结果为123456789因为for循环的判断逻辑为a以后判断a10所以a9再加一后变为a10所以跳过后面的打印语句最终结果就是10无法打印所以for循环的执行次数为n-1.while语句和for语句的区别在于while语句的初始化和自增位置不同。#includestdio.h int main() { int a 0 ; while(a10) { a; printf(%d\n , a); } return 0 ; }这段代码也是循环打印1-10结果为12345678910因为while语句的判断条件是开始的时候判断所以a9的时候并没有超过10还会运行一次然后a再打印所以就可以打印出10所以while语句的循环次数为nwhile语句和for语句比起来最大的问题在于for将变量的初始化及操作变量集成在开头而while本身只有表达式这可能导致while循环容易出现死循环例如忘记给变量增加变化就会导致变量一直不变从而造成死循环。do...while语句是while语句的一种变种写法为#includestdio.h int main() { int a 0; do { a; printf(%d\n, a); } while (a 10); return 0; }打印结果与上面的while循环的结果一致但是有一点需要注意while语句是先判断再开始循环所以可能完全不循环do...while会先执行一次代码再进行判断。2、循环关键词循环中常用的关键词为continue、break、gotocontinue用于重新开始新一轮循环break用于跳出循环goto则是跳转至某个特定的位置#includestdio.h int main() { int a 0; this: while (a 10) { a; if (4 a) { continue; } if (7 a) { break; } printf(%d , a); } if (a10) { goto this; } return 0; }遮断代码的运行结果为1 2 3 5 6 8 9 10因为a 4的时候使用了continue语句跳过了后面的代码重新开始所以没有打印4,7 a的时候直接跳出了循环所以没有打印7又因为使用了goto跳转到了this的位置所以重新开始了一遍循环但是a没有初始化所以a是从7开始循环然后a后a8就不再触发continue、break、goto所以代码运行结束。三、随机数C语言中的随机数关键词是rand取值范围为0~32767rand是一个伪随机数直接用rand输出的话最多5次为一个循环循环会是以下的数字循环41 18467 6334 26500 19169因为rand默认种子是1所以如果没有对种子进行初始化就会无法生成真随机数这时可以使用时间戳来对rand进行随机化#include stdio.h #include stdlib.h #include time.h int main() { srand((unsigned)time(NULL)); for (int i 0; i 5; i) { printf(%d , rand()); } return 0; }这段代码就是利用时间戳对rand的种子进行随机取值srand表示设置随机数种子,time表示时间戳NULL则表示不用时间戳的数据这样time(NULL)的数字就会赋给srand又因为srand需要int 类型的数据但是time生成的是无符号的数据所以使用unsigned强制将time赋给srand。

更多文章