中国石油大学(华东)C语言在线测评答案 第10章字符串(2013级亲测正确)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中国石油大学(华东)C语言在线测评答案第10章字符串(2013级亲测正确)
10.1 字符转换
描述提取一个字符串中的所有数字字符(‘0’...‘9’)将其转换为一个整数输出。
输入一个以回车符为结束标志的字符串(少于80个字符)。
输出把字符串中的所有数字字符
(‘0’...‘9’)转换为一个整数并输出。
#include
#include
int main()
{
char s[80];
int i,k,n=0;
gets(s);
k=strlen(s);
for(i=0;i if(s[i]>='0'&&s[i]<='9') n=n*10+(s[i]-'0'); printf("%d\n",n); return 0; } 10.2 合并字符串 输入两个已经按从小到大顺序排列好的字符串,编写一个合并两个字符串的函数,使合并后的字符串,仍然是从小到大排列。 输入:两个已经排好顺序(升序)的字符串 输出:一个合并在一起的有序(升序)的字符串 要求:设计一个效率尽量高的算法,对每个字符串只扫描一遍就可以了。 如果采用先进行串连接,然后再进行 排序的算法,则效率太低了。 #include #include int main() { char a[100],b[100],t; int k,i,j; gets(a); gets(b); strcat(a,b); k=strlen(a); /*冒泡法排序*/ for(i=1;i if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } puts(a); return 0; } 10.3 删除重复字符 背景:输入一个长度不超过 100 的字符串,删除串中的重复字符。 输入:输入要检查的字符串,长度不超过100个字符。例如:abacaeedabcdcd。 输出:删除重复字符后的字符串。例如:abced。 #include #include int main() { char a[100],b[100]; int k,i,j; gets(a); k=strlen(a); for(i=0;i for(j=i+1;j if(a[j]==a[i]) a[j]='\0'; for(i=0;i if(a[i]!='\0') printf("%c",a[i]); printf("\n"); return 0; } 10.4 删除字符串中指定字符 输入两个字符串 s1 和 s2 ,在 s1 中删除任何s2 中有的字符。 输入:两个字符串 s1 和 s2 输出:删除后的字符串 s1 #include #include int main() { char s1[20],s2[20]; int k1,k2,i,j; gets(s1); gets(s2); k1=strlen(s1); k2=strlen(s2); for(j=0;j for(i=0;i if(s1[i]==s2[j]) s1[i]='\0'; j=0; for(i=0;i if(s1[i]!='\0') { s1[j]=s1[i]; j++; } s1[j]='\0'; puts(s1); return 0; } 10.5 单词有多少 用空格或换行分开的字符串称为单词。输入多行字符串,直到遇到了单词 "stop" 时才停止。最后输出单词的数量。用于分割单词的空格或换行可能多于1个。 输入:多个字符串输出:单词的数量 #include #include int main() { char s[20]; int i,n=0; for(i=0;;i++) { scanf("%s",s); /*scanf遇空格或换行则存入下一个 s[20]*/ n++; /*不能gets(s),它对换行空格没反应,都存入同一s[],无法strcmp*/ if(strcmp(s,"stop")==0) break; } printf("%d\n",n-1); return 0; } 10.6 在指定位置插入字符串 输入两个字符串 s1 、 s2 和 s1 中任意字符k ,在 s1 中的指定字符 k 第一次出现的位置处插入字符串 s2 并输出。 输入:两个字符串 s1 、 s2 和 s1 中任意字符 k 输出:插入后的字符串 s1 #include #include int main() { char s1[50],s2[50],s3[50],k; int i,j,a,b,n=-1; gets(s1); gets(s2); a=strlen(s1); b=strlen(s2); scanf("%c",&k);