一,随机数函数
1.rand
int rand(void)
返回一个0到rand_max随机的整数。((rand_max)是一个宏,为32767)
使用前需要调用srand函数,设置随机数的生成器。
2.srand
void srand (unsigned int)
只需调用一次。要给srand传递一个变化的值,比如计算机上的时间(时间戳)。
时间戳:从1970年1月1日开始所经过的秒数。
3.time
time函数返回一个时间戳
time_t time (time_t*timer) //time_t是long long
二,一个简单的猜数字游戏
#include<stdio.h>
#include<stdlib.h>
#include <time.h>
void menu()
{
printf("********菜单********\n");
}
void game()
{
int ret = rand()%100+1; //生成1到100之间
//printf("%d\n", ret);
int guess = 0;
while (1)
{
printf("请猜数字\n");
scanf("%d\n", &guess);
if (guess > ret)
{
printf("猜大了\n");
}
else if (guess < ret)
{
printf("猜小了\n");
}
else
{
printf("猜对了\n");
break;
}
}
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL)); //NULL是一个空指针,srand只需调用一次
do
{
menu();
printf("请选择>");
scanf("%d\n", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("输入错误\n");
break;
}
} while (input);
return 0;
}
三,goto语句
1. 真正作用:跳出两层或多层循环。break则不能实现。
只能在函数内部跳转,不能跨函数。
不要滥用,少用。
int main()
{
again:
printf("hello\n");
goto again;
end:
return 0;
}
//死循环
2. 关机程序
#include <stdlib.h>
#include <string.h>
int main()
{
char input[20] = {0};
system("shutdown -s -t 60");
again:
printf("你的电脑将在1分钟之内关机,输入:取消,取消关机");
scanf("%s", &input);
if (strcmp(input ,"取消") == 0)
{
system("shutdown -a");
}
else
{
goto again;
}
return 0;
}
四,练习
1. switch(c)语句中
c的类型可以是char。因为字符的本质是字符的ascii码值,ascii码值是整型。
2.指针变量是用来存放地址的
地址的大小为32bit /64bit;
所以指针变量的大小为32bit/ 64bit;
3.打印100到200的素数
#include<math.h>
int main()
{
int i = 0;
for (i=101;i <= 200; i += 2)
{
int j = 0;
int flag = 1;
for (j = 2; j <=sqrt(i); j++)
{
if (i % j == 0)
{
flag = 0;
break;
}
}
if (flag == 1)
printf("%d ", i);
}
return 0;
}