C語言實現大小字母轉換、字符倒序輸出


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;
}

輸出結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM