当前位置: 代码迷 >> C语言 >> [求助]在函数中遇到的问题~
  详细解决方案

[求助]在函数中遇到的问题~

热度:157   发布时间:2007-07-21 20:15:26.0
[求助]在函数中遇到的问题~
#include "string.h"
int n;
void sort(int NUM[10],char NAME[10][50]);
void main()
{
char NAME[10][50];
int i=0,d,NUM[10];
while (1)
{
//n=i;
printf("1--input\n");
printf("2--sort\n");
printf("3--seek\n");
printf("4--exit\n");
printf("Please input 1--4:");
scanf("%d",&d);
if (d==1)
{
printf("INPUT:\n");
printf("input code,name:");
scanf("%d,%s",&NUM[i],NAME[i]);
{
if (i>9)
{
for (i=0;i<=9;i++)
{
printf("limited!");
}
}
else
{
i++;
n=i;
}
}
}
if (d==2)
{
printf("SORT:\n");
sort(NUM,NAME);
}
if (d==3)
{
printf("SEEK:\n");
printf("Please input a code:");
}
if (d==4)
{
printf("EXIT.\n");
break;
}
}
}
void sort(int NUM[10],char NAME[10][50])
{
int x,y,t;
char str[10][50];
for (x=0;x<=n-1;x++)
for(y=0;y<=n-x;y++)
{
if (NUM[y]>NUM[y+1])
{
t=NUM[y];
NUM[y]=NUM[y+1];
NUM[y+1]=t;
strcpy(str[10],NAME[y]);
strcpy(NAME[y],NAME[y+1]);
strcpy(NAME[y+1],str[10]);
}
}
for(y=0;y<=n-1;y++)
{
printf("%d-->%s\n",NUM[y],NAME[y]);
}
}
以上两个函数一个是输入还有一个是排序,但是都有问题。输入是有的时候输入编号3,名字为h或者j是就陷入了死循环。排序就是前面总是出现好多烫字!!
希望达人们帮小弟解决下!!感激不尽!!
搜索更多相关的解决方案: 函数  

----------------解决方案--------------------------------------------------------
有些事要自己做了之后才会深有感触,你自己试着调试一下吧.
----------------解决方案--------------------------------------------------------

陷入死循环可能是你的程序结构没设计得好,
至于出现很多个烫字是因为你没有对数组进行初使化

下面是我修改之后的程序,你看一下,有什么问题可以继续讨论

#include <string.h>
#include <stdio.h>
#define N 10

void sort(int num[N],char name[N][50]);
void input(int num[N],char name[N][50]);
void seek(int num[N],char name[N][50]);

void main()
{
char name[N][50]={0};
int d,num[N]={0};
while (1)
{
clrscr(); /*清屏函数*/
printf("1--input\n");
printf("2--sort\n");
printf("3--seek\n");
printf("4--exit\n");
printf("****************************************\n");
printf("Please input 1--4:");
scanf("%d",&d);
switch(d)
{
case 1: input(num,name);break;
case 2:sort(num,name);break;
case 3:seek(num,name);break;
case 4:exit(0);
default:printf("error\n");
}
}
}

/*输入函数*/
void input(int num[N],char name[N][50])
{
int i;

for(i=0;i<N;i++)
{
printf("\ninput the %d code and name:",i+1);
scanf("%d,%s",&num[i],name[i]);
}
}


/*排序函数*/
void sort(int num[N],char name[N][50])
{
int x,y,t;
char str[50]; /*这个地方只要定义一维数组就行了*/

for (x=0;x<N;x++)
for(y=0;y<N-x-1;y++)
{
if (num[y]>num[y+1])
{
t=num[y];
num[y]=num[y+1];
num[y+1]=t;
strcpy(str,name[y]);
strcpy(name[y],name[y+1]);
strcpy(name[y+1],str);
}
}
for(y=0;y<=N-1;y++)
{
printf("%d-->%s\n",num[y],name[y]);
}
printf("press any key to continue.\n\n");
getchar();getchar();
}

/*查看函数*/
void seek(int num[N],char name[N][50])
{
int i;

for(i=0;i<N;i++)
{
printf("%d-->%s\n",num[i],name[i]);
}
printf("press any key to continue.\n\n");
getchar();getchar();
}


----------------解决方案--------------------------------------------------------
  相关解决方案