c语言练习题目.docx
《c语言练习题目.docx》由会员分享,可在线阅读,更多相关《c语言练习题目.docx(13页珍藏版)》请在冰豆网上搜索。
c语言练习题目
1、题目描述
输入任意4个字符,并按反序输出。
输入
输入第一行表示测试样例个数m,接下来m行每行一个字符串。
输出
输出m行,分别对应输入字符串的反序。
样例输入
2
abcd
eerd
样例输出
dcba
dree
#include
#include
intmain()
{
intn;
charc[5];
scanf("%d",&n);
for(inti=0;i {
scanf("%s",&c);
for(intj=3;j>=0;j--)
printf("%c",c[j]);
printf("\n");
}
//system("pause");
return0;
}
2、题目描述
输入一行字符串(字符串长度小于10000,由大小写字母、阿拉伯数字和空格组成),分别统计出其中大写英文字母,小写英文字母、阿拉伯数字和空格的个数。
输入
一行字符串(字符串长度小于10000,由大小写字母、阿拉伯数字和空格组成)
输出
分别输出大写英文字母,小写英文字母、阿拉伯数字和空格的个数,用空格隔开
样例输入
h0u84nfx7
样例输出
0541
#include
#include
#include
#include
#include
usingnamespacestd;
constintN=20000;
chars[N];
intmain(){
gets(s);
intt[4];
memset(t,0,sizeof(t));
intlen=strlen(s);
for(inti=0;i intid=3;
if(s[i]>='A'&&s[i]<='Z')id=0;
if(s[i]>='a'&&s[i]<='z')id=1;
if(s[i]>='0'&&s[i]<='9')id=2;
if(s[i]=='')id=3;
t[id]++;
}
printf("%d%d%d%d\n",t[0],t[1],t[2],t[3]);
return0;
}
3、题目描述
输入字符串s和字符c,要求去掉s中所有的c字符,并输出结果。
输入
测试数据有多组,每组输入字符串s和字符c。
输出
对于每组输入,输出去除c字符后的结果。
样例输入
goaod
a
样例输出
good
#include
intmain()
{
chars[1000],c[2];
inti;
while(gets(s))
{
gets(c);
for(i=0;s[i];i++)
if(s[i]!
=c[0])
printf("%c",s[i]);
puts("");
}
return0;
}
4、题目描述
统计一个给定字符串中指定的字符出现的次数。
输入
测试输入包含若干测试用例,每个测试用例包含2行,第1行为一个长度不超过5的字符串,第2行为一个长度不超过80的字符串。
注意这里的字符串包含空格,即空格也可能是要求被统计的字符之一。
当读到'#'时输入结束,相应的结果不要输出。
输出
对每个测试用例,统计第1行中字符串的每个字符在第2行字符串中出现的次数,按如下格式输出:
c0n0
c1n1
c2n2
...
其中ci是第1行中第i个字符,ni是ci出现的次数。
样例输入
I
THISISATEST
ing
thisisalongteststring
#
样例输出
I2
i3
5
n2
g2
#include
intmain(){
charstr1[10],str2[100];
while(gets(str1)&&str1[0]!
='#'){
gets(str2);
inti=0;
while(str1[i]){
intj=0,count=0;
while(str2[j]){
if(str1[i]==str2[j]){
count++;
}
j++;
}
printf("%c%d\n",str1[i],count);
i++;
}
}
return0;
}
5、题目描述
我们把只有0和1组成的字符串叫做比特字符串。
如果比特字符串中1的个数为奇数,则称这个比特字符串是奇性的。
如果比特字符串中1的个数为偶数,则称这个比特字符串是偶性的。
注意:
(1)0是偶数,所以不包含1的比特字符串是偶性的。
(2)0的个数不影响比特字符串的奇偶性。
输入
输入包含多组测试数据。
每组数据由1~31个0、1组成,最后跟一个小写字母e或o,e表示此比特字符串应为偶性,o表示此比特字符串应为奇性。
当输入#时,表示输入结束。
输出
每组输入对应一个输出,你应该将最后的字母替换成0或1,使得此比特字符串符合输入时确定的奇偶性。
样例输入
101e
010010o
1e
000e
110100101o
#
样例输出
1010
0100101
11
0000
1101001010
#include
#include
intmain()
{
inti,k,l;
chara[35];
while(gets(a))
{
k=0;
if(!
strcmp(a,"#"))
break;
l=strlen(a);
for(i=0;i if(a[i]=='1')
k++;
if(k%2==0)
{
if(a[l-1]=='e')
a[l-1]='0';
else
a[l-1]='1';
}
else
{
if(a[l-1]=='e')
a[l-1]='1';
else
a[l-1]='0';
}
printf("%s\n",a);
}
return0;
}
6、题目描述:
国王有一个魔镜,可以把任何接触镜面的东西变成原来的两倍——只是,因为是镜子嘛,增加的那部分是反的。
比如一条项链,我们用AB来表示,不同的字母表示不同颜色的珍珠。
如果把B端接触镜面的话,魔镜会把这条项链变为ABBA。
如果再用一端接触的话,则会变成ABBAABBA(假定国王只用项链的某一端接触魔镜)。
给定最终的项链,请编写程序输出国王没使用魔镜之前,最初的项链可能的最小长度。
样例输入
AABBBBAAAABBBBAA
样例输出
4
#include
#include
int main(){
char s[105];
scanf("%s",s);
int l=strlen(s);
while(l!
=1){
int ok=1;
for(int i=0;iif(s[i]!
=s[l-1-i]) {
ok=0;
break;
}
}
if(ok) l=l/2;
if(!
ok) break;
}
printf("%d",l);
}
7、题目描述
现请你输出指定大小的“ACM”字符串。
特别地,我们要求输出的字符串是正方形的(行数和列数相等)。
输入
输入的第一行是一个正整数N(N<=20),表示一共有N组数据,接着是N行数据,每行包含一个正整数M(M<=50),表示一行内有M个“ACM”相连。
输出
输出指定的正方形字符串。
样例输入
2
1
2
样例输出
ACM
ACM
ACM
ACMACM
ACMACM
ACMACM
ACMACM
ACMACM
ACMACM
提示
来源
#include
intmain()
{
intn,m,i,t;
scanf("%d",&n);
while(n--)
{
scanf("%d",&m);
t=m;
for(i=0;i {
while(m--)
printf("ACM");
printf("\n");
m=t;
}
}
return0;
}
8、题目描述
一个二进制数,将其每一位取反,称之为这个数的反码。
下面我们定义一个字符的反码。
如果这是一个小写字符,则它和字符'a’的距离与它的反码和字符'z’的距离相同;如果是一个大写字符,则它和字符'A’的距离与它的反码和字符'Z’的距离相同;如果不是上面两种情况,它的反码就是它自身。
举几个例子,'a’的反码是'z’;'c’的反码是'x’;'W’的反码是'D’;'1’的反码还是'1’;'$'的反码还是'$'。
一个字符串的反码定义为其所有字符的反码。
我们的任务就是计算出给定字符串的反码。
输入
输入每行都是一个字符串,字符串长度不超过80个字符。
如果输入只有!
,表示输入结束,不需要处理。
输出
对于输入的每个字符串,输出其反码,每个数据占一行。
样例输入
Hello
JLU-CCST-2011
!
样例输出
Svool
QOF-XXHG-2011
#include
#include
char*StringInverted(char*str){
inti=0;
while(str[i]){
if('a'<=str[i]&&str[i]<='z'){
str[i]='z'-str[i]+'a';
}elseif('A'<=str[i]&&str[i]<='Z'){
str[i]='Z'-str[i]+'A';
}
i++;
}
returnstr;
}
intmain(){
charstr[100];
while(gets(str),strcmp(str,"!
")){
puts(StringInverted(str));
}
return0;
}