c语言:在主函数中输入10个等长的字符串。用另一个函数对它们排序。然后再主函数中输出。求高人指点!!
#include<stdio.h>
#include<string.h>
void fun(char a[])
{
int i,j,t;
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
{
if(strcmp(a[i]>a[i+1])>0)
{ t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
}
main()
{
int i;
char a[10];
for(i=0;i<10;i++)
scanf("%c",a[i]);
fun(a);
for(i=0;i<10;i++)
puts(a);
}
这个程序出现以下错与提示:
1 error(s), 2 warning(s)
error C2198: 'strcmp' : too few actual parameters
warning C4047: 'function' : 'const char *' differs in levels of indirection from 'int '
warning C4024: 'strcmp' : different types for formal and actual parameter 1
补充:已经知道答案了!!#include<stdio.h>
#include<string.h>
void fun(char a[][20])
{
int i,j;
char t[20];
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
{
if(strcmp(a[i],a[i+1])>0)
{ strcpy(t,a[i]);
strcpy(a[i],a[i+1]);
strcpy(a[i+1],t);
}
}
}
main()
{
int i;
char a[10][20];
for(i=0;i<10;i++)
scanf("%s",a[i]);
fun(a);
for(i=0;i<10;i++)
puts(a[i]);
}
追问:我改了,但是提示的问题更多???什么情况??我都改好了,但是在运行时我还没输入完,它就弹出程序停止运行的提示?这又是怎么回事你知道么?题目就是要比较字符串啊??
答案:if(strcmp(a[i]>a[i+1])>0)
这个地方错了,应为if(strcmp(a[i],a[i+1])>0)
strcmp是比较两个字符串的大小,各式为strcmp(ch1,ch2)
其他:用c语言编写:1、编写函数求两个数的较大值,并在主函数中调用它 2、对10个整数进行排序(升序) 1、 int max(int a,int b) { return a 你输入的是十个字符吧,strcmp(a[i]>a[i+1])>0不用strcmp,那是比较字符串的,字符直接比就行,不用那个strcmp
上一个:一道关于function的C语言题目
下一个:我是学C语言的新手我想知道C语言这两种写法有什么区别?