三目运算符
三目运算符/问号表达式(相当于if else)
passwordTwo = 123 ? printf("密码正确\n") : printf("密码错误 还有两次机会 请重新输入密码:");
Srand - 播种 确定随机数的范围
Rand - 产生随机数
使用 rand需导入头文件stdlib.h头文件
每次重新运行的结果是一样的
若不以时间为种子,因为每次运行的种子不变 会导致每次运行产生的随机数一样 要改变随机数就要改变种子 通常以时间作为种子(起始时间 - 执行程序的那一刻)
用时间导入头文件
#include <time.h>
Sleep
苹果 导入头文件Linux)sleep单位是1秒
windows 导入头文件 sleep单位是1秒
#include <windows.h>
Fflush(stdout)
:先把输出的东西写到终端 再做其他事 使两件事同步
\n 光标定位到下一行行首
\r 光标定位到当前行行首
(windows)
循环语句
For
和次数相关 For(表达式1;表达式2;表达式3) 分号不能省略
表达式1:
初始循环控制变量 只会执行一次 可以省略
如需要扩大作用域 则放在循环外面
如果不需要 则尽量放在里面
表达式2:
循环执行条件 不可省略 每次循环都会判断条件是否成立
成立就执行
不成立就退出循环
表达式3:
循环控制变量的变化 在当前这一次执行完毕后才执行这个表达式
While
和循环条件有关
通常不需要关注次数
Break
提前跳出整个循环
Continue 结束当前本次循环
继续下次循环 本次循环不执行
课堂练习
猜数字小游戏
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
int main() {
int count = 3;//记录产生的随机数的个数
int oldNum = 0;
int guessNum = 0;
srand(time(0));//播种子 确定随机数的范围
for (; ; ) {//嵌套结构 - 无限循环
for (int i = 0; i < count; ++i) {
int temp = rand() % 9 + 1;//产生随机数
printf("%d",temp);//打印随机数
oldNum = oldNum * 10 + temp;//将个体随机数转化成一个整体
}
fflush(stdout);//先将printf打印的函数输出 再
_sleep(1000);//暂停1s
printf("\n");
printf("请输入刚刚看到的数字:");
scanf("%d",&guessNum);
if (oldNum == guessNum){
printf("记性真好,继续吧!\n");
count++;//下次产生的随机数加一
oldNum = 0;//将上次的值清零以便得到新的随机数
} else{
printf("你记错了,真笨,你不适合玩这个游戏\n游戏结束!");
break;//结束循环
}
}
return 0;
}
无限循环
第一种
#include <stdio.h>
int main(){
int count = 0;
for (int i = 1; i < 11 ; i++) {
printf("%d ",i);
if (i == 10){
i = 0;
count++;
}
}
return 0;
}
第二种
#include <stdio.h>
int main(){
int count = 0;
for (; ; ) {
for (int i = 1; i < 11 ; i++) {
printf("%d ", i);
}
}
return 0;
}