- 1. 计算n的阶乘。1*2*3*4*5...*n
- 2. 计算1!+2!+3!+4!+...+10!
- 3. 在一个有序数组中查找具体的某个数字n。(二分查找)
- 4. 编写代码,演示多个字符从两端移动,向中间汇聚。
- 5. 编写代码实现,模拟用户登录场景,并且只能登录三次。(只允许输入三次密码,如果密码正确则提示登陆成功,如果三次均输入错误,则退出程序。)
- 6. 猜数字游戏
1. 计算n的阶乘。1*2*3*4*5...*n
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int i = 0;
int n = 0;
int ret = 1;
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
ret *= i;
}
printf("%d\n", ret);
return 0;
} /*输出结果为:6
720*/
2. 计算1!+2!+3!+4!+...+10!
//计算阶乘相加 1!+2!+3!+4!
//代码1
#include <stdio.h>
int main()
{
int i = 0;
int n = 0;
int ret = 1;
int num = 0;
for (n = 1; n <= 4; n++)
{
ret = 1; //计算n阶乘之前,先将ret初始化为1
for (i = 1; i <= n; i++)
{
ret *= i;
}
num += ret;
}
printf("%d\n", num);
return 0;
} //输出结果为:33
//代码2 改进 4!=4*3!
#include <stdio.h>
int main()
{
int i = 0;
int n = 0;
int ret = 1;
int num = 0;
for (n = 1; n <= 4; n++)
{
ret *= n;
num += ret;
}
printf("%d\n", num);
return 0;
} //输出结果为:33
3. 在一个有序数组中查找具体的某个数字n。(二分查找)
- 最坏查找 次
//在一个有序数组中查找具体的某个数字n
//在1 2 3 4 5 6 7 8 9 10 中查找 4
#include <stdio.h>
int main()
{
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int k = 4; //要查找的数字,在arr这个有序数组中查找 k = 4的值
int sz = sizeof(arr) / sizeof(arr[0]); //数组的元素个数
int left = 0;
int right = sz - 1;
while (left < right)
{
int mid = (left + right) / 2;
if (arr[k] < mid)
{
right = mid - 1;
}
else if (arr[k] > mid)
{
left = mid + 1;
}
else
{
printf("找到了,下标是:%d\n", mid);
break;
}
}
if (left > right)
printf("查找失败\n");
return 0;
} //输出结果为:找到了,下标是:5
4. 编写代码,演示多个字符从两端移动,向中间汇聚。
//编写代码,演示多个字符从两端移动,向中间汇聚
#include <stdio.h>
#include <string.h>
#include <windows.h>
int main()
{
char arr1[] = "Nice to meet you !!!";
char arr2[] = "####################"; //空格也属于一个#
int left = 0;
int right = strlen(arr1) - 1;
printf("%s\n", arr2); //数组名不需要取地址
while 语句实现
//while (left <= right)
//{
// Sleep(1000); //睡眠一秒,使代码跑的时候是动态的
// arr2[left] = arr1[left];
// arr2[right] = arr1[right];
// left++;
// right--;
// printf("%s\n", arr2);
//}
// for 语句实现
for (left = 0, right = strlen(arr1) - 1; left <= right; left++, right--)
{
Sleep(1000); //睡眠一秒,使代码跑的时候是动态的
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf("%s\n", arr2);
}
return 0;
} /*输出结果为:####################
N##################!
Ni################!!
Nic##############!!!
Nice############ !!!
Nice ##########u !!!
Nice t########ou !!!
Nice to######you !!!
Nice to #### you !!!
Nice to m##t you !!!
Nice to meet you !!!*/
5. 编写代码实现,模拟用户登录场景,并且只能登录三次。(只允许输入三次密码,如果密码正确则提示登陆成功,如果三次均输入错误,则退出程序。)
//模拟用户登录场景,并且只能登录三次。(只允许输入三次密码,如果密码正确则提示登陆成功,如果三次均输入错误,则退出程序。)
//假设正确密码为123456
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
char password[] = "";
int i = 0;
for (i = 0; i < 3; i++)
{
printf("请输入密码:");
scanf("%s", password);
if (strcmp(password, "123456") == 0) //两个字符串的比较用strcmp函数,比较的是对应位置的ASCII值,例:abc > abb999
{
printf("登陆成功\n");
break;
}
else
{
printf("密码错误,请重新输入\n");
}
}
if (i == 3)
{
printf("三次输入均错误,退出程序\n");
}
return 0;
} /*输出结果1为:请输入密码:7734787
密码错误,请重新输入
请输入密码:17648
密码错误,请重新输入
请输入密码:269748
密码错误,请重新输入
三次输入均错误,退出程序*/
/*输出结果2为:请输入密码:89174969
密码错误,请重新输入
请输入密码:123456
登陆成功*/
6. 猜数字游戏
- 自动生成一个1-100之间的随机数。
- 猜数字:a. 猜对了——恭喜你,猜对了; b. 猜错了——会告诉猜大/猜小了 ,继续猜直到猜对。
- 游戏可以一直玩,直到选择0退出游戏。
//猜数字游戏
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h> //rand()头文件
#include <time.h> //time()头文件
void menu()
{
printf("*********************************\n");
printf("********* 1.play *************\n");
printf("********* 2.exit *************\n");
printf("*********************************\n");
}
//RAND_MAX--rand函数能返回随机数的最大值,范围为 0-32767
void game()
{
int random_num = rand()%100+1; //rand()生成随机数,返回值为int。需搭配srand函数使用。
int input = 0;
while(1) //外面生成随机数,循环内部猜,while循环内部为游戏过程
{
printf("请输入猜的数字>:");
scanf("%d", &input);
if (input > random_num)
{
printf("猜大了\n");
}
else if (input < random_num)
{
printf("猜小了\n");
}
else
{
printf("恭喜你,猜对啦!\n");
break;
}
}
}
int main()
{
int input = 0;
srand((unsigned)time(NULL)); /*将time返回值强制转换成unsigned int类型。整个工程设计一次即可,因此放到主函数中;若放到game()中,生成的数间隔很小,若连续快速生成时值可能相同,不够随机。 若想使生成的变量足够随机,需在srand()中加入库指针time()*/
do //循环
{
menu();
printf("请选择>:");
scanf("%d", &input);
switch(input) //选择
{
case 1:
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("选择错误,请重新输入!\n");
break;
}
} while (input); //为真,继续游戏;为假,游戏结束,退出游戏
return 0;
} /*输出结果为:*********************************
********* 1.play *************
********* 2.exit *************
*********************************
请选择>:1
请输入猜的数字>:65
猜大了
请输入猜的数字>:40
猜小了
请输入猜的数字>:50
猜大了
请输入猜的数字>:45
猜小了
请输入猜的数字>:47
恭喜你,猜对啦!
*********************************
********* 1.play *************
********* 2.exit *************
*********************************
请选择>:7
选择错误,请重新输入!
*********************************
********* 1.play *************
********* 2.exit *************
*********************************
请选择>:0
退出游戏*/