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


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值