资源描述
1.编写程序,输入两个字符串,并将其中较小的字符串连接到的的字符串后面。(用2种方法实现,一种用strcmp、strlen、strcat等库函数,另一种不用)
例如:输入str1=”aaaaaa”;str2=”bbbbbb”,执行后str1=” bbbbbbaaaaaa”
或输入str1=”ccc”;str2=”bbbbbb”,执行后str1=” cccaaaaaa”
程序1:
#include<stdio.h>
#include<string.h>
main()
{
char str1[25],str2[25];
int n;
gets(str1);gets(str2);
n=strcmp(str1,str2);
if(n>0)
{
strcat(str1,str2);
puts(str1);
}
else
{
strcat(str2,str1);
puts(str2);
}
}
程序2:(有点问题!!!)
#include<stdio.h>
main()
{
char str1[25],str2[25];
int i,j,k,n,m=0,x=0;
gets(str1);gets(str2);
for(i=0;i<25;i++)
{
if(str1[i]>str2[i])
n=1;break;
else if(str1[i]<str2[i])
n=2;break;
else
continue;
}
if(n=1)
{
for(i=0;k=(getchar(str1))!='\0';i++)
m++;
for(i=m;i<25;i++)
{
str1[i]=str2[x];
x++;
}
puts(str1);
}
else if(n=2)
{
for(i=0;k=(getchar(str2))!='\0';i++)
m++;
for(i=m;i<25;i++)
{
str2[i]=str1[x];
x++;
}
puts(str2);
}
}
结果:
2.输入一个完全由数字组成的字符串,从字符串的第1个字符起,每2个数字字符转换成两位整数,存放在一维整形数组中,如果最后只剩一个数字,则将该字符作为一个整数存放在数组中,例如:输入”123456789”,则数组中一次存放整数12、34、56、78、9。
程序:
#include<stdio.h>
#include<string.h>
main()
{
char a[25];
int b[25],i,j=0,n;
gets(a);
n=strlen(a);
if(n%2==0)
for(i=0;i<n;i+=2)
{
b[j]=(int)(a[i]-'0')*10+(int)(a[i+1]-'0');
j++;
}
else
for(i=0;i<n-1;i+=2)
{
b[j]=(int)(a[i]-'0')*10+(int)(a[i+1]-'0');
j++;
}
b[j]=(int)(a[n-1]-'0');
for(j=0;j<((n+1)/2);j++)
printf("%6d",b[j]);
printf("\n");
}
结果:
3.假设5个字符串已经存放在一个二维字符数组中,每行为一个字符串,按从小到大的顺序给这5个字符串排序。
char str[5][15]={“cccc”ddd,”aa”,”e”,”bbbbb”};
/*提示1:每个字符串可用str[0],str[1],str[2]等表示*/
/*提示2:在原有现成排序算法上修改*/
程序:
#include<stdio.h>
#include<string.h>
main()
{
char str[5][15]={"cccc","ddd","aa","e","bbbbb"},a[1][25];
int i,j,k;
for(i=0;i<4;i++)
{
k=i;
for(j=i+1;j<5;j++)
if(strcmp(str[k],str[j])>0) k=j;
if(k!=i)
{
strcpy(a[0],str[k]);
strcpy(str[k],str[i]);
strcpy(str[i],a[0]);
}
}
for(i=0;i<5;i++)
printf("%s\n",str[i]);
}
结果:
展开阅读全文