內容
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://www.uj5u.com/qita/276698.html
標籤:其他
