问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

这个C语言有什么问题!比较4个数组的大小。

发布网友 发布时间:2023-08-04 23:21

我来回答

4个回答

热心网友 时间:2023-11-11 08:56

如果没看错的话,你写的代码是把二维数组每行元素按从小到大排列,而行与行之间不会进行比较,如果这是你的想法,我帮你把代码改下:

第四行笔误:for(j=0;j<3;j++)改成for(j=0;j<3;j++)。

第五行for(k=0;k<12;k++0 应是多余的吧,后面没用到k。

循环语句{for(i=0;i<3;i++)
for(j=0;j<4;j++)
{if(j<3)
{if(a[i][j]>a[i][j+1])

if(j==3)
{if(a[i][3]>a[i+1][0])

}
并不能起到将一行中的元素从大到小排列,若某行为6,5,1,2四数经过比较后只会得到:5,1,2,6;注意这只可以使得最后一数为最大。
而且if(j==3)
{if(a[i][3]>a[i+1][0])

}
这行代码出现在这里也是不对的。

循环代码修改如下:int m;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{ m=0;
for(k=1;k<=3-j;k++)
if(a[i][m]<a[i][k])
{ k=m;
t=a[i][m];
a[i][m]=a[i][k];
a[i][k]=t;
}
}

这样可完成上面对每行的元素从下到大排列的目的,而行与行之间不互相比较排列。

可能你是想把全部元素从小到大排列,可利用指针来排列:
#include<stdio.h>
int main()
{
int a[3][4],*p=a[0],i,j,k,temp;
printf("please input twelve integr:")
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
for(i=1;i<12;i++) \*用冒泡法排序,每次选出最大的放到最后*\
{ k=0;
for(j=1;j<=12-i;j++)
if(*p[k]>*p[j])
{ k=j;
temp=*p[k];
*p[k]=*p[j];
*p[j]=*p[k];
}
}
printf("\n");
for(i=0;i<3;i++)
for(j=0;j<4;j++)
printf(" %d ",a[i][j]);
}

热心网友 时间:2023-11-11 08:56

类似这些的有问题
strcpy(temp,str[0]); //注意 不是temp[20]
strcpy(str[0],str[i]);
strcpy(str[i],temp );//分清temp[20]

其他的就没错了,不过程序可以优化,每个for可以和在一起,用一个双层循环即可

热心网友 时间:2023-11-11 08:57

strcpy函数原型:int strcpy(char *,char *);
所以2个形参都是指针,你这边用temp[20]的话传递的就直接是char型变量了,应该传递temp这个数组的首地址,也就是temp才对

热心网友 时间:2023-11-11 08:58

除了temp的声明之外,其它用到的地方都用temp。修改如下,希望能采纳…
#include <stdio.h>
#include <string.h>
int main()
{
int i;
char str[4][20];
char temp[20];
for (i=0;i<=3;i++)
{
gets(str[i]);
}
for (i=1;i<=3;i++)
{
if(strcmp(str[0],str[i])>0)
{
strcpy(temp,str[0]);
strcpy(str[0],str[i]);
strcpy(str[i],temp);
}
}
for (i=2;i<=3;i++)
{
if(strcmp(str[1],str[i])>0)
{
strcpy(temp,str[1]);
strcpy(str[1],str[i]);
strcpy(str[i],temp);
}
}
if(strcmp(str[2],str[3])>0)
{
strcpy(temp,str[2]);
strcpy(str[2],str[3]);
strcpy(str[3],temp);
}
return 0;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
光猫的注册灯一直闪没有网是怎么回事 ...PSP3000播放不起MP4格式的视频 我是6.60系统,PPA也放不起。还有就... AVC无法播放 PSP的电影,我放在相应的文件夹里,播放器也有.怎么还不行? psp ppa 无法播放 S1铁路啥意思 农历八月十五出生男孩名字 T-46轻型坦克参数资料(取自坦克世界) 美丽加芬有卸妆液吗 为什么股票涨跌很快 c语言数组中各个数大小比较除了冒泡法还有别的吗?最好说个例子?谢谢... 用c语言数组比较三个数的大小? 坐在这伤心的酒吧是什么歌 航母是不是很容易被人攻击的,人家导弹打过来怎么办啊... 航母护卫舰是如何保护这么一个大家伙的??? 航母考虑用什么办法预警 航母有自我保护能力吗 一位革命后代的访谈录。 梦见上山采蘑菇是什么意思 办理护照,户口迁出过,然后出入境需要发函至原地等待确认? 迁移户口后办护照需要发函原户籍吗 办理护照发回户口原籍审核的问题 excel 当中(见截图)C、D、E、F、G五个数之和的公式是怎么样的? ...一个合并的列数字乘以不同的数,怎么在后面得到结果.如图E*F=G 在工作表中我想求E×F=G怎么算,函数应该怎么设置? 在无锡淘宝为什么显示地址是宿迁 为什么淘宝网卖苗木花卉的大多都是江苏宿迁 沐阳的?大部分都是骗子_百... ...目标等于a或b或c...则用公式d,目标等于e,f...则用公式g,怎么... 在工作表中我想求E×F=G怎么算,函数应该怎么设置 惠普暗影精灵2pro可以当显示屏用吗 永昌县的乡村属于金昌市域吗? 冬天白菜在地里怎么防冻 为什么string 能进行加法运算 VB 在字符串中提取的数字为什么不能进行运算 谁知道哪个网站有《宋代足球小将》全集播放? 南昌大学8121和8151分别是什么专业? 芭蕾舞和中国舞哪个更贵 中国古典舞与芭蕾舞的区别与联系,请详细一点,最好是有视频介绍的,南京... 张爱玲第一炉香中比喻句的作用 ...替硝唑片 泰尔丝 消唑丸30粒一次 还有2支药膏 白天是克 ...痒脸荚发烫请那位医生帮帮我我现在在服用维生素B6你 梦见我在破桥上 广州长隆和深圳大白鲨哪个好玩 天津医保起付标准怎么从700降到500? 荒野大镖客2线上什么动物能攻击站在石头上的人 滨州中博国际商贸城小区周边配套怎么样? 滨州渤海24路电子厂在哪 滨州市中博国际商贸城周围有什么标志建筑,做公交到那一站? 从滨州黄河大桥到渤海24路开车怎么走 滨州距离呼伦贝尔大草原多少公里