中国石油大学华东C语言在线测评答案 第10章字符串级亲测正确文档格式.docx
《中国石油大学华东C语言在线测评答案 第10章字符串级亲测正确文档格式.docx》由会员分享,可在线阅读,更多相关《中国石油大学华东C语言在线测评答案 第10章字符串级亲测正确文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
gets(b);
strcat(a,b);
k=strlen(a);
/*冒泡法排序*/
for(i=1;
i++)/*不能用字符串数组最后一项'
\0'
和前面项比较,故i从1开始*/
for(j=0;
j<
k-i;
j++)
if(a[j]>
a[j+1])
{t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
puts(a);
return0;
10.3删除重复字符
背景:
输入一个长度不超过100的字符串,删除串中的重复字符。
输入要检查的字符串,长度不超过100个字符。
例如:
abacaeedabcdcd。
删除重复字符后的字符串。
abced。
chara[100],b[100];
for(j=i+1;
j++)
if(a[j]==a[i])a[j]='
;
if(a[i]!
printf("
%c"
a[i]);
\n"
10.4删除字符串中指定字符
输入两个字符串s1和s2,在s1中删除任何s2中有的字符。
两个字符串s1和s2输出:
删除后的字符串s1
chars1[20],s2[20];
intk1,k2,i,j;
gets(s1);
gets(s2);
k1=strlen(s1);
k2=strlen(s2);
k2;
for(i=0;
k1;
if(s1[i]==s2[j])s1[i]='
j=0;
if(s1[i]!
{s1[j]=s1[i];
j++;
s1[j]='
puts(s1);
10.5单词有多少
用空格或换行分开的字符串称为单词。
输入多行字符串,直到遇到了单词"
stop"
时才停止。
最后输出单词的数量。
用于分割单词的空格或换行可能多于1个。
多个字符串输出:
单词的数量
chars[20];
inti,n=0;
{scanf("
%s"
s);
/*scanf遇空格或换行则存入下一个s[20]*/
n++;
/*不能gets(s),它对换行空格没反应,都存入同一s[],无法strcmp*/
if(strcmp(s,"
)==0)break;
n-1);
10.6在指定位置插入字符串
输入两个字符串s1、s2和s1中任意字符k,在s1中的指定字符k第一次出现的位置处插入字符串s2并输出。
两个字符串s1、s2和s1中任意字符k
插入后的字符串s1
chars1[50],s2[50],s3[50],k;
inti,j,a,b,n=-1;
a=strlen(s1);
b=strlen(s2);
scanf("
&
k);
a;
{n++;
if(s1[i]==k)break;
n;
s3[i]=s1[i];
for(i=n;
n+b;
s3[i]=s2[i-n];
for(i=n+b;
a+b;
s3[i]=s1[i-b];
s3[i]='
puts(s3);
10.7YourRideIsHere
Itisawell-knownfactthatbehindeverygoodcometisaUFO.TheseUFOsoftencometocollectloyalsupportersfromhereonEarth.Unfortunately,theyonlyhaveroomtopickuponegroupoffollowersoneachtrip.Theydo,however,letthegroupsknowaheadoftimewhichwillbepickedupforeachcometbyacleverscheme:
theypickanameforthecometwhich,alongwiththenameofthegroup,canbeusedtodetermineifitisaparticulargroup'
sturntogo(whodoyouthinknamesthecomets?
).Thedetailsofthematchingschemearegivenbelow;
yourjobistowriteaprogramwhichtakesthenamesofagroupandacometandthendetermineswhetherthegroupshouldgowiththeUFObehindthatcomet.
Boththenameofthegroupandthenameofthecometareconvertedintoanumberinthefollowingmanner:
thefinalnumberisjusttheproductofallthelettersinthename,where"
A"
is1and"
Z"
is26.Forinstance,thegroup"
USACO"
wouldbe21*19*1*3*15=17955.Ifthegroup'
snumbermod47isthesameasthecomet'
snumbermod47,thenyouneedtotellthegrouptogetready!
(Rememberthat"
amodb"
istheremainderleftoverafterdividingabyb;
34mod10is4.)
Writeaprogramwhichreadsinthenameofthecometandthenameofthegroupandfiguresoutwhetheraccordingtotheaboveschemethenamesareamatch,printing"
GO"
iftheymatchand"
STAY"
ifnot.Thenamesofthegroupsandthecometswillbeastringofcapitalletterswithnospacesorpunctuation,upto6characterslong.
INPUTFORMAT
Line1:
Anuppercasecharacterstringoflength1..6thatisthenameofthecomet.
Line2:
Anuppercasecharacterstringoflength1..6thatisthenameofthegroup.
COMETQ
HVNGAT
OUTPUTFORMAT
Asinglelinecontainingeithertheword"
ortheword"
.
voidmain()
chara[7],b[7];
inti,pa=1,pb=1;
i=0;
while(a[i]!
{
pa=pa*(a[i]-'
A'
+1)%47;
i++;
i=0;
while(b[i]!
pb=pb*(b[i]-'
if(pa==pb)printf("
GO\n"
else
STAY\n"
10.8大数相加
问题描述:
编写C程序,它能以字符串形式读入两个无符号正整数m和n,计算并输出这两个整数之和
输入格式:
输入由两行组成,第一行为无符号整数m,第二行为无符号整数n,且m和n的值最长25位
输出格式:
输出为一行,即两个无符号整数m和n之和
chara[5001],b[5001];
ints1[5001],s2[5001],k,n=0;
intans[5001];
intc,alen,blen,i,maxlen,minlen;
%s%s"
a,&
b);
alen=strlen(a);
blen=strlen(b);
maxlen=alen>
blen?
alen:
blen;
memset(s1,0,sizeof(s1));
memset(s2,0,sizeof(s2));
for(i=alen-1;
i>
=0;
i--)
s1[alen-i]=a[i]-'
for(i=blen-1;
s2[blen-i]=b[i]-'
memset(ans,0,sizeof(ans));
=maxlen;
ans[i]+=s1[i]+s2[i];
if(ans[i]>
9)
if(i==maxlen)
maxlen++;
ans[i+1]++;
ans[i]-=10;
for(i=maxlen;
=1;
%d"
ans[i]);
if(k!
=c)
10.9字符串重排列
判断一个字符串是否可以由另一个字符串通过重排字符而得到。
注意,此处区分字符大小写!
输入输入只有一行,为两个字符串,字符串之间以一个空格分隔。
输出
如果两个字符串由同一组字符组成(且每一个字符出现次数相同),则输出“YES”;
否则输出“NO”。
注意YES和NO都是大写字母!
#include<
chara[1000],b[1000];
inti,j,k,m=0;
scanf("
a,b);
a[i]!
{k=0;
b[j]!
if(a[i]==b[j])
{
b[j]='
?
'
k++;
m++;
break;
}
if(k==0)break;
if(k==0)printf("
NO\n"
elseprintf("
YES\n"
10.10上课啦!
要点名啊!
小凡的老师每次上课前都要点名,但是这样就浪费了老师的上课时间。
所以老师让小凡来完成点名,让小凡在早自习的时候就点好名。
老师给了小凡名单,小凡只要照着名单点名就好了是不是很简单啊。
输入
输入有多组数据,直到文件结束。
每组测试数据有三行,第一行为两个整数m,n(50>
=m>
=n)。
第二行有m个名字,名字之间用空格隔开,是小凡班上同学的名单。
后面有n个名字是来上课的同学。
名字间用空格隔开。
名字的长度不超过20个字符。
按照第一行的名单,每个人对应输出是否到了。
到的人输出Yes,没到的人输出No。
intmain()
{
inti,j,m,n,p;
chara[5][50],b[5][50];
%d%d"
m,&
n);
m;
i++)
b[i]);
for(i=0;
{
p=strcmp(a[i],b[j]);
if(p==0)
break;
}
if(j==n)
10.11找第一个只出现一次的字符
给定t个字符串,这个字符串只可能由26个小写字母组成,请你找到第一个仅出现一次的字符,如果没有符合要求的字符,就输出no。
第一行是t,接下来是t个字符串,每个字符串长度小于100
你的输出需要由t行组成。
对于每个字符串,输出第一个仅出现一次的字符,没有输出NO。
inti,j,n,t,m,b[200]={0};
chara[1000][1000];
t);
t;
scanf("
m=strlen(a[i]);
for(j=0;
a[i][j]!
for(n=0;
a[i][n]!
n++)
{
if(a[i][j]==a[i][n])
{
b[j]++;
}
}
if(b[j]==1)
{
printf("
%c\n"
a[i][j]);
break;
}
if(j==m)
printf("
b[j]=0;
10.12提取数据
输入一个字符串,长度不超过30,内有数字字符和非数字字符,统计其中包含了多少个非负整数,并输出这样的非负整数。
一个字符串,最大长度为30
输出字符串中包含的数据,一个数据一行.(不用输出总数)
inti,sum=0;
chara[30];
if(a[i]>
a[i]<
sum=sum*10+(a[i]-'
if((a[i]>
)&
(a[i+1]<
||a[i+1]>
))
sum);
sum=0;
10.13判断字符串是否为回文
编程,输入一个字符串,输出该字符串是否回文。
输入为一行字符串(字符串中没有空白字符,字符串长度不超过100)。
如果字符串是回文,输出yes;
否则,输出no。
inti,j,t,p=0;
chara[100];
t=strlen(a);
j=t-1;
=(t/2-1);
=a[j])
{
p=1;
elsej--;
if(p==1)
no\n"
yes\n"
10.14首字母大写
对一个字符串中的所有单词,如果单词的首字母不是大写字母,则把单词的首字母变成大写字母。
在字符串中,单词之间通过空白符分隔,空白符包括:
空格('
'
)、制表符('
\t'
)、回车符('
\r'
)、换行符('
\n'
)。
输入一行:
待处理的字符串(长度小于80)。
输出一行:
转换后的字符串。
inti;
if(a[0]>
=97&
a[0]<
=122)
a[0]=a[0]-32;
if(a[i]=='
a[i+1]>
a[i+1]<
a[i+1]=a[i+1]-32;
10.15绕口令
规则是:
主持人给出一串字符串,要求把这串字母简化。
该串字符串全部为小写英文字母。
比如:
aaabbbaa,则简化为3a3b2a;
zzzzeeeeea,则简化为4z5e1a。
依次类推。
Input
第一行为一个整数n,表示共有n组测试数据(1<
=n<
=100)。
每组测试数据有一行,该行第一个数为字符串长度t(t<
=1,000,000),然后为一行长度为t的字符串。
Output
对于每组输入数据输出一行,即简化后的字符串。
inti,n,t,l,j,k=0,count;
chara[100][100];
scanf("
l=strlen(a[i]);
for(j=0;
l;
j+=count)
count=1;
for(k=j+1;
a[k]!
k++)
if(a[i][j]==a[i][k])count++;
if(a[i][k]!
=a[i][j])break;
printf("
%d%c"
count,a[i][j]);
10.16删除指定字符
编写函数fun,其功能是:
从字符串中删除指定的字符。
同一字母的大、小写按照不同的字符处理。
只需要提交fun函数
/*PRESETCODEBEGIN-NEVERTOUCHCODEBELOW*/
/*PRESETCODEEND-NEVERTOUCHCODEABOVE*/
voidfun(charstr[100],charch)
inti,count=0;
str[i]!
if(str[i]==ch)
str[i]='
if(str[i]!
)
str[count++]=str[i];
str[count]='
charstr[80];
charch;
gets(str);
ch);
fun(str,ch);
%s\n"
str);
10.17处理字符串
将数组s存放的字符串中的所有数字字符移到所有