SDUT ACM OJ 实验九 字符串应用

提交题目记得选择c不然gets函数会报ce
SDUT ACM OJ 实验九 字符串应用_第1张图片
A - C语言实验——字符编码

#include<stdio.h>
int main()
{
	int i;
	char a[6];
	gets(a);
	printf("password is ");
	for(i=0;a[i]!='\0';i++)
	{
		   printf("%c",a[i]+4);
	}
}

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

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

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

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

D - 字符串分割

#include<stdio.h>
#include<string.h>
int main()
{
	char s[10001],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");
			if(s[i]!=c)
			printf("%c",s[i]);
		}
		printf("\n");
	}
}

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

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

F - 全字母句

#include<stdio.h>
#include<string.h>
int main()
{
	char s[101],c;
	int i,n,j,t;
	while(gets(s))
	{
	t=0;
	n=strlen(s);
	for(i=0;i<n;i++)
	{
	    if(s[i]>='A'&&s[i]<='Z')
        {
        s[i]=s[i]+32;
        }
	}
    for(j='a';j<='z';j++)
        {
        	for(i=0;i<n;i++)
        	{
        		if(s[i]==j)
        		{
        			t++;
        			break;
				}
			}
		}
	if(t==26)printf("Yes\n");
	else printf("No\n"); 
	}
}

G - 字符统计2

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

int main() {
	int i, max, flag;
	char q[101];
	while (gets(q)) {
		int a[200] = {0};
		int len = strlen(q);
		max = flag = 0;
		for (i = 0; i < len; i++) {
			if (q[i] != ' ')
				a[q[i]]++;
		}
		for (i = 65; i < 123; i++) {
			if (max < a[i]) {
				max = a[i];
				flag = i;
			}
		}
		printf("%c %d\n", flag, max);
	}
}

H - 字符统计1

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

I - 大小写转换

#include<stdio.h>
#include<string.h>
int main()
{
	char s[81];
	int i,n;
	while(gets(s))
	{
		for(i=0;s[i]!='\0';i++)
		{
			if(s[i]>='a'&&s[i]<='z') s[i]-=32;
			else if(s[i]>='A'&&s[i]<='Z') s[i]+=32;
		}
		puts(s);
	}
	return 0;
}

J - 简单字符串比较

#include<stdio.h>
#include<string.h>
int main()
{
	char s[16],t[16];
	int i,n;
	scanf("%s %s",s,t);
	n=strcmp(s,t);
	if(n>0) printf("%s>%s",s,t);
	else if(n==0) printf("%s=%s",s,t);
	else if(n<0) printf("%s<%s",s,t);
	return 0;
}

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

#include<stdio.h>
#include<string.h>
int f(int a,int b)
{
	int n;
	if(a==b) n=0;
	else if((a==4&&b==8)||(a==8&&b==5)||(a==5&&b==4)) n=1;
	else if((a==8&&b==4)||(a==5&&b==8)||(a==4&&b==5)) n=2;
	return n;
}
int main()
{
	char s[9],t[9];
	int a,b,n;
	scanf("%s %s",s,t);
	a=strlen(s),b=strlen(t);
	n=f(a,b);
	if(n==0) printf("Equal");
	else if(n==1) printf("Win");
	else if(n==2) printf("Lose");
	return 0;
}

L - 找老乡

#include<stdio.h>
#include<string.h>
int main()
{
	char s[101],t[101],l[21];
	int a=0,n,i;
	while(~scanf("%d\n%s",&n,s))
	{
	a=0;
	for(i=1;i<=n;i++)
	{
		scanf("%s%s",t,l);
		if(strcmp(s,l)==0){a++;printf("%s\n",t);}
	}
	printf("%d\n",a);
	}
}

M - 简单字符串排序

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

N - 简单编码

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

O - 编码

#include<stdio.h>
#include<string.h>
int main()
{
	int i,t;
	char a[10001];
	while(gets(a))
	{
	t=1;
		for(i=0;a[i]!='\0';i++)
		{
			
			if(a[i+1]==a[i]) t++;
			else
			{
				if(t==1)printf("%c",a[i]);
				else
				{
				printf("%d%c",t,a[i]);t=1;
				}
			}	
		}
		printf("\n");
	}
}

P - 字符逆序

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

Q - 回文串判定

#include<stdio.h>
#include<string.h>
int main()
{
	char a[101];
	int len,i,j;
	gets(a);
	len=strlen(a);
	i=0;j=len-1;
	while(i<j)
	{
		if(a[i]==a[j]){i++;j--;}
		else{printf("no");return 0;} 
	}
	printf("yes");
	return 0;
}

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

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

S - 简单密码破解

#include<stdio.h>
#include<string.h>
int main()
{
    char s[105];
    int a;
    while(gets(s))
    {
        for(a=0;s[a]!='\0';a++)
        {
            if(s[a]>='a'&&s[a]<='c'){s[a]='2';}
            else if(s[a]>='d'&&s[a]<='f'){s[a]='3';}
            else if(s[a]>='g'&&s[a]<='i'){s[a]='4';}
            else if(s[a]>='j'&&s[a]<='l'){s[a]='5';}
            else if(s[a]>='m'&&s[a]<='o'){s[a]='6';}
            else if(s[a]>='p'&&s[a]<='s'){s[a]='7';}
            else if(s[a]>='t'&&s[a]<='v'){s[a]='8';}
            else if(s[a]>='w'&&s[a]<='z'){s[a]='9';}
            else if(s[a]>='A'&&s[a]<'Z'){s[a]=s[a]+33;}
            else if(s[a]=='Z'){s[a]='a';}
        }
        puts(s);
    }
    return 0;
}

T - 统计元音

#include<stdio.h>
#include<string.h>
int main()
{
	int h,j,n,a,e,i,o,u;
	char s[101];
	scanf("%d",&n);
	getchar();
	for(j=1;j<=n;j++)
	{
		a=0;e=0;i=0;o=0;u=0;
		gets(s);
		for(h=0;s[h]!='\0';h++)
		{
			if(s[h]=='a') a++;
			else if(s[h]=='e') e++;
			else if(s[h]=='i') i++;
			else if(s[h]=='o') o++;
			else if(s[h]=='u') u++;
		}
		printf("a:%d\ne:%d\ni:%d\no:%d\nu:%d\n\n",a,e,i,o,u); 
	}
	return 0;
}

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

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

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

#include<stdio.h>
#include<string.h>
int main()
{
	char s1[85],s2[85];
	int a,b,c,j=0;
	gets(s1);
	b=strlen(s1);
	for(a=0;a<b;a++)
	{
		if((s1[a]<'0'||s1[a]>'9')&&(s1[a+1]>='0'&&s1[a+1]<='9')){s2[j++]='*';}
		else if(s1[a]>='0'&&s1[a]<='9'){s2[j++]=s1[a];}
		if(a==b-1&&(s1[a]<'0'||s1[a]>'9')){s2[j++]='*';}
	}
	for(a=0;a<j;a++){printf("%c",s2[a]);}
return 0;
}

W - 字符串排序

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

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

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

Y - X的旅游计划

#include<stdio.h>
#include<string.h>
int main()
{
	int i,j,h,p,q;
	while(~scanf("%d %d",&p,&q))
	{
		char m[101][11],w[101][11],t[101][11],s[11];
        for(i=0;i<p;i++){scanf("%s",m[i]);}
		for(i=0;i<q;i++){scanf("%s",w[i]);}
        h=0;
        for(i=0;i<p;i++)
        {
        	for(j=0;j<q;j++)
        	{
        		if(strcmp(m[i],w[j])==0)
        		{
        			strcpy(t[h++],m[i]);
				}
			}
		}
		if(h!=0)
		{
			for(i=h-1;i>0;i--)
			{
				for(j=0;j<i;j++)
				{
					if(strcmp(t[j],t[j+1])>0)
					{
						strcpy(s,t[j]);
						strcpy(t[j],t[j+1]);
						strcpy(t[j+1],s);
					}
				}
			}
			for(i=0;i<h;i++) printf("%s\n",t[i]);
		}
		else if(h==0) printf("sad!\n");
	}
}

不懂得可以私信我,随时解答。
程序有错误请私信我,以及时改正。感谢!

小纸条(暴力解法)

#include<stdio.h>
int main ()
{
    int i,j,n;
    char s1[10010];
    char s2[200]= {
    'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
    'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
    'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
    'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
    'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
    };
    while(~scanf("%d",&n))
    {
        getchar();
        gets(s1);
            for(i=0; s1[i]!='\0'; i++)
            {
                for(j=52; j<78; j++)
                {
                    if(s1[i]==s2[j])
                    {
                        s1[i]=s2[j-n];
                        break;
                    }
                }
            }
        puts(s1);
    }
}

你可能感兴趣的:(acm,c语言,数据结构,算法)