猿问

请各位大神帮我检查void print()这个函数中的循环体错在什么地方?

#include <stdio.h>
#include <string.h>

char name[10][20];//职工姓名
char num[10][20];//职工编号
char number[10]={0,1,2,3,4,5,6,7,8,9};//职工输出序号


void input()//输入职工姓名和职工号。
{
	int i;
	printf("\n\n\t请输入职工的姓名和职工号:\n");
	
	for(i=0;i<10;i++)
	{
		gets(name[i]);
		gets(num[i]);
	}
}


void print()//排序后进行输出
{
	int i,j;
	char t[20];
	
	//排序
	for(i=0;i<9;i++)
	{
		for(j=0;j<9-i;j++)
		{
			if(strcmp(num[j],num[j+1])>0)
			{
				printf("\ni=%d   ,j=%d",i,j);
				//排序职工号
				strcpy(t,num[j]);
				strcpy(num[j],num[j+1]);
				strcpy(num[j+1],t);
				
				//排序职工号对应的序号
				strcpy(t,number[j]);
				strcpy(number[j],number[j+1]);
				strcpy(number[j+1],t);
				
			}
		}
	}
	
	//排序后输出
	for(i=0;i<10;i++)
	{
		printf("\n\t%s\t%s",name[number[i]],num[i]);
	}
		
}


void scan()//折半法查找
{
	
	
}


void main()
{
	input();
	print();
	scan();
	
	system("pause");
}


乔巴之无所不能
浏览 1925回答 3
3回答

乔巴之无所不能

找到错误的地方了,在进行定义字符时,char number[10]={0,1,2,3,4,5,6,7,8,9};//职工输出序号这里和后面不匹配。因为strcpy是进行的字符串复制,复制时,需要复制"\0",如果按照上面的定义,number[10]是表示10个字符,不能表示字符串,所以出现了错误。c语言学习路漫漫!

哲也1024

为啥循环体里面要做两次一模一样的操作,原谅我不懂php

进击的小喵呜

建议你先记录下i的值 然后以非循环变量的方法 参与内层循环
随时随地看视频慕课网APP
我要回答