中国石油大学,第八 章,计算机作业
8.1 字符转换
描述
提取一个字符串中的所有数字字符(‘0’...‘9’)将其转换为一个整数输出。
输入
一个以回车符为结束标志的字符串(少于80个字符)。
输出
把字符串中的所有数字字符(‘0’...‘9’)转换为一个整数并输出。
#include
int main()
{
char str[80];
int i,m=0;
gets(str);
for(i=0; str[i]!='\0'; i++)
{
if(str[i]<='9'&&str[i]>='0')
{
m=m*10+(str[i]-48);
}
}
printf("%d\n",m);
}
8.2 合并字符串
输入两个已经按从小到大顺序排列好的字符串,编写一个合并两个字符串的函数,使合并后的字符串,仍然是从小到 大排列。
输入:
两个已经排好顺序(升序)的字符串
输出:
一个合并在一起的有序(升序)的字符串
#include
#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(j=1;j<=k;j++)
for(i=0;i
if(a[i]>=a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
puts(a);
return 0;
}
8.3 删除重复字符
背景:
输入一个长度不超过 100 的字符串,删除串中的重复字符。
输入:
输入要检查的字符串,长度不超过100个字符。例如:abacaeedabcdcd。
输出:
删除重复字符后的字符串。例如:abced。
#include
int main()
{
char a[100],b[100];
int n,i,j,cnt=1;
gets(a);
n=strlen(a);
b[0]=a[0];
for(i=1;i
{
for(j=0;j
{
if(a[i]==a[j])
break;
}
if(a[i]==a[j]&&i==j)
{
b[cnt]=a[i];
cnt++;
}
}
for(i=0;i
printf("%c",b[i]);
printf("\n");
return 0;
}
8.4 删除字符串中指定字符
输入两个字符串 s1 和 s2 ,在 s1 中删除任何 s2 中有的字符。例如, s1 :“ abc123ad ”, s2 :“ a1 ” ,则输出“bc23d ”。
输入: 两个字符串 s1 和 s2
输出: 删除后的字符串 s1
要求:
设计一个效率尽量高的算法,对每个字符串只扫描一遍就可以了。
如果采用先进行串连接,然后再进行排序的算法,则效率太低了
#include
int main()
{
char a[100],b[100],c[100];
int m,n,i,j,k=0,p,q;
gets(a);
gets(b);
n=strlen(a);
m=strlen(b);
for(i=0;i
{
for(j=0;j
{
if(b[j]==a[i]) break;
}
for(p=0;p
if(c[p]==a[i]) break;
if(j==m&&p==k)
{
c[k]=a[i];
k++;
}
}
for(i=0;i
printf("%c",c[i]);
printf("\n");
return 0;
}
8.5 单词有多