为什么会这样?
有两个问题要请教一下各位大虾:1.这是一个寻找最长字符串的程序
#include <stdio.h>
#include <string.h>
#define N 5
#define M 81
char *fun(char (*sq)[N])
{int i;
char *sp;
sp=sq[0];
for(i=0;i<N;i++)
if(strlen(sp)<strlen(sq[i]))
sp=sq[i];
return sp;
}
main()
{char str[N][M],*longest; int i;
printf("enter %d lines\n",N);
for(i=0;i<N;i++) gets(str[i]);
printf("\nThe N string :\n",N);
for(i=0;i<N;i++) puts(str[i]);
longest=fun(str);
printf("\nThe longest string:\n"); puts(longest);
}
但无论怎样,结果都是第一个输入的字符串。
2.这是一个统计元音字母个数的程序
#include <conio.h>
#include <stdio.h>
void fun(char *s,int num[5])
{int k,i=5;
for(k=0;k<i;k++)
num[i]=0;
for(;*s;s++)
{i=-1;
switch(*s)
{case 'a':case 'A':{i=0;break;}
case 'e':case 'E':{i=1;break;}
case 'i':case 'I':{i=2;break;}
case 'o':case 'O':{i=3;break;}
case 'u':case 'U':{i=4;break;}
}
if(i>=0)
num[i]++;
}
}
main()
{char s1[81]; int num1[5],i;
clrscr();
printf("\nPlease enter a string:"); gets(s1);
fun(s1,num1);
for(i=0;i<5;i++) printf("%d ",num1[i]);printf("\n");
}
最后结果却是一串很长的数字
----------------解决方案--------------------------------------------------------
第一个这样就对了
你比较下就知道为什么错了
#include <stdio.h>
#include <string.h>
#define N 5
#define M 81
char *fun(char (*sq)[N])
{int i;
char *sp;
sp=sq[0];
for(i=0;i<N;i++)
if(strlen(sp)<strlen(sq[i]))
sp=sq[i];
return sp;
}
main()
{char str[N][M],*longest; int i;
printf("enter %d lines\n",N);
for(i=0;i<N;i++) gets(str[i]);
printf("\nThe N string :\n",N);
for(i=0;i<N;i++) puts(str[i]);
longest=fun(str);
printf("\nThe longest string:\n"); puts(*longest);
getch();
}
----------------解决方案--------------------------------------------------------
2. void fun(char *s,int num[5]) { int k,i=5; for(;*s;s++) { i=-1; switch(*s) { case 'a':case 'A':{i=0;break;} case 'e':case 'E':{i=1;break;} case 'i':case 'I':{i=2;break;} case 'o':case 'O':{i=3;break;} case 'u':case 'U':{i=4;break;} } if(i>=0) num[i]++; } for(i=0;i<5;i++) printf("%d ",num[i]); printf("\n"); }
main() { char s1[81]; int num1[5],i; printf("\nPlease enter a string:"); gets(s1); for(i=0;i<5;i++) num1[i]=0; fun(s1,num1); getch(); }
----------------解决方案--------------------------------------------------------
第一个程序中fun函数里面的形参应该是这样吧,char *fun(char (*sq)[M]),里面是M吧.
----------------解决方案--------------------------------------------------------
1.不要忘了加 getch();
----------------解决方案--------------------------------------------------------