1.关机小程序
int main()
{
char input[10] = { 0 };
system("shutdown -s -t 60");
again:
printf("你的电脑将在1分钟内关机,请输入我是猪将取消关机\n");
scanf("%s", &input);
if (strcmp(input, "我是猪") == 0)
{
system("shutdown -a");
}
else
{
goto again;
}
return 0;
}
字符串不能直接比较,可以用strcmp比较库函数,如果为0,两个值相等,具体可以看MSDN。
system是命令操作符,shutdown -s -t 60,s是关机,t是时间,60是秒。
goto相当于一个”传送“,传送到上面again的语句中,也可以写成while循坏。
2.二分查找
在一个有序数组中查找具体的某个数字n。 有序!!!
二分查找在一个有序数组中1,2,3,4,5,6,7,8,9,10.假如找7,我们可以先取出中间的数5,然后跟7进行比较,5比7小所以在5右边找,然后从6,7,8,9,10中再取出中间的数8进行比较,8比7大,所以在左边范围又缩小了,这样速度更快。
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int k = 7;
int left = 0;
int right = sizeof(arr) / sizeof(arr[0])-1; /*数组下标为*//*4*/
//二分法,对半找
while (left<=right)
{
int mid = left + (right - left) / 2;
if (k > arr[mid]) /*arr[mid]数组下标*/
{
left = mid + 1; /*假如找7,mid是5,新left等于mid+1的数往后接着找*/
}
else if (k < arr[mid])
{
right = mid - 1; /*假如找2,mid是5,新right等于mid-1的数往后接着找*/
}
else
{
printf("找到了下标是%d", mid);
break;
}
}
if (left > right)
{
printf("查找错误,请重新查找\n");
}
return 0;
}
3.猜数字小游戏
1. 电脑随机生成一个数字(1-100)
2.玩家猜数字
玩家猜小了,就告知猜小了
玩家猜大了,就告知猜大了
直到猜对为止
3.游戏可以一直玩
#include<string.h>
#include<windows.h>
#include<stdlib.h>
#include <time.h>
#include<stdio.h>
void menu()
{
printf("********************\n");
printf("******1. play ******\n");
printf("******0. exit ******\n");
printf("********************\n");
}
void game()
{
//1.生成随机数1-100
int guess = 0;
int ret = rand() % 100 + 1;
/*生成随机数,用时间戳。*/ /*放入循坏里面,不然按快了会重复*/
//2.猜数字
while (1)
{
printf("请输入数字>:");
scanf("%d", &guess);
if (guess > ret)
{
printf("猜大了\n");
}
else if (guess < ret)
{
printf("猜小了\n");
}
else
{
printf("猜对了\n");
break;
}
}
}
int main()
{
int input = 0;
do
{
menu();
srand((unsigned int)time(NULL));
printf("请选择>:");
scanf("%d", &input);
switch (input)
{
case 1:
game();
case 0:
printf("退出游戏\n");
break;
default:
printf("请重新输入\n");
break;
}
} while (input);
return 0;
}
生成随机数用时间戳的概念
rand()%100生成的数字是0-99的数字,rand()%100+1就可以生成1-100之间的数字了
而且rand()101生成的是0-100之间的数字。
只用rand这样生成的值是固定的不够随机,要用srand,并且把它放入main函数里面,不然很快的话,值也会重复