1.计算n的阶乘
#define _CRT_SECURE_NO_WARNINGS
//计算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 = ret * i;
}
printf("ret=%d\n",ret);
return 0;
}
2.求1!+2!+3!…10!的值
//求1!+2!+3!........10!的值
/*#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int i = 1;
int ret = 1;
int n = 0;
int num = 0;
for (n= 1;n <= 3;n++)
{
ret = 1;
for (i = 1;i <= n;i++)
{
ret = ret * i;
}
num = num + ret;
}
printf("%d", num);
return 0;
}
*/
//上面也是可以一个算法,但是两个for循环会导致繁琐,运行起来负责,所以下面这个方法是比较好的
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int n = 0;
int ret = 1;
int num = 0;
for (n = 1;n <= 10;n++)
{
ret = ret * n;
num = num + ret;
}
printf("%d", num);
return 0;
}
3.在一个有序数组中查找具体某个数字n,编写int binsearch(int x,int v[],int n);功能,在v[0]<=v[1]<=v[2]<=…<=[n-1]的数组中查找x
//在一个有序数组中查找具体某个数字n,编写int binsearch(int x,int v[],int n);功能,在v[0]<=v[1]<=v[2]<=...<=[n-1]的数组中查找x
/*#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int k = 7;
//写一个代码,在arr数组(有序的)中找到7
int i = 0;
int sz = sizeof(arr) / sizeof(arr[0]); //这是用数组的长度除以一个元素的长度,就可以得到元素的个数
for (i = 0;i < sz;i++)
{
if (k == arr[i])
{
printf("找到了,下标是:%d\n", i);
break;
}
}
if (i == sz)
printf("找不到\n");
return 0;
}*/
//这是一种方法利用for循环,但是比较繁琐,如果有上千上万,甚至更多的数字时,这种遍历方法就会让文件运行起来极其费劲
//于是有了 二分法/折中法 这种算法
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int k = 7;
int sz = sizeof(arr) / sizeof(arr[0]);//计算元素个数
int left = 0;//左下标
int right = sz - 1;//右下标
while (left <= right)
{
int mid = (left + right) / 2;
if (arr[mid]>k)
{
right = mid - 1;
}
else if (arr[mid] < k)
{
left = mid + 1;
}
else
{
printf("找到了下标是:%d\n", mid);
break;
}
}
return 0;
}
4.编写代码,演示多个字符从两端移动,向中间汇聚
#include<stdio.h>
#include<string.h>
#include<Windows.h>
#include<stdlib.h>
int main()
{
char arr1[] = "baby I love you";
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);
//休息1秒
Sleep(1000);//单位是毫秒
system("cls");
left++;
right--;
}
return 0;
}
5.编写代码实现,模拟用户登录情景,并且只能登录三次,(只允许输入三次密码。如果密码正确则提示登录成功,如果三次输入均错误。则退出程序
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int main()
{
int i = 0;
char password[20] = { 0 };
for (i = 1;i <= 3;i++)
{
printf("请输入生日日期:--");
scanf("%s", password);
if (strcmp(password, "990503") == 0)//使用一个库函数来比较两个字符串的是否相等-------strcmp
{
printf("我小宝贝的生日");
break;
}
}
if (i == 3)
printf("三次密码均错误,退出程序\n");
return 0;
}
6.猜数字
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()
{
printf("**************************\n");
printf("******** 1.paly **********\n");
printf("******* 0.exit **********\n");
printf("**************************\n");
}
void game()
{
int random_num = rand() % 100 + 1; //RAND_MAX--rand函数能返回随机书的最大值 这个数比较大,我们控制到0-100
int input = 0;
while (1)
{
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)); //时间戳
do {
menu();
printf("请选择---");
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
break;
default:
printf("选择错误,请重新输入!\n");
break;
}
} while (input);
return 0;
}
运行结果: