四道基础的c语言题目作业

1.统计字符长度(包括空格)

输入一行字符(小于50个字符)

如:Lou jilin(输出:9)

2.字符串复制(包括空格,小于50个字符)

如:Lou jilin(输出:Lou jilin)

3.字符串连接(输入三行字符串,小于50个字符)

如:lou

        ji

       lin

(输出:loujilin)

4.比较两个字符串大小(输入两行字符,输出大的那个,小于50个字符)

如:Lou jilin

        Lou xiaoxiao

(输出:Lou xiaoxiao)

int getStrLen(char a[])
{
	int n = 0;
	while(*(a++) != 0)
		n++;
	return n;
}

void strCpy(char dst[],char src[])
{
	while((*(dst++) = *(src++)) != 0)
	{
		//do nothing
	}
}

void strLink(char dst[],char addStr[])
{
	int nLen = getStrLen(dst);
	char *d = dst+nLen;
	while((*(d++) = *(addStr++)) != 0)
	{
		//do nothing
	}
}

char *strcmp(char str1[],char str2[])
{
	int i=0;
	while(*(str1+i) != 0 && *(str2+i)!= 0)
	{
		if(*(str1+i) == 0)
			return str2;
		else if(*(str2+i) == 0)
			return str1;
		else if(*(str1+i) > *(str2+i))
			return str1;
		else if(*(str1+i) < *(str2+i))
			return str2;
	}
	return str1; //此时两个串相同,任意返回一个都可
}

void main()
{
	char a[50] = {0};
	char b[50] = {0};
	char c[50] = {0};
	char d[200] = {0};
	printf("请输入第一串字符:");
	scanf("%s",a);
	int len1 = getStrLen(a); //第一题
	printf("\n输入的串长度为:%d\n",len1);
	//
	strCpy(d,a);	//第二题
	printf("\n复制串为:%s\n",d);
	//
	printf("请输入第二串字符:");
	scanf("%s",b);
	printf("\n请输入第三字符:");
	scanf("%s",c);
	strLink(d,b);
	strLink(d,c);
	printf("\n三串合并后为:%s\n",d);//第三题
	//
	char *p = strcmp(a,b);
	printf("第一和第二串中较大的串是:%s",p);

}

 

4个功能需要自己写函数吗?C里面有现成的函数可以使用。

需要包含头文件#include <string.h>

(1)

char buf[50]={0};

gets(buf); //因为字符串里可能有空格,这里使用gets

int len = strlen(buf);//len就是字符串的长度

(2)

使用strcpy()函数可以实现字符串的复制

char *strcpy(char *dest, const char *src) 把 src 所指向的字符串复制到 dest

(3)

使用strcat()函数可以实现字符串的拼接

char *strcat(char *dest, const char *src) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾

需要dest的内存空间足够大,能够容纳下两个字符串

(4)

使用int strcmp(char* s1,char* s2)函数可以比较两个字符串的大小,s1大于s2,返回正数,s1等于s2返回0,否则返回负数

您的问题已经有小伙伴解答了,请点击【采纳】按钮,采纳帮您提供解决思路的答案,给回答的人一些鼓励哦~~

ps:开通问答VIP,享受5次/月 有问必答服务,了解详情↓↓↓

【电脑端】戳>>>  https://vip.csdn.net/askvip?utm_source=1146287632
【APP 】  戳>>>  https://mall.csdn.net/item/52471?utm_source=1146287632