关于使用c语言编写 一个猜随机数字的小游戏
一个猜随机数字的小游戏)
基础知识的普及(提示:有些知识我在代码注释里提及,所以不再正文中书写)
1. 创建和引用新函数
形式
game() //game是函数名。可以随意换成别的
{
}
前面先把新函数创建完之后,随后再引用(形式如实操),如果先引用后创建代码无法运行
void 函数名()
void的意思是这个函数不需要返回值
反例:int main() ,最后需要 return 0;
2.scanf函数的使用
使用时需要引入头文件<stdio.h>
scanf函数是用于识别键盘上的输入
形式:int a = 0;
//////////scanf(“%d”, &a);
其中a是一个整型变量,scanf若要识别输入,需要取地址,&就是取地址符号
但是对于数组并不需要’&',因为数组本身有地址
3.switch和if循环的应用
switch与if都为选择结构,但是用法并不一致
以下是switch的运用与示例(判断今天是否是工作日)
1.switch后的括号内只能是整型家族(整数和字符)
2.case 后面必须有一个空格,空格之后也只能是整数家族,然后要加上 ‘:’
3.switch之后只能跟一条语句,要想控制更多语句需要{ }
4.default主要是规避一些不符合预期类型的输入
5. default和各个case的顺序并不是固定的,但最好按照逻辑排序
6. case控制的语句之后要加上break,不然代码会一直往下跑
输入1
去掉break的示例输出效果 :工作日工作日工作日工作日工作日休息日休息日
int main()
{
int day = 0;
scanf("%d", &day);
switch (a) //后面不用加 ; ,与if、else一致,后面只能跟一条语句,想要更多就需要{}
{ //case后面要加 : ,case 与后面的常量或字符之间一定要有空格, switch、case后面只能跟整型 && 字符
case 1:
printf("工作日");
break; //要加break语句,不然代码会一直往下跑
case 2:
printf("工作日");
break;
case 3:
printf("工作日");
break;
case 4:
printf("工作日");
break;
case 5:
printf("工作日");
break;
case 6:
printf("休息日");
break;
case 7:
printf("休息日");
break;
default: //default后面也要加:,这个主要是用于规避一些不符合预期的输入值
printf("请重新输入");
break;
}
return 0;
}
同时,以上的代码可以简化
int main()
{
int day = 0;
scanf("%d", &day);
switch (a)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日");
break ;
case 6:
case 7:
printf("休息日");
break ;
}
return 0;
{
if语句
1.if语句后面只能跟一条语句,要跟多条需要 { },else同理
2.if() , 括号内的语句分真假,真为非零,假为零
反之,若括号内填入非零数字,那这个if语句一定会运算,填入0,则不会运算
switch、while后面的括号内部也是同理
//*******if语句
int main()
{
int a = 2;
if (a == 2) //形式: if(条件),后面不用+;
printf("对的\n");
else //同理,后面不用+;
printf("错的");
return 0;
//}
//*******if的嵌套
int main()
{
int a = 0;
scanf("%d", &a);
if (a >= 18) //拓展 不等于号: !=
// 小于等于号: <=
// 大于等于号: >=
//等于号: ==(用于判断变量是否等于某个特定的值, =是用于给变量赋值的)
printf("%s", "可以抽烟");
else
{
if (a <= 6 && a >= 0) //有两个条件需要同时满足时,在两个条件之间用 && 链接,不可以写成:10 < a < 30
//原因:该式子从左往右依次运算,当a=8,则 10 < a 结果为0, 0 < 30,最终结果成立
printf("不可能抽烟"); //这里提到了一个知识点,0表示假,非0表示真
else
{
if (a < 0)
printf("请重新认真输入");
else
printf("小孩子不能吐烟圈");
}
}
return 0;
}
关于选择结构,还有一种三目操作符(可运用于简单的结构)
//三目操作符形式: xxx ? yyy : zzz 其中xxx,yyy,zzz为表达式
//其运算规则: xxx 为真,则输出yyy
// xxx为假,则输出zzz
4.循环结构与其多层嵌套
1.while(表达式)
int main()
{
int n = 0;
scanf("%d", &n);
while (n)
{
printf("%d ", n % 10);
n /= 10;
}
return 0;
}
//练习:在屏幕上输出1~10的数
int main()
{
int a = 0;
while ( a<= 10)
{
printf("%d", a );
a++;
}
return 0;
}
2.do while
//*****do while语句
//形式: do //至少执行一次,后面只能跟一个语句,多条要加{}
// 语句 ;
// while( ); 这个while比较特殊,要加;
//*****加了{}形式
// do
// {
// 语句1;
// 语句2;
// }while();
//
//****范例
int main()
{
int i = 0;
do
{
printf("hello c");
i++;
} while( i <= 10);
return 0;
}
3.for
//*****2.for语句
//for (表达式1;表达式2;表达式3)
//表达式1:用于循环变量的初始化
//表达式2:用于循环结束的判断
//表达式3:用于循环变量的调整
//整个过程中表达式1只被执行1次,剩下是表达式2和3循环
//for后面只能跟一个语句,多条需要{}
//范例
int main()
{
for( i = 3 ;i <= 3 ; i=+3 )
printf("%d", i)
return 0;
}
4.补充:1.break也可用于跳出循环
//////////////2.continue用于跳过本次循环,进行下一次
5.多层嵌套
没什么好说的,但要提及的是,多层嵌套需要多个break,在多层嵌套时,想要跳出整个大循环要写很多break语句,这时可以用到goto语句,比较方便
goto范例:
//goto语句
//一般不建议用,但在跳出多层嵌套循环的时候比较好用
int main()
{
printf("%d", 2);
goto end;
printf("%d", 1);
end:
return 0;
}
5.使用rand函数生成随机数,并利用time函数进行种子更换
1.rand函数
想要使用rand函数需要引入头文件<stdio.h>
用法://1.为变量赋值
int a = rand()
********2.在printf中直接输出
printf(“%d”,rand());
需要注意 rand() 生成随机数需要种子,但其括号中是空的,这时默认种子为1
如果一直使用rand(),那么关闭程序,再输出的随机数与上一次相同
要想实现每次打开程序输出的随机数不一样,需要更换种子
2.time函数
想要使用time函数需要引入头文件<time.h>
time函数是计算1970年与现在时间的差值,以秒来计算,输出的类型为time_t,本质是整型
用法://1.time(NULL)————时间戳
3.更新种子
1.先在()内填入 time(NULL)//////////////////////////////形式:srand(time(NULL))
2.再将数据类型强制转换为unsigned int //////////形式:srand((unsigned int)time(NULL))
*小tips:强制转换数据类型的方式: a = (需要的数据类型) b
实操
void game() //void,意思是不需要返回值
{
srand((unsigned int)time(NULL)); //time本质十个整型,将其强制转化为unsigned int也无太大问题
//time(NULL): 时间戳
int input_2 = 0;
int count = 5;
int varible = rand()%100 +1;
while (count > 0)
{
scanf("%d", &input_2); //应该把scanf放在循环里
if (varible > input_2)
{
printf("数字小了\n");
}
else
{
if (varible < input_2)
{
printf("数字大了\n");
}
else
{
printf("恭喜你猜对了\n");
break;
}
}
count--;
}
if (count == 0)
printf("超出5次机会,请重新开始\n");
}
int main()
{
int first_input = 0; //变量的位置要在循环之前
do
{
printf("************************\n");
printf("*****1.start 0.exit*****\n");
printf("************************\n");
printf("请在这里输入1或0 \n");
scanf("%d", &first_input);
switch (first_input) //填需要判断的变量
{
case 1:
printf("开始游戏,请输入一个0~100的整数\n");
game(); //构造新函数
break;
case 0:
break;
default:
printf("请重新输入\n");
break;
}
} while (first_input); // 0是有说法的,返回值直接取消
return 0;
}

413

被折叠的 条评论
为什么被折叠?



