*C語言學習筆記(九)*
**過年也不能停止學習,祝大家牛年大吉,萬事如意!**
練習一、撰寫代碼,演示多個字符從兩端移動,向中間匯聚,
本人寫下的一段代碼,個人覺得代碼極其簡陋同時效率很低,但是勉強能夠完成題目要求:
char arr1[] = "hello world!!!!!!";
char arr2[] = "#################";
int SL = 0;
int SR = sizeof(arr1) / sizeof(arr1[0])-2;
printf("%s\n", arr2);
while (SL <= SR)
{
arr2[SL] = arr1[SL];
arr2[SR] = arr1[SR];
SL++;
SR--;
printf("%s\n", arr2);
}
程式運行結果如下圖;

首先對我的代碼進行解釋,為什么在對變數SR賦值的時候要減二,因為存盤的為一個字串,而字串在記憶體中存盤是以“/0”作為結束標志,雖然代碼中沒有寫出,但是機器是默認存盤的,因此,要減去兩位,才能從最后一位開始替換字符;
在老師給出的答案中,對字串長度的計算省去了sizeof,而是呼叫了strlen函式,strlen函式可以自動去除/0,直接計算字串長度;
在源代碼修改:
int SR = strlen(arr1)-1;
在呼叫strlen函式時,需要在開頭添加一個頭檔案<string.h>;
老師給出的代碼如下,其中變數名稱我沒有修改:
char arr1[] = "hello world!!!!!!";
char arr2[] = "#################";
int SL = 0;
int SR = strlen(arr1)-1;
while (SL <= SR)
{
arr2[SL] = arr1[SL];
arr2[SR] = arr1[SR];
printf("%s\n", arr2);
Sleep(1000);//系統延時函式
system("cls");//清空螢屏命令
SL++;
SR--;
}
呼叫函式需要包含的頭檔案:
#include<stdio.h>
#include<string.h>
#include<Windows.h>
#include<stdlib.h>
練習二、撰寫程式模擬用戶登錄界面,輸入正確密碼提示成功,輸入錯誤提示失敗,同時錯誤次數不得超過三次;
代碼如下:
char Inputword[6] = { 0 };
int i = 0;
printf("請輸入正確的六位密碼:\n");
for (i = 0; i < 3; i++)
{
scanf("%s", &Inputword);
if (strcmp(Inputword, "123456") == 0)
{
printf("密碼正確\n");
break;
}
else
printf("輸入錯誤,請重試!\n");
}
if (i == 3)
printf("錯誤次數太多,程式終止");
在比較兩個字串是否相等時,應該呼叫strcmp函式,此函式可以比較兩字串,若相等則會回傳一個值 0;檢查到輸入了正確密碼,執行break跳出回圈,結束程式;
同時在運行程式時,出現了一個系統錯誤彈窗 提示stack around the variable “” was corrupted;
在百度后查到以下結果,具體原因網站大神也給出了解釋,已經解決問題:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/259471.html
標籤:其他
