回圈與二分查找 字符判斷
列印乘法口訣表

想法1,用回圈,倆數相乘,看代碼
列
int main()
{
int i = 0;
int j = 0;
for (i = 1; i <= 9; i++)
{
for (j = 1; j <= i; j++)
{
printf("%d*%d=%d ", i,j,i*j);
}
printf("\n");
}
return 0;
}
看下運行結果
圖

可以看到這不是我們想要的結果,可是為什么呢???
看代碼
列
#include<stdio.h>
int main()
{
int i = 0;
int j = 0;
for (i = 1; i <= 9; i++)
{
for (j = 1; j <= i; j++)
{
printf("%d*%d=%d ", j,i,i*j);//第一進來是1*1---->第二次---->i=2 j = 1 *1 -- >*2//所以i放在后面
}
printf("\n");
}
return 0;
}
原來是i和j的位置啊哪為啥換一下就好了呢解釋:看圖

##回圈do while
先看一下do while的流程圖吧
圖

do while 就是上來不管你里面條件真偽都先執行一遍,然后在進行判斷用的場景比較少!!(break和contiune)和在while中一致
二分查找
就是類似小的時候上課玩的猜數字游戲一樣,老師給你一個大致的范圍你去猜,一般人都會猜個中間值,然后老師會睡小了或者大了,那么二分查找也同理得
他的定義大致說一下建議和代碼搭配一起看
在有序陣列中(沒有得不行),用下標來查找,就是用最首元素和最大得下標加起來除二就得到就等到了下標,然后判斷,如果小了那么中間下標加一和最大得下標在相加除2,!!那么看代碼
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)//記得是陣列mid不要忘記
{
left = arr[mid] + 1;
}
else if (arr[mid]>k)
{
right = arr[mid] - 1;
}
else
{
printf("恭喜你找到了,下標是:%d", mid);
break;//找到了就跳出回圈
}
}
if (left > right)//最小的下標大于最大的下標表示,已經全部找過沒找的
printf("55~~~找不到你要得數字\n");
}
字符判斷
字符判斷用啥判斷???
char arr1[]="daudada";
char arr2[]="cacascac"
這樣嗎???錯錯錯,這樣是比這字符陣列首哥元素得陣列名,那是沒有意義得,那么用啥??當當當介紹一個新函式strcmp專門用來判讀陣列得,不過用它還需要引頭檔案string.看下代碼emmm
int main()
{
char password[10] = { 0 };
scanf("%s", password);//陣列的首元素就是地址
if (strcmp(password, "123456") == 0)
{
printf("密碼正確");
}
return 0;
}
運行結果

strcmp對比是用assic對比,就是設a 和a對比是去assic中啊看對應得下表對比
assic?標
拓展內容(個人看法)
隨機值
1.個人看法,,,,
rand()–>
圖

這里得意思是生成一個亂數,可是他不夠隨機,應為他每次開始得位置都一樣,第一次可能比較隨機,可是第二次,第三次???那么他就成了固定得數了

這里得意思大致就是給srand函式設定一個種子他就會隨機生成---->那么輸入100 哦變了——————>按巨快沒變好像不夠靈活他好像也不夠隨機那么要想想哦哦哦,給他種子設定一個一直在變化得東西有啥??日期??這個變得好像也太慢了----》時間—》這個好像一直在變
那么介紹一個都想時間戳,他就是計算機創造開始得時間-現在得時間,哦哦哦,可是要怎么獲取這個時間呢??
int main(){
//隨機值
//rand(隨機值在7fff的范圍內,)----->生成起點都一樣所以每次結果一樣-->srand
//srand---->(輸入值可以,不過使用快了就不隨機)--->時間戳計算機其實計算機開始時間到現在開始的時間的值
int ret = rand();
srand((unsigned int)time(NULL));//
printf("%d", ret);
}
srand((unsigned int)time(NULL))這句話得意思是
生成一個隨機值————————>在rand之前呼叫–>只需要設定一次,不然一直生成得話哪他不就和之前一樣沒有意思不夠隨機

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/275466.html
標籤:其他
上一篇:考研經驗分享
