C语言程序设计题

1、编写一个程序,输入四个字符串,使用指针数组用冒泡法将它们从小到大排列后输出。2、编写一个程序,输入若干个字符串,找出其中最长的字符串并输出。要求采用指针数组存放这些字... 1、编写一个程序,输入四个字符串,使用指针数组用冒泡法将它们从小到大排列后输出。

2、编写一个程序,输入若干个字符串,找出其中最长的字符串并输出。要求采用指针数组存放这些字符串。

我对指针数组不熟练,请高手编写程序,我参考一下,谢谢!
展开
 我来答
靓丽还清湛的标兵5177
2012-01-06 · TA获得超过1649个赞
知道小有建树答主
回答量:1032
采纳率:100%
帮助的人:975万
展开全部
//程序1
#include <stdio.h>
void main()
{
char *p[4],*ptmp,buf[256]={0};
unsigned int n,m,size;
printf("以回车为结束标记,依次输入四个字符串\n");
for(n=0;n<4;n++)
{
printf("请输入第%d个:",n+1);
gets(buf);
size=strlen(buf);
p[n]=(char*)malloc(size+1);
strcpy(p[n],buf);
}
printf("输入结束,现在开始排序:\n");
for(n=0;n<4-1;n++)for(m=0;m<4-n-1;m++)//简单冒泡法
if(strcmp(p[m],p[m+1])>0){ptmp=p[m];p[m]=p[m+1];p[m+1]=ptmp;}
//只动了指针的指向,不改变内存中中的位置
printf("排序后的次序是:\n");
for(n=0;n<4;n++)printf("%s\n",p[n]);
}

//程序2
#include <stdio.h>
void main()
{
char buf[1024] = {0};
char *pmax=NULL, *pmin=NULL, *ptmp;
//数组无法满足保存任意行的需求
//而事实上你只要最长(或最短)的串
//又中间的无需保存,所以只要两个指针保存内容就够,不需要指针数组
unsigned int n=0,nmax,nmin,size;

printf("输入若干行字符串,以回车结束每一行,空行表示全部输入结束\n");
begin:
printf("请输入第%d个串:\n",n+1);
gets(buf);//记得DOS下TC2中这个函数会把换行符也读进来放在串尾的,现在怎么都改掉了
if(!*buf||*buf=='\n') goto begin;
size=strlen(buf);
pmax = (char*)malloc(size+1);strcpy(pmax,buf);nmax=size;
pmin = (char*)malloc(size+1);strcpy(pmin,buf);nmin=size;
n++;

while(1)
{
printf("请输入第%d个串:\n",n+1);
gets(buf);
if(!*buf||*buf=='\n')break;
size=strlen(buf);
if(size>nmax)
{
free(pmax);//串越来越长,上次的长度不够,需释放了重新分配
pmax=(char*)malloc(size+1);
strcpy(pmax,buf);
nmax=size;
}
else if(size<nmin)
{
strcpy(pmin,buf);//旧串空间够,直接copy
nmin=size;
}
n++;
}
printf("\n最长在串是:\n%s\n最短的串是:\n%s",pmax,pmin);
free(pmax);
free(pmin);
}
//VC7下两个例子程序都可以正常编译运行
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
想当诸侯的小蚂蚁
2012-01-06 · TA获得超过344个赞
知道小有建树答主
回答量:267
采纳率:0%
帮助的人:141万
展开全部
这个
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式