内容
1.n阶乘
2.二分法
3.显示字符串
4.密码验证
5.猜数字
———————————————————————————————————
*1.n阶乘
n! = n*(n-1)(n-2) * … *1;
sum=1!+2!+…+n!;
实现:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int factor(int num){
int ret=1;
for(int i=0;i<n;i++){
ret=ret*i;
}
return ret;
}
int main(){
int n=0;
int sum=0;
printf("请输入一个整数\n");
scanf("%d",&n);
for (int i = 1; i <= n;i++) {
int factor = 1;//乘积
printf("%d的阶乘为:%d\n",i,factor(i));
sum=sum+factor(i);
}
printf("前n阶阶乘和为:%d\n",sum);
system("pause");
return 0;
}
结构为:
*2.二分法
二分法:在有序数组中实现快速查找的方法;
int s[]={1,2,3,4,5,6 } 查找数num=2
方法:首先设置两个变量,left和right表示第一个和最后一个数组元素下标;计算中间元素下标mid=(left+right)+1;比较num和s[mid],如果数num在s[mid]左侧则right值变为mid-1;反之在右侧更新left为mid+1;继续比较,直到s[mid]==num;返回下标mid。
实现:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
//将二分法封装成一个函数
int main(){
int arr[]={
1,2,3,4,5,6};
int num=0;
int left =0;
int right=5;//最后一个元素下标
while(num){
int mid =(left+right)+1;
if(num<arr[mid]){
right=mid-1;
}
else if(num>arr[mid]){
left=mid-1;
}
else{
printf("找到了,%d在数组中的下标为:%d\n",num,mid);
break;
}
}
if(left>right){
printf("没找到!\n");
}
system("pause");
return 0;
}
结果:
*3.显示字符串
演示多个字符(字符串“welcome to C!”),从两边移动并显示,向中间汇集。
实现:
#include<stdio.h>//包含打印输出函数
#include<stdlib.h>//包含system库函数
#include<string.h>//包含strlen函数,计算字符串长度
#include<Windows.h>//包含Sleep库函数
int main(){
char str1[]="welcome to C!";
char str2[]="#############";
int left=0;
int right =strlen(str1)-1;
while(left<=right){
str2[left]=str1[left];
str2[right]=str1[right];
left++;
right--;
printf("%s\n",str2);
//Sleep(500); 延迟时间
//system("cls"); 清屏操作
}
system("pause");//请按任意键继续!
return 0;
}
结果:
*4.验证密码
模拟用户登录,验证密码,允许用户 登录三次,若密码正确则显示登陆成功,错误则显示您已错误3次,退出登录!
实现:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main(){
char password[1024]={
0};
printf("请输入登录密码:");
scanf("%s",password);//scanf输入字符串时不用加地址符&,输入整数时必须加&
int i = 0;
for(;i<3;i++){
if(strcmp(password ,1234)==0){
printf("登陆成功\n");
break;
}else{
printf("密码错误\n");
}
}
if(i>=3){
printf("您已错误3次,退出登录!\n");
}
system("pause");
return 0;
}
结果:
*5.猜数字
- 随机生成数,设置随机种子,避免每次生成的随机数时一样的:int random=rand()%100+1; srand((unsigned)time(NULL));
- 循环判断玩家输入猜测的数字和系统随机生成的数进行比较
- 定义菜单函数和猜测游戏函数
实现:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu(){
printf("****************************\n");
printf("*** 1.play guess game!\n ***\n");
printf("*** 2.exit! ****************\n");
printf("****************************\n");
printf("请选择功能:");
}
void guessGame(){
int input=0;
int random_num = rand()%100+1;
while(1){
printf("请输入你猜测的数字:\n");
scanf("%d",&input);
if(input<random_num){
printf("猜小了!\n");
}else if(input>random_num){
printf("猜大了!\n");
}else{
printf("猜对了!\n");
break;
}
}
}
int main(){
int select=0;
menu();
printf("请选择功能:");
scanf("%d",&select);
while(1){
switch(select){
case 1: guessGame();
break;
case 0: printf("exit!\n");
system("cls");
break;
}
break;
}
system("pause");
return 0;
}
结果:
转载:https://blog.csdn.net/weixin_47921628/article/details/115531084
查看评论