学习目标:
练习题:
- 算1!+2!+3!+…+10!
- 查找有序数列下标号
- 从两边到中间出现字符
- 模拟输入密码界面(输入错误三次就不能重新输入了)
- 猜数字游戏
- 60s关机
学习内容:
- 算1!+2!+3!+…+10!
int main()
{
int x=1;
int y=1;
int sum = 0;
for (x; x <= 10; x++)
{
y = y * x;
sum = y + sum;
}
printf("%d", sum);
return 0;
}
- 查找有序数列下标号
int main()
{
int n =10;
int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int left= arr[0];
int right = arr[9];
int mid=(left+right)/2;
if (n == 10)
{
printf("下标为9");
}
else
{
while (n != mid)
{
if (n < mid)
{
right = mid;
mid = (left + right) / 2;
}
else if (n > mid)
{
left = mid;
mid = (left + right) / 2;
}
else
break;
}
printf("下标为%d", n - 1);
}
return 0;
}
- 从两边到中间出现字符
#include<windows.h>//为了调用Sleep(500);
#include<string.h>
#include<stdlib.h>//为了调用system("cls");
int main()
{
char arr[100] = { "asdfghjklaihan,knvoahadjgalgjxkaai" };
char arr1[100] = { "************************************" };
int end = strlen(arr);//用来计算字符串的字符个数
int left = 0;//最左侧的字符下标号固定为0
int right = end-1;//最右侧的字符下标号是(字符个数-1)
while (left<=right)
{
printf("%s\n", arr1);
arr1[left] = arr[left];
arr1[right] = arr[right];
left++;
right--;
Sleep(500);//延迟500毫秒进行下一步,需要<windows.h>头文件
system("cls"); //该函数是用于调用电脑里的cmd,并执行cls,来清除界面。此处可以用来达到动画效果。
}
printf("%s", arr);
return 0;
}
- 模拟输入密码
#include<stdio.h>
#include<string.h>//为了调用strcmp(arr, passwords)比较arr和passwords两个字符串是否相等
int main()
{
int i;
char passwords[10] = { "asdfg" };
char arr[10] = { 0 };
for (i = 0; i < 3; i++)
{
printf("请输入密码");
scanf("%s", arr);
if (strcmp(arr, passwords) != 0)//比较两个字符串是否相等
{
printf("密码错误,请重新输入");
}
else
{
printf("欢迎");
break;
}
}
if (i == 3)
{
printf("错误三次,明天再试");
}
return 0;
}
- 猜数字游戏
#include<stdio.h>
#include<time.h>//用于使用时间戳
#include<stdlib.h>//用于调用srand函数
void mute() //做一个菜单界面
{
printf("*******************\n");
printf("*******1.play******\n");
printf("*******0.exit******\n");
printf("*******************\n");
}
void play()//游戏
{
int guess = 0;
int ret = rand() % 100 + 1;
do {
printf("猜数字\n");
scanf("%d", &guess);
if (ret > guess)
{
printf("猜小了\n");
}
else if (ret < guess)
{
printf("猜大了\n");
}
else
{
printf("猜对了\n");
}
}
while (ret != guess);
}
int main()
{
int input = 0;
//srand函数是用来生成随机数的,但是想要用srand函数生成随机数,就需要给他一个随机数,也就是给他一个时间戳。
//由于srand函数里面放的数的类型为“unsigned int”,但time函数返回的值的类型为“time_t”,所以在time前面用(unsigned int)进行类型强行转换。
//srand((unsigned int)time(NULL));必须放在主函数里面,以保证数字足够随机。
srand((unsigned int)time(NULL));
do {
mute();
printf("请选择1/0\n");
scanf("%d", &input);
switch (input)
{
case 1:
play();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("输入错误\n");
break;
}
} while (input);
return 0;
}
- 60s关机,除非输入“我是猪”
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char pass[] = { "我是猪" };
char arr[] = { 0 };
system("shutdown -s -t 60");
a://用这种格式来做符号,用于goto找到跳出的位置
printf("请输入:");
scanf("%s",arr);
if (strcmp(pass, arr)==0)
{
system("shutdown -a");
}
else
{
printf("再试试");
goto a;//跳出到a:/goto不能跨函数执行
}
return 0;
}