C語言學習筆記(3) 指標七題

2021-08-09 05:17:40 字數 3689 閱讀 2526

#include 

int main()

; int leap_month[12] = ;

int year, day, i;

int leap_flag;

int r_flag = 1;

while (r_flag == 1)

else

if (day>365 && leap_flag == 0 || day>366 && leap_flag == 1)

else

}if (leap_flag == 1)

printf("years=%d,month=%d,day=%d", year, i + 1, day);

}else

printf("years=%d,month=%d,day=%d", year, i + 1, day);

}return

0;}

第二題

取十個1-100的隨機整數,並倒序列印出來(用指標,不要用陣列下標)

#include 

#include

#include

#define n 10

void func(int

*num)

int main()

; int

*p = num;

func(num);

for (p = num + n - 1; p >= num; --p)

printf("%d ", *p);

// 把p的下標移動到陣列的最後一位,然後從後往前迴圈遍歷,

// 如果當前下標的位址大於陣列的首位址,那就每次往前移動乙個int,同時列印出來

printf("\n");

return

0;}

通過隨機函式獲取到26個小寫英文本母,儲存到陣列裡並小寫字母順序列印出來。

這題對我而言還是比較難的,直接參考原文吧-_-||

#include 

#include

#include

#define len 26

void func(char *s)//用這個函式直接實現按順序把字母放進去,就不用在後面再排序!!!

}}int main()

; func(a);

for (int i = 0; i < len; ++i)

printf("%c\n", *(a + i));

printf("\n");

return

0;}

將字串「we are family!」,去除空格後列印出來。(wearefamily!)

先按照我自己的思路寫一下試試吧ヾ(◍°∇°◍)ノ゙

#include 

char *func(char *str)

}*(str + j) = '\0';

return

str;

}int main()

輸入乙個字串,判斷其是否是回文。(回文:即正讀和反讀都一樣,如abcba, abccba)

兩種方法:1。

#include 

#include

#define n 50 //50個足夠了

int func(char *p, int len) // 獲取字串的首位址,和字串長度

int main(void)

; // 建立乙個長度為50的字串

scanf("%s", str); // scanf()接收使用者輸入的字串

if(func(str, strlen(str))) // 這裡做了三步:1.獲取字串長度,並且和字串首位址一起傳給被呼叫函式的形參

// 2. 呼叫了func()函式,同時接收函式的返回值

// 3. 接收函式的返回值,決定了分支語句的執行

printf("yes! %s is huiwen! \n", str);

else

printf("sorry! %s is not huiwen! \n", str);

return

0;}

方法2

int func(char *p, int len)      // 獲取字串的首位址,和字串長度

int main(int argc, char *argv)

輸入一段字串,無論是否有重複字母出現,都只列印出現過的小寫字母,並按照小寫字母順序列印。(如輸入qewqwr322rqw<>211qesfsserazz, 列印aeqrwz)感覺和第三題差不多,只是判斷條件有點區別

#include 

#include

#define n 500

int main()

; // 儲存使用者輸入的字串

char str2[n] = ; // 儲存要列印的字串

scanf("%s", str1); // 接收使用者輸入

int index = 0;

for (int i = 0; *(str1 + i) != '\0'; ++i) // 遍歷str1字串,直到字串結尾'\0'

for (int i = 97; i < 26 + 97; ++i) // 下標從97開始,迴圈遍歷str2

if( *(str2 + i) == '+') // 如果遍歷到的下標有 + 號標記,之前判斷這裡是有出現過字母,

printf("%c ", i); // 那麼就列印這個下標對應的字母ascii碼,也就是列印字母了。

printf("\n");

return

0;}

輸入某個月的第n周和這一周的第m天,通過int *getday() 函式獲取引數並返回結果,來得出這一天是這個月的第多少天。

(如輸入:3,4,即這個月的第3周的第4天,即這個月的第18天)

#include 

int *getday(int n, int m)

, ,,,

};return &calc[n-1][m-1];

// 返回陣列下標的位址,陣列下標是從0開始的,所以要減 1

}//如果函式返回區域性變數的值,程式是不會出錯的

//如果函式返回區域性變數的位址,雖然你把位址返回了,但是位址裡的值已經被銷毀了

// 如果其他程式用了這塊記憶體,那麼程式執行結果將不可預估

// 作用域: 表示某個變數的作用範圍,一般在某個**塊了,用 {} 分隔

// 生命週期: 決定這個變數什麼時候被銷毀,靜態變數的生命週期是整個源程式

int main(int wk, int dy, char y)

printf("the days is %d\n", *getday(wk, dy));

printf("if you want again, inpyt 'y' (other for quit): \n");

scanf("%c", &y)

}while(y == 'y')

printf("\n \n");

}

這個思路好棒,看來還需要加油啊!

C語言學習筆記02 指標

指標也是一種變數,占有記憶體空間,用來儲存記憶體位址。在指標宣告時,號代表所宣告的變數為指標。在指標使用時,號表示操作指標所指向的記憶體空間的值。p相當於通過位址 p變數的值 找到一塊記憶體,然後操作記憶體。p放在等號的左邊賦值 給記憶體賦值 p放在等號的右邊取值 從記憶體獲取值 指標變數和它所指向...

C語言學習筆記(四) 指標

c語言學習筆記 四 指標 include intmain p就是乙個指標,p就是取出p指向位址的值 陣列 相同型別的資料集合 include intmain 在這個程式中,p是乙個指標,a是乙個陣列,若p a 0 或者p a就是p指向陣列的第乙個元素,接下來就可以對p進行 1或 1進行偏移操作 in...

C語言學習(三) 指標

指標的定義int p char p float p指標變數所佔記憶體的大小 跟前面定義的型別無關 而跟系統有關 16bits作業系統 2b 32bits作業系統 4b 64bits作業系統 8b 指標指向乙個值所在的第乙個位元組 通常乙個位址存放乙個位元組 const修飾指標 指標指向乙個字串時 如...