c语言新手问题~

时间:2014.08.17 发布人:wow8.村长

c语言新手问题~

已解决问题

谷歌wow8.村长用户在2014.08.17提交了关于“周鸿tc语言新手问题~”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2024-11-06T11:14:31。#include<stdio.h>
main()
{
inta[5][3];
charb[5][10];
inti,j,t,k;
charc[10];

for(i=0;i<5;i++)
{
printf("inputthename\n");
gets(b[i]);
printf("inputhis\\hergardes(chinese,maths,english)\n");
for(j=0;j<3;j++)
{
scanf("%d",&a[i][j]);
}
getchar();
}

for(i=5;i>0;i--)
{
for(j=0;j<i;j++)
{
if((a[j][0]+a[j][1]+a[j][2])>(a[j+1][0]+a[j+1][1]+a[j+1][2]))
{
for(k=0;k<3;k++)
{
t=a[j][k];
a[j][k]=a[j+1][k];
a[j+1][k]=t;
}
strcpy(c,b[j]);
strcpy(b[j],b[j+1]);
strcpy(b[j+1],c);
}
}
}
for(i=0;i<5;i++)
{
printf("%s'sdegreesis",b[i]);
for(j=0;j<3;j++)
{
printf("%d",a[i][j]);
}
printf("\n");
}
getch();
}
为什么我输入后经过排序再输出会变成很怪的数字啊?那个排序函数应该没有什么问题。就是我试验过直接定义a和b的值可以正常输出。而且那个输入函数也没有什么问题。我把输出函数直接接在输入函数之后可以正常输出。。
看来是2个函数连接的时候出了问题。但是我实在看不出问题在哪里望高人指点下哈~~希望大家能够帮助她。

详细问题描述及疑问:#include<stdio.h>
main()
{
inta[5][3];
charb[5][10];
inti,j,t,k;
charc[10];

for(i=0;i<5;i++)
{
printf("inputthename\n");
gets(b[i]);
printf("inputhis\\hergardes(chinese,maths,english)\n");
for(j=0;j<3;j++)
{
scanf("%d",&a[i][j]);
}
getchar();
}

for(i=5;i>0;i--)
{
for(j=0;j<i;j++)
{
if((a[j][0]+a[j][1]+a[j][2])>(a[j+1][0]+a[j+1][1]+a[j+1][2]))
{
for(k=0;k<3;k++)
{
t=a[j][k];
a[j][k]=a[j+1][k];
a[j+1][k]=t;
}
strcpy(c,b[j]);
strcpy(b[j],b[j+1]);
strcpy(b[j+1],c);
}
}
}
for(i=0;i<5;i++)
{
printf("%s'sdegreesis",b[i]);
for(j=0;j<3;j++)
{
printf("%d",a[i][j]);
}
printf("\n");
}
getch();
}
为什么我输入后经过排序再输出会变成很怪的数字啊?那个排序函数应该没有什么问题。就是我试验过直接定义a和b的值可以正常输出。而且那个输入函数也没有什么问题。我把输出函数直接接在输入函数之后可以正常输出。。
看来是2个函数连接的时候出了问题。但是我实在看不出问题在哪里望高人指点下哈~~期待您的答案,你是我的宝贝,你是我的花,谢谢你对我的帮助!

希望以下的回答,能够帮助你。

第1个回答

用户名:dddfg来自jgh  

程序算法有一肉肥侵香掌和个问题:

冒泡排序时:
f问答or(i=5;i>0;i--)
应改为
for(i=4;i>0督耐李究图总扬即;i--)

出现“很怪”的数字的原因是在j=4时,j+1就越界了,所以得到奇怪的数值,而此时如果进行交换,就把错误的数值换到了数组a中。

还有,程序应该包含头文件
string.h
conio.h//仅限windows系统,如果是其它的系答既够义古项当风统,请不要使用getch()函数。