C語言字符串練習

/*
1、用戶任意輸入一個字符串,把該字符串的大寫字母變小寫,小寫變大寫。
*/ 
#include <stdio.h>


void main()
{
	int a=100,i;
	char num [a];
	
	//獲取用戶輸入的字符串 
	printf("請任意輸入一個字符串:");
	scanf("%s",num);
	
	//循環取出用戶輸入的字符串的每一個元素判斷是小寫還是大寫,然後進行+-32的操作; 
	for(i=0;i<a;i++)
	{
		if(num[i]<='Z'&&num[i]>='A')
		{
			num[i]=num[i]+'a'-'A';	
		}
		else if(num[i]>='a'&&num[i]<='z')
		{
			num[i]=num[i]-'a'+'A';
		}
	}
	
	//打印用戶輸入的字符串 
	printf("%s\n",num);	
} 

/*
2、查找“asdfjvjadsffvaadfkfasaffdsasdffadsafafsafdadsfaafd”,
   打印出該字符串中有多少個"af"。
*/ 

#include <stdio.h>
#include <string.h>
void main()
{
	int a=100,i,k=0;
	char syst[100]="asdfjvjadsffvaadfkfasaffdsasdffadsafafsafdadsfaafd";
	
	printf("該字符串本身:%s\n",syst);
	for(i=0;i<a;i++)
	{
		if(syst[i]=='a'&&syst[i+1]=='f')
		{
			k+=1;
		}
	}
	
	printf("該字符串中有  %-4d個'af'\n",k); 
}


/*
3、輸入任意一個字符串,如:“abDEe23dJfd343dPOddfe4CdD5ccv!23rr”。
   取出該字符串中所有的字母組成一個新的字符串。
*/
#include <stdio.h>

void main()
{
	int i,a=100,k=0;
	char sys[100],syst[100]="abDEe23dJfd343dPOddfe4CdD5ccv!23rr";
	
	printf("該字符串本身:%s\n",syst);
	
	for(i=0;i<a;i++)
	{
		//利用循環判斷該字符串中的每一個元素是否滿足a-z||A-Z的條件,當滿足時就賦給sys[]的元素; 
		if((syst[i]>='A'&&syst[i]<='Z') || (syst[i]>='a'&&syst[i]<='z'))
		{
			sys[k]=syst[i];
			k+=1;//當syst數組中的元素條件滿足時賦給sys數組的元素的下標就自增長;不會收到syst[i]的影響; 
		}
	}
	
	printf("取出該字符串中所有的字母組成一個新的字符串:%s\n",sys);
}


/*
4、自己實現strcat函數的功能。(假如字符數組足夠大)
*/

#include <stdio.h>
#include <string.h>

void main()
{
	char sys1[100]="鋤禾日當午,",sys2[100]="汗滴禾下土,";
	
	printf("沒有用strcat函數之前的數組1裏面的數據:%s\n",sys1);
	printf("沒有用strcat函數之前的數組2裏面的數據:%s\n",sys2);
	//strcat函數 字符串鏈接   
	strcat(sys1,sys2);
		
	printf("騷年,您看得出有什麼變化嗎?\n");
	
	printf("用strcat函數字符串鏈接的數組1裏面現在的數據:%s\n",sys1);
	printf("用strcat函數字符串鏈接的數組2裏面現在的數據:%s\n",sys2);
}


/*
5、完成一個登陸頁面。(用戶名:F11;密碼:123456)。要求用戶輸入用戶
名和密碼,驗證是否等於正確值。如果等於告知登陸成功,程序結束;否則告
知用戶名密碼有誤。用戶三次輸入不正確,告知登陸失敗,程序結束 。
*/ 

#include <stdio.h>
#include <string.h>

void main()
{
	int i;
	char userName[10],passWord[10];

	for(i=0;i<3;i++)
	{
		printf("請輸入用戶名:");
		scanf("%s",userName);
	
		printf("請輸入密碼:");
		scanf("%s",passWord);
	
		if((strcmp(userName,"F11")==0) && (strcmp(passWord,"123456")==0))
		{
			printf("登陸成功\n");
			break;	
		}
		else if(i<2)
		{
			printf("抱歉,用戶名和密碼輸入錯誤,請重新輸入\n");
		}
		else{
			printf("登錄失敗...\n");	
		}
	}
} 


/*
6、實現strcmp函數的功能,要求按照先比字符後比長度的方式。
	這題目沒看明白,個人理解是先比具體的值,再比長度吧; 
*/

#include <stdio.h>
#include <string.h>

void main()
{
	int i;
	char number[100];
	
	printf("strcmp練習,請隨意輸入一個字符串:");
	scanf("%s",number);
	
	if(strcmp(number,"HTX")==0)
	{
		if(strlen(number)==3)
		{
			printf("您能看到  HTX   只能說明您輸入的字符的值還有長度和系統初始值完全吻合\n");
		}
	}
	else
	{
		printf("什麼玩意...\n");
	} 
}


/*
7、輸入5個學生的名字(英文),使用冒泡排序按從大到小排序。
提示:涉及到字符串數組,一個字符串是一個一維字符數組;一個
字符串數組就是一個二維字符數組。
*/ 

#include <stdio.h>
#include <string.h>

void main()
{
	//聲明循環變量和數組元素個數的變量; 
	int i,j,k,a=5,b=10;
	//聲明一個二維數組和一個一維數組; 
	char name[a][b],min[b];
	
	//獲取用戶輸入的五個學生的名字(注意;請輸入英文) 
	for(i=0;i<a;i++)
	{
		printf("請輸入第  %-4d個學生的名字(注意:請輸入英文):",i+1);
		scanf("%s",name[i]);
	}
	
	//排序 
	for(j=0;j<a;j++)
	{	
			for(i=0;i<a-1;i++)
			{
				if(strcmp(name[i],name[i+1])<0)
				{
					strcpy(min,name[i]);
					strcpy(name[i],name[i+1]);
					strcpy(name[i+1],min);
				}
			}
	}
	
	printf("\n"); 
	printf("根據您輸入的英文姓名從大到小的排序順序爲:\n");	
		
	//循環輸出 
	for(i=0;i<a;i++)
	{
		printf("%s\n",name[i]);	
	}	
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章