为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C
乔巴之无所不能 2017-08-26 18:52:24
#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"); }
查看完整描述

3 回答

?
乔巴之无所不能

TA贡献4条经验 获得超1个赞

找到错误的地方了,在进行定义字符时,

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

这里和后面不匹配。因为strcpy是进行的字符串复制,复制时,需要复制"\0",

如果按照上面的定义,number[10]是表示10个字符,不能表示字符串,所以出现了错误。

c语言学习路漫漫!

查看完整回答
反对 回复 2017-08-26
?
哲也1024

TA贡献3条经验 获得超0个赞

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

查看完整回答
反对 回复 2017-08-26
?
进击的小喵呜

TA贡献7条经验 获得超3个赞

建议你先记录下i的值 然后以非循环变量的方法 参与内层循环
查看完整回答
反对 回复 2017-08-26
  • 乔巴之无所不能
    乔巴之无所不能
    我记录过,当i=0,j=8时,执行了循环中的if语句,然后,if内部的语句就不能执行了,死机。但是我检查语句时正确的,没有错啊。
  • 3 回答
  • 0 关注
  • 1924 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信