-
求n的阶乘
#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; }
-
计算1!+2!+...+10!
int main() { int n = 0; int sum = 0; int ret = 1; for (n = 1; n <= 10; n++) { ret *= n; sum += ret; } printf("%d", sum); return 0; } //或者 int main() { int i = 0; int n = 0; int sum = 0; int ret = 1; for (n = 1; n <= 10; n++) { int ret = 1;//计算n阶乘之前,把ret初始为1 for (i = 1; i <= n; i++) { ret =ret * i; } sum = sum + ret; } printf("%d", sum); return 0; }
3.在一个有序数组中查找具体的某个数字n
//二分查找 int main() { int arry[10] = { 10,20,30,40,50,60,70,80,90,100 }; int size = sizeof(arry)/sizeof(arry[0]);//数组元素的个数 int k = 70;//要查找的数 int left = 0;//左下标 int right = size - 1;//右下标 while (left <= right) { int mid = (left + right) / 2; if (arry[mid] < k) { left = mid + 1; } else if (arry[mid] > k) { right = mid - 1; } else { printf("要查找的数下标为:%d", mid); break; } if (left > right) { printf("要查找的数不存在\n"); } } return 0; }
4.编写代码,演示多个字符从两端移动,向中间汇聚
#include <string.h> #include <windows.h> int main() { char arr1[] = "welcome to bit!!!!"; char arr2[] = "******************"; int left = 0; int right = strlen(arr1)-1; while (left<=right) { arr2[left] = arr1[left]; arr2[right] = arr1[right]; printf("%s\n", arr2); Sleep(1000);//睡眠1s system("cls");//清空屏幕 left++; right--; } printf("%s\n", arr2); return 0; }
5.编写代码实现,模拟用户登陆场景,并且只能登陆3次(只允许输入三次密码,如果密码正确则提示登录成功,如果三次均错误,则退出程序)
#include <string.h> int main() { //假设密码是字符串"fch122525" int i = 0; char password[10] = { 0 }; for (i = 0; i < 3; i++) { printf("请输入密码:\n"); scanf("%s", password); //两个字符串比较不能使用==,strcmp()函数用于比较两个字符串 if (strcmp(password, "fch122525") == 0) { printf("登陆成功\n"); break; } else printf("输入错误\n"); } if (i == 3) { printf("三次密码输入错误,退出程序\n"); } return 0; }
猜数字游戏
游戏规则:
-
自动产生一个1-100之间的随机数
-
用户进行猜数字
-
猜对了,就恭喜你,游戏结束
-
猜错了,会提示猜大了还是猜小了,继续猜,直到猜对
-
-
游戏可以一直玩,除非退出游戏
#include <stdlib.h> //rand()
#include<time.h>//time()
void game()
{
//产生1-100之间的随机数
int ret = rand()%100+1;//%100的余数是0-99,然后加一,范围就是1-100
//猜数字
int guess = 0;
while(1)
{
printf("请猜数字:\n");
scanf("%d", &guess);
if (guess > ret)
{
printf("笨蛋猜大了\n");
}
else if (guess < ret)
{
printf("笨蛋猜小了\n");
}
else
{
printf("恭喜聪明蛋猜对了\n");
break;
}
}
}
void menu()
{
printf("****************\n");
printf("**** 1. play *****\n");
printf("**** 0. exit *****\n");
}
int main()
{
srand((unsigned int)time(NULL));
int key = 0;
do
{
menu();//打印菜单
printf("请输入:\n");
scanf("%d", &key);
switch (key)
{
case 0:
{
printf("退出游戏");
break;
}
case 1:
{
game();
break;
}
default:
printf("请输入:0/1\n");
}
} while (key);
return 0;
}
rand()与srand()函数
-
rand()函数的用法
-
rand函数,C语言中用来产生一个随机数的函数。
-
rand函数界限:stdlib.h头文件中有宏**#define RAND_MAX 0x7fff
rand产生一个0-0x7fff的随机数,即最大是32767的一个数
-
*rand函数原型*
#include <stdlib.h> int rand(void);
-
rand函数的使用 如果想要表示一个数是从0开始到最大值的,比如说,想要产生一个0-99之间的随机数,那么用法如下
int num = rand() % 100;
如果想要产生一个数是从1开始到最大值的,比如说,想要产生一个1-100之间的随机数,那么用法如下
int num = rand() % 100 + 1;
需要注意最后+1和不+1的区别,+1的最小值是1,不+1的最小值是0
但是通常rand()产生的随机数在每次运行的时候都是与上一次相同的。例如猜字游戏,若要产生每次不同的随机数,要在调用rand()函数前,使用srand( seed )函数进行产生随机化种子,随着seed的不同,就能够产生 不同的随机数。
-
srand()函数
srand函数是随机数发生器的初始化函数,
-
srand函数原型:
void srand(unsigned int seed);
-
当然很多时候刻意让rand()产生的随机数随机化,用时间作种子 srand(time(NULL)),这样每次运行程序的时间肯定是不相同的,产生的随机数肯定就不一样了。
-
我们常常使用系统时间来初始化,使用time函数来获取系统时间,得到的值是一个时间戳,然后将得到的time_t类型数据转化为(unsigned int)的数,然后再传给srand函数,用法如下:
#include <time.h> srand((unsigned int)time(NULL));//我们在使用rand和srand时,主要使用的就是这一种初始化方法!!