1.大小字母轉換:
#include <stdio.h> int main() { char str[10]; int i=0; gets(str); while(str[i]) { if(str[i]>='a'&&str[i]<='z') str[i]=str[i]-32; else if(str[i]>='A'&&str[i]<='Z') str[i]=str[i]+32; i++; } puts(str); return 0; }
輸出結果:
2.數組和指針的區別:
(1)、指針的本質是一個與地址相關的復合類型,它的值是數據存放的位置(地址);數組的本質則是一系列的變量。
(2)、數組名對應着(而不是指向)一塊內存,其地址與容量在生命期內保持不變,只有數組的內容可以改變。指針可以隨時指向任意類型的內存塊,它的特征是“可變”,所以我們常用指針來操作動態內存。
(3)、當數組作為函數的參數進行傳遞時,該數組自動退化為同類型的指針。
數組名可以當作一個指針來用,數組名可以用*取其中的值,指針也可以用[]解引用,但它們還是有一些區別。
指針可以隨時指向任意類型的內存塊,它的特征是“可變”,所以我們常用指針來操作動態內存。指針遠比數組靈活,但也更危險。
3.字符串倒序輸出:
//解法一 #include <stdio.h> #include <string.h> int main() { char a[20] = {0}, b[20] = {0}, *p1, *p2; printf("隨意輸入一個字符串:"); //memset(b, 0X00, sizeof(b)); gets(a); p1 = a; p2 = b + strlen(a) - 1; for( ; *p1 != '\0'; p1++, p2--) *p2 = *p1; *p2='\0'; printf("string a is: %s\n", a); printf("string b is: %s\n", b); return 0; }
輸出結果:
//解法二 #include <stdio.h> #include <string.h> #define MAXN 1000 void reverse(char* str) { char* p = str + strlen(str)-1; char temp; while(str<p) { temp=*p; *p--=*str; *str++=temp; } } int main() { char str[MAXN]; printf("請輸入一個字符串:\n"); gets(str); reverse(str); printf("翻轉后的字符串是:\n%s\n", str); return 0; }
輸出結果: