实验7 字符串处理 输入字符串使用库函数strcmp比较字符串大小 由小到大排序输出 将字符串中所有字符按ASCII码升序输出输入一行包含数字字符的字符串,计算并输出累加和删除字符串中的所有空格。

最近事情有点多,问别人要了一份答案先放这,等闲下来再看看答案的缺点,写写解析吧。

1.程序功能为输入5个字符串,使用库函数strcmp()比较字符串大小,由小到大排序并输出。下列程序 代码有错误,请修改为正确代码。

输入格式:
请输入5个字符串,字符串可以包含空格。
输出格式:
请输出排序后的字符串,每个字符串单独占一行。

#include "stdio.h"
#include "string.h"
    int main(  )
    {
        char ss[5][100],tt[100];
        int i,j;
        for(i=0;i<5;i++)
            gets(ss[i]);
        for(i=0;i<4;i++)
        {
            for(j=0;j<4-i;j++)
            {
                if( strcmp(ss[j],ss[j+1])>0)
                {
                   strcpy(tt,ss[j]);
                   strcpy(ss[j], ss[j+1]);
                   strcpy(ss[j+1],tt);

                 }
            }
        }
        for(i=0;i<5;i++)
               puts(ss[i]);
	   return 0;
    }

2.“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。现在呢,就是让你判断输入的字符串是否是回文串。

输入格式:
输入一个字符串。
输出格式:
输出YES 或者 NO,最后换行。

#include <stdio.h>
int main()
{
    char str[100];
    int i,j,flag=1,count=0;
    gets(str);
    while(str[count]!='\0')
    {
        count++;
    }
    for(i=0,j=count;(i<=count&&j>=0)&&(i<=j);i++,j--)
        if(str[i]!=str[j-1])
            flag=0;
    if(flag==0)
        printf("NO\n");
    if(flag==1)
        printf("YES\n");
    return 0;
}

3.给定程序的功能是:读入一个字符串,将该字符串中的所有字符按ASCII码升序排序后输出,请补足程序。

输入格式:
输入一个字符串
输出格式:
输出字符串,最后换行。

#include <stdio.h>
#include <string.h>
int main()
{
    char c,s[80];
    int i,j;
    gets(s);
    int count=0;
    while(s[count]!='\0')
        count++;
    for(i=0;i<count-1;i++)
    {
        for(j=0;j<count-1-i;j++)
        {
            if(s[j]>s[j+1])
            {
                c=s[j];
                s[j]=s[j+1];
                s[j+1]=c;
            }
        }
    }
    printf("%s\n",s);
    return 0;
}

4.以下函数的功能为b中字符串连接到a字符串的后面,并返回a中新字符串的长度,补足程序。

输入格式:
输入两个字符串
输出格式:
第一行输出连接后的字符串,第二行输出字符串的长度,并换行。.

#include <stdio.h>
#include <string.h>
int main()
{
    char a[80],b[20];
    int num=0,n=0;
    gets(a);
    gets(b);
    while(a[num]!='\0')
        num++;
    while(b[n])
    {
        *(a+num)=*(b+n);
        num++;
        n++;
    }
    a[num]='\0';
    puts(a);
    printf("%d\n",num);
    return 0;
}

5.从键盘输入一行包含数字字符的字符串,计算并输出数字字符对应数值的累加和。

输入格式:
输入一行包含数字字符的字符串
输出格式:
输出数字相加的结果,最后换行。

#include <stdio.h>
#include <string.h>
int main()
{
    char a[80],t[80];
    memset(t,0,sizeof(t));
    int count=0,sum=0,flag=0,temp=0;
    int i=0,j=0,k=0;
    gets(a);
    while(a[count]!='\0')
        count++;
    for(int i=0;i<count;i++)
    {
        if(a[i]>='0'&& a[i]<='9')
      {
        flag=1;
        temp=a[i]-'0';
        if(flag==1)
        {
            t[k]=temp;
            k++;
        }
      }
        else
               flag=0;
    }
    for(int i=0;i<=k;i++)
        sum+=t[i];
    printf("%d",sum);
    return 0;
}

6.请编写一个程序,功能是删除字符串中的所有空格。例如,输入"asd af aa z67",则输出为 “asdafaaz67”。

输入格式:
输入一个字符串,里面含有空格字符
输出格式:
输出删除空格字符后的字符串

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

void deletespace(char *ch)
{
	char *s;
	while (*ch != ' ')
	{
		if (*ch == '\0')
			return;
		ch++;
	}
	s = ch + 1;
	while (s == ' ')
		s++;
	while (*s != '\0')
	{
		if (*s != ' ')
		{
			*ch = *s;
			*s = ' ';
			ch++;
		}
		s++;
	}
	*ch = '\0';
	return;
}
int main()
{
	char ch[200];
	gets(ch);
	deletespace(ch);
	printf("%s\n",ch);
	return 0;
}
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页