c语言编个小程序
定义一个二维的字符串数组,输入若干个字符串,按升序排序(看首字母)后输出。要求设计通用的排序函数,输入参数为字符串数组和要排序的字符串的个数。谢谢!#include<io...
定义一个二维的字符串数组,输入若干个字符串,按升序排序(看首字母) 后输出。要求设计通用的排序函数,输入参数为字符串数组和要排序的字符串的个数。谢谢!
#include<iostream.h>
#include<string.h>
void f(char *x[],int n)
{
int i,j;
char *p;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
{
if(strcmp(x[i],x[j])>0)
{
p=x[i];x[i]=x[j];x[j]=p;
}
}
for(i=0;i<n;i++)
cout<<x[i]<<'\t';
}
void main(void)
{
cout<<"输入若干个字符串"<<endl;
int i,n;
我就搞到这边,但不知道主函数怎么编个通用的,就是根据输入的个数来确定数组大小,并且不知道怎样把一行一行的字符串送到数组里面?
高手们帮忙弄一下
昏,c++就c++嘛,教俺写撒! 展开
#include<iostream.h>
#include<string.h>
void f(char *x[],int n)
{
int i,j;
char *p;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
{
if(strcmp(x[i],x[j])>0)
{
p=x[i];x[i]=x[j];x[j]=p;
}
}
for(i=0;i<n;i++)
cout<<x[i]<<'\t';
}
void main(void)
{
cout<<"输入若干个字符串"<<endl;
int i,n;
我就搞到这边,但不知道主函数怎么编个通用的,就是根据输入的个数来确定数组大小,并且不知道怎样把一行一行的字符串送到数组里面?
高手们帮忙弄一下
昏,c++就c++嘛,教俺写撒! 展开
展开全部
本题的一个完整c程序如下,win-tc和Dev-c++下已调试通过。其中通用排序函数为void sort()
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#include "string.h"
#define ROW 100
#define COL 80
void sort();
int main()
{
int n,i;
char s[ROW][COL+1];
printf("Please input the number of the string you want to sort(not more than %d):\n",ROW);
scanf("%d",&n);
getchar(); /*开始没加这句只能输入n-1个字符串,排错花了几十分钟,教训深刻,看来是上一句的回车键在作怪,这说明gets()函数也是从缓冲区而非控制台取出字符的*/
printf("Please input the strings one by one (not more than %d characters each):\n",COL);
for(i=0;i<n;i++)
gets(s[i]);
sort(s,n);
printf("\nNow,the sequence after sort is:\n");
for(i=0;i<n;i++)
printf("%s\n",s[i]);
getch();
return 0;
}
void sort(char str[][COL+1],int n) /* 冒泡排序 */
{
int i,j;
char temp[COL+1];
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(strcmp(str[j],str[j+1])>0)
{
strcpy(temp,str[j]);
strcpy(str[j],str[j+1]);
strcpy(str[j+1],temp);
}
}
本题利用指针数组得出的另一种解法如下:
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#include "string.h"
#define ROW 100
#define COL 80
void sort();
void print();
int main()
{
int n,i;
char s[ROW][COL+1],*p[ROW];
printf("Please input the number of the string you want to sort(not more than %d):\n",ROW);
scanf("%d",&n);
getchar();
printf("Please input the strings one by one (not more than %d characters each):\n",COL);
for(i=0;i<n;i++)
{
gets(s[i]);
p[i]=s[i];
}
sort(p,n);
printf("\nNow,the sequence after sort is:\n");
print(p,n);
getch();
return 0;
}
void sort(char *str[],int n) /* 选择排序 */
{
char *temp;
int i,j,k;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp(*(str+k),*(str+j))>0)
k=j;
if(k!=i)
{
temp=*(str+i);
*(str+i)=*(str+k);
*(str+k)=temp;
}
}
}
void print(char *str[],int n)
{
int i;
for(i=0;i<n;i++)
printf("%s\n",*(str+i));
}
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#include "string.h"
#define ROW 100
#define COL 80
void sort();
int main()
{
int n,i;
char s[ROW][COL+1];
printf("Please input the number of the string you want to sort(not more than %d):\n",ROW);
scanf("%d",&n);
getchar(); /*开始没加这句只能输入n-1个字符串,排错花了几十分钟,教训深刻,看来是上一句的回车键在作怪,这说明gets()函数也是从缓冲区而非控制台取出字符的*/
printf("Please input the strings one by one (not more than %d characters each):\n",COL);
for(i=0;i<n;i++)
gets(s[i]);
sort(s,n);
printf("\nNow,the sequence after sort is:\n");
for(i=0;i<n;i++)
printf("%s\n",s[i]);
getch();
return 0;
}
void sort(char str[][COL+1],int n) /* 冒泡排序 */
{
int i,j;
char temp[COL+1];
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(strcmp(str[j],str[j+1])>0)
{
strcpy(temp,str[j]);
strcpy(str[j],str[j+1]);
strcpy(str[j+1],temp);
}
}
本题利用指针数组得出的另一种解法如下:
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#include "string.h"
#define ROW 100
#define COL 80
void sort();
void print();
int main()
{
int n,i;
char s[ROW][COL+1],*p[ROW];
printf("Please input the number of the string you want to sort(not more than %d):\n",ROW);
scanf("%d",&n);
getchar();
printf("Please input the strings one by one (not more than %d characters each):\n",COL);
for(i=0;i<n;i++)
{
gets(s[i]);
p[i]=s[i];
}
sort(p,n);
printf("\nNow,the sequence after sort is:\n");
print(p,n);
getch();
return 0;
}
void sort(char *str[],int n) /* 选择排序 */
{
char *temp;
int i,j,k;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp(*(str+k),*(str+j))>0)
k=j;
if(k!=i)
{
temp=*(str+i);
*(str+i)=*(str+k);
*(str+k)=temp;
}
}
}
void print(char *str[],int n)
{
int i;
for(i=0;i<n;i++)
printf("%s\n",*(str+i));
}
展开全部
这个明显是C++写的 用到了C++的输入输出流的写法 还有那个iostream.h的头文件 hoho ~~~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个到底是C还是C++?
cout<<"输入若干个字符串"<<endl;
cout<<"输入若干个字符串"<<endl;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
地方官
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询