1、求n!
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdlib.h>
#include <stdio.h>
int main()
{
int i = 1;
int k = 1;
int m=1 ;
scanf("%d",&m);
for (i = 1; i <= m;i++)
{
k *=i ;
}
printf("%d ", k);
return 0;
}
2、求1!+2!+3!+…+n!
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdlib.h>
#include <stdio.h>
int main()
{
int i = 1;
int j = 1;
int sum = 0;
int m, k = 1;
scanf("%d", &m);
for (i = 1; i <= m; i++)
{
k *= i;
sum += k;
printf("%d ", k);
}
printf("sum=%d\n", sum);
return 0;
}
3、从一个数组中查找某个具体的数字
用函数实现逐个查找法
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdlib.h>
#include <stdio.h>
int BinSearch(int brr[], int len, int n)
{
int i = 0;
for (i = 0; i < len; i++)
{
if (brr[i] == n)
{
return i;
}
}
return 0;
}
int main()
{
int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int k;
printf("请输入你要查找的数字k: k= ");
scanf("%d", &k);
int len = sizeof(arr) / sizeof(arr[0]);
int JB= BinSearch(arr,len, k);
if (JB !=0)
{
printf("你要找的数字的脚标是%d\n",JB);
}
else
{
printf("找不到您要查找的数字\n");
}
return 0;
}
函数实现二分查找法
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int binary_search(int arr[], int k, int left, int right)//二分法查找目标元素,仅适用于一个有序数组
{
while(left<=right)//左下标<=右下标
{
//int sz = sizeof(arr)/sizeof(arr[0]);arr接收的是数组地址,大小为4字节,所以结果一直为1,不可以这样用。
int mid = left+(right-left)/2;//找到最中间的元素下标,left和right每次都在改变,所以要放在循环内。
if(arr[mid] > k)//判断中间元素与目标元素的关系,若大于目标元素,
{
right = mid-1;//则右目标元素在左下标与中间元素之间,则改变右下标为mid-1
}
else if(arr[mid] < k)//如果中间元素小于目标元素,
{
left = mid+1;//则目标元素在中间元素与右下标之间,则改变左下标为mid+1
}
else//此处意为目标元素与中间元素值相等,中间元素就是目标元素。
{
return mid;//返回中间元素下标。
}
}
return -1;//若在while循环中都没有找到符合条件的,则返回-1,意为找不到目标元素。
}
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};//定义一个数组
int k = 0;//建立一个目标数字
scanf("%d", &k);
int sz = sizeof(arr)/sizeof(arr[0]);//求数组元素个数。数组总长度/单个元素长度。
int left = 0;//左边元素下标
int right = sz-1;//右边元素下标,元素个数-1;
int ret = binary_search(arr, k, left, right);//调用函数查找目标元素,并把返回值赋值给ret
if(ret == -1)
{
printf("找不到\n");
}
else
{
printf("找到了,下标是:%d\n", ret);
}
system("pause");
return 0;
}
4、演示多个字符从两边移动,向中间汇聚
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>//清空屏幕时所用函数的头文件
int main()
{
//从两边向内逐渐推进的输出结果
//###################
//w#################!
//we###############!!
//wel#############!!!
//....
//Welcome to China!!!
char arr1[] = "Welcome to China!!!";//最终状态。
char arr2[] = "###################";//初始状态
int left = 0;//数组左边的下标
int right = strlen(arr1) - 1;//数组右边的下标,strlen()用于求数组长度。
//int right = sizeof(arr1)/sizeof(arr1[0])-2;
while (left <= right)
{
arr2[left] = arr1[left];//赋值
arr2[right] = arr1[right];//赋值
printf("%s\n", arr2);//输出左右两边被赋值之后的数组arr2
Sleep(1000);//用于让其暂停显示
system("cls");//用于清空屏幕
left++;//由两端逐渐向内推进的赋值、输出。
right--;
}
printf("%s\n", arr2);//在while执行完之后屏幕被清空了,此处再输入一次arr2。
system("pause");
return 0;
}
5、模拟用户输入密码登陆,登陆次数不可以超过三次
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main()
{
char MA = "YUANJING";
char password[15];
int count = 3;
int i = 0;
for (i = 0; i <=count;i++)
{
printf("请输入密码:");
scanf("%s", &password);
if (strcmp(password,"YUANJING")==0)
{
printf("密码输入正确\n");
break;
}
else
{
i = 0;
count--;
printf("密码输入错误,你还有%d次机会,请重新输入密码\n",count);
}
}
return 0;
}
6、猜数字游戏
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include<time.h>//用time()函数的头文件
void menu()
{
printf("*******************\n");
printf("******1.start******\n");
printf("******0.exit******\n");
printf("*******************\n");
}
void play()
{
int randNum = rand() % 10 + 1;//产生1到10的数字.rand()用于随机生成数字,产生数字范围是1到32729
int num = 0;
while (1)
{
printf("请输入你猜得数字:");
scanf("%d", &num);
if (num == randNum)
{
printf("恭喜你,猜对了\n");
break;
}
if (num > randNum)
{
printf("恭喜你,猜大了\n");
}
if (num < randNum)
{
printf("恭喜你,猜小了\n");
}
}
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));//用于返回当前时间值,用NULL表示不返回时间值,使生成的随机数更随机。
do
{
menu();
scanf("%d", &input);
switch (input)
{
case 1:play(); break;
case 0:printf("游戏结束\n"); break;
default:printf("请输入正确的数字\n"); break;
}
} while (input);
return 0;
}
6、goto实现的恶搞关机小程序
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
char input[10] = { 0 };
system("shutdouwn -s -t 60");
again://当程序跳到此处后程序依然按照代码顺序执行。
printf("电脑将在一分钟内关机,如果输入:我是猪,就取消关机!\n请输入:>");
scanf("%s", &input);
if (0 == strcmp(input, "我是猪"))
{
system("shutdown -a");
}
else
{
goto again;//程序跳到again处,
}
return 0;
}