(完整版)数组作业3
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.编写程序,输入两个字符串,并将其中较小的字符串连接到的的字符串后面。(用2种方法实现,一种用strcmp、strlen、strcat等库函数,另一种不用)
例如:输入str1=”aaaaaa”;str2=”bbbbbb”,执行后str1=”bbbbbbaaaaaa”
或输入str1=”ccc”;str2=”bbbbbb”,执行后str1=”cccaaaaaa”
程序1:
#include
#include
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
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] 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 #include main() { char a[25]; int b[25],i,j=0,n; gets(a); n=strlen(a); if(n%2==0) for(i=0;i { b[j]=(int)(a[i]-'0')*10+(int)(a[i+1]-'0'); j++; } else for(i=0;i { 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(m,b[j]); printf(\ ); } 结果: 3.假设5个字符串已经存放在一个二维字符数组中,每行为一个字符串,按从小到大的顺序给这5个字符串排序。 char str[5][15]={“cccc”ddd,”aa”,”e”,”bbbbb”}; /*提示1:每个字符串可用str[0],str[1],str[2]等表示*/ /*提示2:在原有现成排序算法上修改*/ 程序: #include #include main() { char str[5][15]={cccc,ddd,aa,e,bbbb},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]); } 结果: