計算n的階乘
int main()
{
int i=0;
int ret=1;
scanf("%d",&i);
for(i=1;i<=n;i++)
{
ret=ret*i;
}
printf("%d\n",ret);
return 0;
}
計算1!+2!+3!+.....+10!
int main()
{計算1!+2!+3!+.....+10!
int i = 0;
int j = 0;
int sum = 0;
int ret = 1;
for (i = 1; i <= 3; i++)
{
ret = 1;
for (j = 1; j <= i; j++)
{
ret = ret * j;
}sum += ret;
}
printf("%d\n", sum);
return 0;
}//演算法效率低
//效率高的方法
int main()
{
int n=0;
int sum = 0;
int ret = 1;//不可賦初值為0,0乘以任何數都為0
for(n=1;n<=10;n++)
{
ret*=n;//階乘
sum+=ret;//求和
}
printf("%d\n",sum);
reurn 0;
}
在一個有序陣列中查找具體的某個數字n
折半查找/二分查找(前提條件是陣列有序)
left mid right
arr[mid]中間元素
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int k=10;//查找k,k的值可以是陣列中的任意數
int sz = sizeof(arr) / sizeof(arr[0]);//40/4
int left = 0;
int right = sz - 1;//-1是因為陣列下標從0開始
while (left <= right)//不能漏掉=
{
int mid = left + (right-left) / 2;//中間元素必須放到回圈里面
//int mid = (left + right) / 2;
if (arr[mid] < k)
{
left = mid + 1;
}
else if (arr[mid] > k)
{
right = mid - 1;
}
else
{
printf("找到了下標是:%d\n", mid);
break;
}
}
if (left > right)
{
printf("找不到了\n");
}
return 0;
}
撰寫代碼,演示多個字符從兩端向中間匯聚
#include<string.h>
#include<windows.h>
#include<stdio.h>
int main()
{
//下標從0開始且減去\0所以得減去2
//sizeof(arr1)/sizeof(arr[0])-2;//4
//char arr[] = "abc";
//[a b c \0]
char arr1[] = "welcome to bit!!!!!";
char arr2[] = "###################";
int left = 0;
//int right = sizeof(arr1)/sizeof(arr[0])-2;
int right strlen(arr1)-1;
while (left <= right)
{
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf("%s\n",arr2);
Sleep(1000);//單位是毫秒
system("cls");
left++;
right--;
}
printf("%s\n",arr2);
return 0;
}
模擬用戶登錄情景
密碼最多輸入三次,,正確則提示輸入成功,輸入三次錯誤就退出程式
兩個字符的比較不能使用==,應該使用strcmp
#include<string.h>
#include<stdio.h>
int main()
{
int i = 0;
char password[20] = {0};
//假設正確密碼是“abcdef”
for(i = 0; i < 3; i++)
{
printf("請輸入密碼:");
scanf("%s",passsword);
if(strcmp(password,"abcdef")==0)
{
printf("密碼正確\n");
break;
}
else
{
printf("密碼錯誤,重新輸入\n");
}
}
if (i == 3)
{
printf("三次密碼均錯誤,退出程式\n");
}
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/413301.html
標籤:其他
上一篇:陣列詳講(1)
