OJ《程序设计基础I》实验9- 字符串的应用

28 篇文章 2 订阅
17 篇文章 1 订阅

9-1 A - C语言实验——字符编码

#include<stdio.h>
int main()
{
	char s[6],b[6];
	int i;
	for(i=0;i<=4;i++)
	{
		scanf("%c",&s[i]);
		b[i]=s[i]+4;
	}
	printf("password is ");
	for(i=0;i<=4;i++)
	{
		printf("%c",b[i]);
	}
	return 0;
}

9-2 B - C语言实验——保留字母

#include<stdio.h>
int main()
{
	char s[82],b[82];
	int i,j;
	fgets(s,81,stdin);
	for(i=0,j=0;s[i]!='\0';i++)
	{
		if((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z'))
		{
			b[j]=s[i];
			j++;
		}
	}
		printf("%s",b);
	return 0;
}

9-3 C - C语言实验——大小写转换

#include<stdio.h>
int main()
{
	char s[80];
	int i;
	fgets(s,79,stdin);
	for(i=0;s[i]!='\0';i++)
	{
		if(s[i]>='a'&&s[i]<='z')
			s[i]=s[i]-32;
		else if(s[i]>='A'&&s[i]<='Z')
		s[i]=s[i]+32;
	}
		printf("%s",s);
	return 0;
}

9-4 D - 字符串分割

#include<stdio.h>
#include<string.h>
int main()
{
	char s[1000],c;
	int i,n;
	while(~scanf("%s %c",s,&c))
	{
		n=strlen(s);
		for(i=0;i<n;i++)
		{
			if(s[i]==c)
			printf("\n");
			else printf("%c",s[i]);
		}
		printf("\n");
	}
	return 0;
}

9-5 E - C语言实验——删除指定字符

#include<stdio.h>
#include<string.h>
int main()
{
	char s[100],c;
	int i,n;
	scanf("%s\n",s);
	scanf("%c",&c);
	n=strlen(s);
	for(i=0;i<n;i++)
	{
		if(s[i]!=c)
		printf("%c",s[i]);
	}
	return 0;
}

9-6 F - 全字母句

#include<stdio.h>
#include<string.h>
int main()
{
	char s[102],c;
	int i,b=0,n;
	while(fgets(s,102,stdin)!=NULL)
	{
		n=strlen(s);
		b=0;
		for(i=0;i<n;i++)
		{
			if(s[i]>='a'&&s[i]<='z')
			s[i]=s[i]-32;
		}
		for(c='A';c<='Z';c++)
		{
			for(i=0;i<n;i++)
			{
				if(s[i]==c)
				{
					b++;
					break; 
				}
			}
		}
		if(b==26)
		printf("Yes\n");
		else printf("No\n");
	}
	return 0;
}

9-7 G - 字符统计2

#include<stdio.h>
#include<string.h>
int main()
{
    char s[200];
    int a[200];
    int i,len,max,k;
    while(fgets(s,199,stdin))
    {
        memset(a,0,sizeof(a));
        k = 0;
        max = 0;
        len = strlen(s);
        for(i = 0; i < len; i++)
        {
            if(s[i] == ' ')
                continue;
            a[s[i]]++;
        }
        for(i = 65; i < 123; i++)
        {
            if(max < a[i])
            {
                max = a[i];
                k = i;
            }
        }
        printf("%c %d",k,max);
        printf("\n");
    }
    return 0;
}

9-8 H - 字符统计1

#include<stdio.h>
#include<string.h>
int main()
{
    char s[100000];
    int i,n,a,b,c,d;
    while(gets(s)!=NULL)
    {
        a=0;
        b=0;
        c=0;
        d=0;
        n = strlen(s);
        for(i = 0; i < n; i++)
        {
            if((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z'))
                a++;
                else if(s[i]==' ')
                    b++;
                    else if(s[i]>='0'&&s[i]<='9')
                        c++;
                        else d++;
                        }
        printf("%d %d %d %d",a,c,b,d);
        printf("\n");
    }
    return 0;
}

9-9 I - 大小写转换

#include <stdio.h>
#include<string.h>
int main()
{
    int i,len;
    char s[80];
    while(gets(s))
    {
        len = strlen(s);
        for(i=0; i<len; i++)
        {
            if(s[i]>='a'&&s[i]<='z')
            {
                s[i]-=32;
            }
            else if(s[i]>='A'&&s[i]<='Z')
            {
                s[i]+=32;
            }
        }
        printf("%s\n",s);
    }

    return 0;
}

9-10 J - 简单字符串比较

#include<stdio.h>
#include<string.h>
int main()
{
    char a[20],b[20];
    gets(a);
    gets(b);
    if(strcmp(a,b)==0)
    {
        printf("%s=%s",a,b);
    }
    else if(strcmp(a,b) < 0)
    {
        printf("%s<%s",a,b);
    }
    else
    {
        printf("%s>%s",a,b);
    }
    return 0;
}

9-11 K - 小鑫の日常系列故事(二)——石头剪子布

#include<stdio.h>
#include<string.h>
int main()
{
    char a[10],b[10];
    gets(a);
    gets(b);
    if((a[0]=='R'&&b[0]=='S')||(a[0]=='S'&&b[0]=='C')||(a[0]=='C'&&b[0]=='R'))
    {
        printf("Win");
    }
    if((a[0]=='R'&&b[0]=='R')||(a[0]=='S'&&b[0]=='S')||(a[0]=='C'&&b[0]=='C'))
    {
        printf("Equal");
    }
    if((a[0]=='R'&&b[0]=='C')||(a[0]=='S'&&b[0]=='R')||(a[0]=='C'&&b[0]=='S'))
    {
        printf("Lose");
    }
    return 0;
}

9-12 L - 找老乡

#include<stdio.h>
#include<string.h>
int main()
{
    char c[25],a[100][25],b[100][25];
    int n,i,count;
    while(~scanf("%d",&n))
    {
        count = 0;
        scanf("%s",c);
        for(i = 0; i < n; i++)
        {
            scanf("%s%s",a[i],b[i]);
        }
        for(i = 0; i < n; i++)
        {
            if(strcmp(c,b[i]) == 0)
            {
                printf("%s\n",a[i]);
                count++;
            }
        }
        printf("%d\n",count);
    }
    return 0;
}

9-13 M - 简单字符串排序

#include<stdio.h>
#include<string.h>
int main()
{
    char a[10][20],b[10][20],t[20];
    int n,i,e,c[10],d[10],j;
        for(i = 0; i < 10; i++)
        {
            scanf("%s",a[i]);
        }
        for(i=0;i<10;i++)
        {
            scanf("%d",&c[i]);
        }
        for(i = 0; i < 9; i++)
        {
            for(j=0;j<9-i;j++)
            {
               if(strcmp(a[j],a[j+1])>0)
               {
                   strcpy(t,a[j]);
                   strcpy(a[j],a[j+1]);
                   strcpy(a[j+1],t);
                   e=c[j];
                   c[j]=c[j+1];
                   c[j+1]=e;
               }
            }
        }
        for(i=0;i<10;i++)
        {
            printf("%s,%d\n",a[i],c[i]);
        }
    return 0;
}

9-14 N - 简单编码

#include<stdio.h>
#include<string.h>
int main()
{
    int i,n;
    char s[20],s1[20];
    scanf("%s",s);
    n=strlen(s);
    for(i=0;i<n;i++)
    {
        if(s[i]>='a'&&s[i]<='z')
        {
            s1[i]=s[i]-32;
        }
        if(s[i]>='A'&&s[i]<='Z')
        {
            s1[i]=s[i]+32;
        }
        if(s[i]>='0'&&s[i]<='9')
        {
            s1[i]=105-s[i];
        }
    }
    for(i=n-1;i>=0;i--)
    printf("%c",s1[i]);
    return 0;
}

9-15 O - 编码

#include<stdio.h>
#include<string.h>
int main()
{
    int i,c,m[1000],k,j,p;
    char a[100000],b[100000];
    while(gets(a))
    {
        c = 1;
        p = 0;
        for(i = 0; i < strlen(a); i++)
        {
            if(a[i] == a[i+1])
            {
                c++;
                p = 1;
            }
            else if(p != 1)
            {
                printf("%c",a[i]);
                p = 0;
            }
            else
            {
                printf("%d%c",c,a[i]);
                c = 1;
                p = 0;
            }
        }
        printf("\n");
    }
}

9-16 P - 字符逆序

#include<stdio.h>
#include<string.h>
int main()
{
    int i,n;
    char s[1000];
    gets(s);
    n=strlen(s);
	for(i=n-1;i>=0;i--)
	{
		printf("%c",s[i]);
	}
	return 0;
}

9-17 Q - 回文串判定

#include<stdio.h>
#include<string.h>
int main()
{
    int i,n,j,k=0;
    char s[100];
    gets(s);
    n=strlen(s);
	for(i=0,j=n-1;i<n,j>=0;i++,j--)
	{
		if(s[i]!=s[j])
		k++;
	}
	if(k==0) printf("yes");
	else printf("no");
	return 0;
}

9-18 R - 小鑫の日常系列故事(七)——小纸条

#include<stdio.h>
#include<string.h>
int main()
{
    int i,n,k,m;
    char s[10003];
    while(scanf("%d",&n)!=EOF)
    {
    	getchar();
        gets(s);
        k=n%26;
        for(i=0; s[i]!='\0'; i++)
        {
            if(s[i]==' ') ;
            else
            {
               m=s[i]-k;
			   if(m<'a')
			   {
			   	  s[i]=s[i]-k+26;
				}
				else if(m>'z')
				{
				   s[i]=s[i]-k-26;	
				}
				else s[i]=m;	
            }
        }
        puts(s);
    }
    return 0;
}

9-19 S - 简单密码破解

#include<stdio.h>
#include<string.h>
int main()
{
    char a[101];
    char b[101];
    int i;
    while(gets(a))
    {
        int n = strlen(a);
        for(i = 0; i < n; i++)
        {
            if(a[i] == ' ')
                break;
            else if(a[i] >= 97 && a[i] <= 99)
            {
                b[i] = '2';
            }
            else if(a[i] >= 100 && a[i] <= 102)
            {
                b[i] = '3';
            }
            else if(a[i] >= 103 && a[i] <= 105)
            {
                b[i] = '4';
            }
            else if(a[i] >= 106 && a[i] <= 108)
            {
                b[i] = '5';
            }
            else if(a[i] >= 109 && a[i] <= 111)
            {
                b[i] = '6';
            }
            else if(a[i] >= 112 && a[i] <= 115)
            {
                b[i] = '7';
            }
            else if(a[i] >= 116 && a[i] <= 118)
            {
                b[i] = '8';
            }
            else if(a[i] >= 119 && a[i] <= 122)
            {
                b[i] = '9';
            }
            else if(a[i] >= 'A' && a[i] <= 'Y')
            {
                b[i] = a[i] + 33;
            }
            else if(a[i] == 'Z')
            {
                b[i] = a[i] + 7;
            }
            else
            {
                b[i] = a[i];
            }
        }
        for(i = 0; i < n; i++)
        {
            printf("%c",b[i]);
        }
        printf("\n");
    }
    return 0;
}

9-20 T - 统计元音

#include<stdio.h>
#include<string.h>
int main()
{
    int n;
    int i;
    int num1,num2,num3,num4,num5;
    char a[101];
    scanf("%d",&n);
    getchar();
    while(n--)
    {
        gets(a);
        int k = strlen(a);
        num1 = num2 = num3 = num4 = num5 = 0;
        for(i = 0; i < k; i++)
        {
            if(a[i] == 'a')
            {
                num1++;
            }
            else if(a[i] == 'e')
            {
                num2++;
            }
            else if(a[i] == 'i')
            {
                num3++;
            }
            else if(a[i] == 'o')
            {
                num4++;
            }
            else if(a[i] == 'u')
            {
                num5++;
            }
        }
        printf("a:%d\ne:%d\ni:%d\no:%d\nu:%d\n",num1,num2,num3,num4,num5);
        printf("\n");
    }
    return 0;
}

9-21 U - C语言实验——单词统计

#include<stdio.h>
#include<string.h>
int main()
{
    char s[101];
    int i,num = 0,word = 0;
    gets(s);
    int n = strlen(s);
    for(i = 0; i < n; i++)
    {
        if(s[i] == ' ')
        {
            word = 0;
        }
        else if(word == 0)
        {
            word = 1;
            num++;
        }
    }
    printf("%d",num);
    return 0;
}

9-22 V - C语言实验——保留整数

#include<stdio.h>
#include<string.h>
int main()
{
    char str1[100];
    char str2[100];
    gets(str1);
    int n=strlen(str1);
    int i;
    int m=0;
    if(str1[0]>='0'&&str1[0]<='9')
    {
        str2[m++]=str1[0];
    }
    else
    {
        str2[m++]='*';
    }
    for(i=1; i<n; i++)
    {
        if(str1[i]>='0'&&str1[i]<='9')
        {
            str2[m++]=str1[i];
        }
        else
        {
            if(str2[m-1]!='*')
            {
                str2[m++]='*';
            }
        }
    }
    for(i=0;i<m;i++)
    {
     printf("%c",str2[i]);
     }
     printf("\n");
     return 0;
}

9-23 W - 字符串排序

#include<stdio.h>
#include<math.h>
#include<string.h>
int main()
{
    int i, j;
    char a[3][110];
    char t[110];
    memset(a, 0, sizeof(a));
    memset(t, 0, sizeof(t));
    for(i = 0; i < 3; i++)
    {
        scanf("%s", a[i]);
    }
    for(i = 0; i < 3; i++)
    {
        for(j = 0; j < 3 - 1 - i; j++)
        {
            if(strcmp(a[j], a[j + 1]) > 0)
            {
                strcpy(t, a[j]);
                strcpy(a[j], a[j + 1]);
                strcpy(a[j + 1], t);
            }
        }
    }
    for(i = 0; i < 3; i++)
    {
        if(i == 0)
            printf("%s", a[i]);
        else
            printf(" %s", a[i]);
    }
    return 0;
}

9-24 X - C语言实验——合法的C标识符

#include<stdio.h>
#include<string.h>
int main()
{
    char a[101];
    int i,flag;
    gets(a);
    flag = 0;
    if((a[0] >= 'a' && a[0] <= 'z') || (a[0] >= 'A' && a[0] <= 'Z') || (a[0] == '_'))
    {
        for(i = 0; a[i] != '\0'; i++)
        {
            if((a[i] >= 'a' && a[i] <= 'z') || (a[i] >= 'A' && a[i] <= 'Z') || (a[i] == '_') || (a[i] >= '0' && a[i] <= '9'))
            {
                flag = 1;
            }
            else
            {
                flag = 0;
                break;
            }
        }
    }
    if(flag == 1)
        printf("YES\n");
    else
        printf("NO\n");
    return 0;
}

9-25 Y - X的旅游计划

#include<stdio.h>
#include<math.h>
#include<string.h>
int main()
{
    int i, n, m, j, flag, k;
    char b[100][20], g[100][20], a[100][20], t[20];
    while(~scanf("%d %d", &n, &m))
    {
        memset(b, 0, sizeof(b));
        memset(g, 0, sizeof(g));
        memset(a, 0, sizeof(a));
        memset(t, 0, sizeof(t));
        for(i = 0; i < n; i++)
        {
            scanf("%s", b[i]);
        }
        for(i = 0; i < m; i++)
        {
            scanf("%s", g[i]);
        }
        flag = 0;
        k = 0;
        for(i = 0; i < n; i++)
        {
            for(j = 0; j < m; j++)
            {
                if(strcmp(b[i], g[j]) == 0)
                {
                    strcpy(a[k++], g[j]);
                    flag++;
                }
            }
        }
        int q = k - 1;
        for(i = 0; i <= q; i++)
        {
            for(j = 0; j <= q - 1 - i; j++)
            {
                if(strcmp(a[j], a[j + 1]) > 0)
                {
                    strcpy(t, a[j]);
                    strcpy(a[j], a[j + 1]);
                    strcpy(a[j + 1], t);
                }
            }
        }
        if(flag == 0)
            printf("sad!\n");
        else
        {
            for(i = 0; i < flag; i++)
            {
                printf("%s\n", a[i]);
            }
        }
    }
    return 0;
}	

加油加油加油!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CRAEN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值