字符编码
请将一串长度最长为5的纯字母文本译成一个密码,密码规律如下:用原来的字母后面的第4个字母代替原来的字母。如C用G代替(如果该字母没后面没有第4个字母可代替,则需从26字母表中的首字母开始代替,比如:W用A代替,Z用D代替),最后得到的文本即为密码。
输入格式:
输入一串文本,长度固定为5。
输出格式:
输出对应的密码。格式为:
password is 密码
#include<stdio.h>
int main()
{
char x;
printf("password is ");
for(int i=0;i<5;i++)
{
x=getchar();
if(x>='a'&&x<'w')
printf("%c",x+4);
else if(x>='A'&&x<'W')
printf("%c",x+4);
else if(x>='w'||x>='W')
printf("%c",x-22);
}
return 0;
}
保留字母
编一个程序,输入一个允许带空格的字符串,将组成字符串的所有非英文字母的字符删除后输出。
输入格式:
一个字符串,长度不超过80个字符。
输出格式:
删掉非英文字母后的字符串。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int i, len, j, t;
char a[81];
char b[81];
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
gets(a);
len = strlen(a);
for(i = 0, j = 0; i < len; i++)
{
t = a[i];
if((t >= 'A' && t <= 'Z') || (t >= 'a' && t <= 'z'))
{
b[j] = t;
j++;
}
}
puts(b);
return 0;
}
大小写转换
输入一字符串,请把一串字符中的小写字母变成大写字符,大写字母变成小写字母,其他的保持不变。
输入格式:
输入有多组。
每组输入一个字符串,长度不大于80,不包含空格。输出格式:
输出转换后的字符串
#include<stdio.h>
int main()
{
char x;
for(int i=0;i<80;i++)
{
x=getchar();
if(x>='a'&&x<='z')
printf("%c",x-32);
else if(x>='A'&&x<='Z')
printf("%c",x+32);
else if(x==EOF)
break;
else printf("%c",x);
}
return 0;
}
字符串分割
输入一个字符串,要求把这个字符串按照某个分隔符来分割成若干个字符串输出。
输入格式:
输入数据有多组(数据组数不超过 100),到 EOF 结束。
每组数据输入一行,格式为 "s c",其中 s 为一个不含空格且长度不超过 1000 的字符串,表示待分割的字符串;c 为一个不是空格的字符,表示分隔符。
输入数据保证在待分割的字符串中,分隔符至少出现一次且不会出现在字符串开头或末尾,并且不会出现连续多个分隔符的情况。
输出格式:
对于每组数据,输出分割后的字符串,每个字符串占一行。
输入样例:
123,DE , 0123.a,/45/6.8 /
输出样例:
123 DE 0123.a, 45 6.8
#include<stdio.h>
int main()
{
int x;
char arr[1000],c;
while(scanf("%s %c",arr,&c)!=EOF)
{
x=strlen(arr);
for(int i=0;i<x;i++)
{
if(arr[i]==c)
printf("\n");
else printf("%c",arr[i]);
}printf("\n");
}return 0;
}
删除指定字符
从键盘输入一个字符串给str和一个字符给c,删除str中的所有字符c并输出删除后的字符串str。
输入格式:
第一行是一个字符串,不超过100个字符;
第二行是一个字符。输出格式:
删除指定字符后的字符串。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char str[1000],c;
int x;
gets(str);
scanf("%c",&c);
x=strlen(str);
for(int i=0;i<x;i++)
{
if(str[i]!=c)
{
printf("%c",str[i]);
}
}
return 0;
}
全字母句
全字母句 (pangram) 指包含字母表中全部 26 种英文字母(不区分大小写)的句子,其常被用于展示英文字体的显示效果。
输入多个句子,判断哪些句子是全字母句。
输入格式:
输入数据有多组(数据组数不超过 100),到 EOF 结束。
每组数据包含一行长度不超过 100 的字符串。
输出格式:
对于每组数据,输出一行。
如果是全字母句则输出 "Yes",否则输出 "No"(不包括引号)。
输入样例:
The quick brown fox jumps over the lazy dog. The 6th ACM Funny Programming For/While Contest
输出样例:
Yes No
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char str[101];
int x,i;
while(gets(str)!=NULL)
{
x=strlen(str);
int arr[26]={0};
for(i=0;i<x;i++)
{
if(str[i]>'A'&&str[i]<'Z')
str[i]+=32;
arr[str[i]-'a']++;
}
int num=0;
for(i=0;i<26;i++)
{
if(arr[i]!=0)
num++;
}if(num==26)
printf("Yes\n");
else printf("No\n");
}
return 0;
}
回文串的判断
输入一个字符串,判断该字符串是否为回文,只考虑数字和字母字符,字母的大小写没有区别。
回文就是字符串中心对称,从左向右读和从右向左读的内容是一样的。输入格式:
输入一串字符(长度小于100)。
输出格式:
若该串字符是回文串输出“yes",否则输出“no”。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char a[101];
int n,i;
gets(a);
n = strlen(a);
for(i=0;i<n/2;i++)
{
if(a[i]!=a[n-i-1]) //前后对应相等,若不相等结束循环;
break;
}
if(i<n/2) printf("no\n");
else printf("yes\n");
return 0;
}
A-B
本题要求你计算A−B。不过麻烦的是,A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉,剩下的字符组成的就是字符串A−B。
输入格式:
输入在2行中先后给出字符串A和B。两字符串的长度都不超过104,并且保证每个字符串都是由可见的ASCII码和空白字符组成,最后以换行符结束。
输出格式:
在一行中打印出A−B的结果字符串。
输入样例:
I love GPLT! It's a fun game! aeiou
输出样例:
I lv GPLT! It's fn gm!
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char a[10005],b[10005];
gets(a);
gets(b);
int x,y;
x=strlen(a);
y=strlen(b);
for(int i=0;i<x;i++)
{
int j;
for(j=0;j<y;j++)
{
if(a[i]==b[j]) break;
}
if(j==y) printf("%c",a[i]);
}
return 0;
}