C语言代码出错,求改!内容是吧数组a,b的元素存入数组c中,元素再从小到大排列,但是只有a元素!!!

作者&投稿:资供 (若有异议请与网页底部的电邮联系)
c语言 把数组元素从小到大排列,如下代码为什么错的很离谱,求指教错在哪里,如何修改及为什么?感恩!~

修改如下:


//---------------------------------------------------------------------------
#include
int main()
{
int arr[11]={9,2,45,32,89,3,6,97,159,1,7};
int *p;
int temp;
int i,j,k;
p=arr;
for(i=0;i<10;i++) //注意这里
{
k=i;//注意这里
for(j=i+1;j<11;j++)//注意这里
if(*(p+k)>*(p+j)) k=j;//注意这里
if(k!=i)
{
temp=*(p+i);
*(p+i)=*(p+k);
*(p+k)=temp; //注意这里
}

printf("%d
",*p);


}
for(i=0;i<11;i++)
{
printf("%d
",arr[i]);
}
return 0;

}
//---------------------------------------------------------------------------

可以直接把它插到数组的最后,然后排序就行了。
#include #include#includeusing namespace std;int main(){ int num[10], i; for(i = 0; i < 10; i++) scanf("%d", &num[i]); sort(num, num + 10); for(i = 0; i < 10; i++) printf("%d%c", num[i], i == 9 ? '
' : ' '); return 0;}

#include <stdio.h>

void mySort(int *c);

void mySort(int *c)

{

int i,j,k,t;

for(i=0;i<8;i++)

{

k=i;

for(j=i+1;j<8;j++)

{

if(c[k]>c[j])/*找到最小的*/

k=j;

}

if(k!=i)

{ /*找到最小的与当前位置的值进行对换*/

t=c[i];

c[i]=c[k];

c[k]=t;

}

}

}

int main()

{

int i,*p,*q,*r,c[8],a[5]={3,16,8,20,7},b[3]={82,7,23};

p=a;q=b;r=c;

while(p<=&a[4]&&q<=&b[2])

{

if(*p<=*q) *r++=*p++;

else *r++=*q++;

}

while(p<=&a[4]) *r++=*p++;

while(q<=&b[2]) *r++=*q++;

mySort(c);/*排序*/ 

for(i=0;i<8;i++)

printf("a[%d]=%d
",i,c[i]);/*这里是合并到c数组中*/

printf("
");

return 0;

}



之所以只有a, 是因为你只输出a,
for(i=0;i<8;i++)
printf("a[%d]=%d\n",i,a[i]);
另外,你这样还不能实现排序,因为a和b里面原本都还未排序。
while(p<=&a[4]&&q<=&b[2])
{
if(*p<=*q) *r++=*p++;
else *r++=*q++;
}
这段程序 只是用a的无素与b的元素去比较,谁小就谁先放到c,但是b的第一个元素就是82了,
明显a里面的所有元素都先放到C里了,之后你又用
while(p<=&a[4]) *r++=*p++;
while(q<=&b[2]) *r++=*q++;
所以把b的元素全放到a的元素后面了。
所以,你要用你的方法排序的话,最好就先把a和b分别排序, 或者就在最后对c再进行排序
打了这么多,希望对你有帮助

你应该输出数组C的值噻,你输出的a数组,当然只有a...
最后三句改下:
for(i=0;i<8;i++)
printf("c[%d]=%d\n",i,c[i]);
printf("\n");
这样你就把a和b数组中的元素都存到C数组中了,然后你对C排序就行了噻

我运行的最后结果就是a[5]={3,16,8,20,7,82,7,23}; 排序一个循环搞不定的,还是分两步吧,先放数组c,再排序,b[0]=82,都比a中所有元素大,所以基本没排序,只是if(*p<=*q) *r++=*p++;
执行,把a的内容给c。a内部没排序。排序函数上面网友已经给出。分步骤分模块编程会比较简单,实用。 还有你这个方法不提倡,a只分配了5个元素的空间,后面用了8个元素的空间,用在程序里可能导致程序崩溃。

虽然我不会跟正你的错误,但我还是提供一下排序算法

void sort(int a[],int n)
{
int t;
for(int j=0;j<n;j++)
for(int i=0;i<n-j-1;i++)
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
int main()
{
int c[8],a[5]={3,16,8,20,7},b[3]={82,7,23};
for (int i=0;i<5;i++)
{
c[i]=a[i];
}
for (int i=0;i<3;i++)
{
c[i+5]=b[i];
}
sort(c,8);
for(int i=0;i<8;i++)
printf("c[%d]=%d\n",i,c[i]);
return 0;
}


C语言编程总提示“错误 noname.c 27: 非法字符 '? (0xa1)在 max_min...
原因可能是因为一些标点符号的格式不对(有全角和半角之分),C语言中的符号是要以半角形式输入才可以的,否则编译时就会报错,而这类错误往往不容易被察觉,因为在中文输入状态下,标点符号默认是全角的,而英文状态的默认才是半角形式,因此在对源程序进行注释时需要特别注意,以免造成不必要的错误。

perl语言程序写的代码总是出问题 到底在哪错了,求改错。。,。
从文件读出来的是 @myfile,后面使用的是@mylife 下面是我写的一个:输入文件:i love this game yestoday once more time is gone so this is what i make tidddddddy oppppppppy 代码:!\/usr\/bin\/perl-wdie "cannot open file" unless open(MYFILE,"<input.txt");while(<MYFILE>){@...

初学c语言,这段代码总是提示执行cl.exe 出错,求大神答疑。
代码修改如下:include void main(){ int d,e,sum;printf("请输入两个整数");scanf("%d%d",&d,&e);\/\/双引号的位置不对,没必要强制要求输入回车 sum=e+d;\/\/哪来的a和b?printf("%d+%d=%d\\n",d,e,sum);\/\/你这格式是什么情况?} ...

求c语言代码纠错
程序的末尾少了分号。另外,分母上的“2a”少了括号。include <stdio.h> include <math.h> int main(){ double x1,x2,a,b,c;printf("已知方程ax^2+bx+c=0,请输入a,b,c\\n");scanf("%lf%lf%lf",&a,&b,&c);printf("方程为ax^2+bx+c=0\\n"); \/\/有改动 if (b*b-4....

R语言 这段代码有错啊 widths参数和heights参数没对啊 帮我按照上面的...
layout(matrix(c(1,1,2,3),2,2,byrow=T),widths=c(4,1),heights=c(1,3))宽度widths是说横向分割4:1 高度heights是说纵向分割1:3 但是会报错 Error in plot.new() : figure margins too large 就是你留的空太小了,纵向分割1:3后第一幅图hist(wt) 不够地方放。自己调整位置吧。...

C语言,求方程根,调用函数,无法输出,求改正
以上代码修改如下:scanf("%f,%f,%f",&a,&b,&c);应改为:scanf("%lf%lf%lf",&a,&b,&c);\/\/输入a b c时以空格隔开 if(d=0) E(a,b,c);应改为:if(d==0) E(a,b,c);printf("x1=%5.2f\\tx2=%5.2f\\n",(-b+sqrt(d))\/2*a,(-b-sqrt(d))\/2*a);应改为:printf...

请问一下,这段代码哪里出错了?只能输入,不能输出啊,该怎么改啊?
看代码意思应该是想将输入的姓名输出,代码改成下面的即可,(提供给你两种方法,你的将两种方法混淆了):include<stdio.h>#include<stdlib.h>#define NUM 2char xingming[NUM];\/\/方法一int main(){scanf("%s",xingming);printf("%s",xingming);system("pause");return 0;} \/\/方法二\/*int ...

C语言问题求改正,找不出错在哪里,求助啊!
是不是要输出这样的啊 include<stdio.h> int main(){ int c(int a,int b);int i,n=10,j;for(i=0;i<n;i++){ for(j=0;j<i+1;j++){ printf("%4d",c(i+1,j+1));} printf("\\n");} } int c(int a,int b){ int m;if(a<=2){ m=1;} else if(b==1||b==...

c语言中数据输入错误了如何提示输入错误并实现要求重新输入
可以使用清理输入流fflush(stdin);这个原因是因为错误输入的内容会保留在输入流,下一次判断会从输入流开始读取,因为错误输入的内容还在,所以直接判断错误,继续循环。但有些编译器并不支持清理输入流。所以我们这时需要用手动输入让其清除。使用getchar();让其接收错误的字符。但这样就会变成这样,如果...

C语言一道题目,运行出现Debug,求修改~
问题是找出来了,可是还没有解决,你先自己想想 for (p = a; p < a + 4; p++)scanf("%s", *p);通过调试,p < a+4这个限制条件并没有什么用,p会一直++,然后最直接的结果就是数组越界!

江山市19329652108: C语言编程输出结果出现错误(全是0),求助!(数组) -
贝颖新欧: 问题出在:float t,T[1000][11]={0}; T[1000][11]是float 输出要用:%f 格式 printf("T[%d][%d]=%d\t",n,i,T[n][i]); 改为:printf("T[%d][%d]=%f\t",n,i,T[n][i]); 另外scanf("%f",&t); for(n=1;n<10/t+1;n++) {for(i=0;i<1;i++) 第二个for的判断条件:;i<1是不是应该为i<11?否则这个循环没有意义. 修改后编译通过.

江山市19329652108: 一个关于数组的C语言代码,错误很多,希望有人帮忙修改一下
贝颖新欧: 主要有两个错误,一个是有一个中文的符号.另外一个就是数组声明时候的大小必须是确定的,不能用变量,修改后如下: #include&lt;stdio.h&gt; #define MAX 100 void main(void) { void exec(int n); int n; printf("请输入阶数:"); scanf("%...

江山市19329652108: c语言输入10个字符串数组,不知道哪里出错了 -
贝颖新欧: 改成如下,就OK啦#include char a[10]={'\0'};int i;int j;void main(){ for(i=0;i<10;i++) { scanf("%c",} for( j=9;j>...

江山市19329652108: 纯C 代码 一错误求解 - ---关于二维数组出错好像 (迷宫求解代码)
贝颖新欧:可以这样定义二维数组: int main(void) { int froma0,fromb0,toa0,tob0,i,j,k,c[20],d; int migong[P][Q],migong0[P][Q]={{0,1,1,0,0},{1,0,1,1,1},{1,1,0,1,0},{1,0,1,1,1},{1,1,0,1,0}}; stack s1; stack s2; Initstack(&s1); Initstack(&s2); migong[P][Q]=&migong0; ........... }

江山市19329652108: c语言 改错,求解释,有采纳 -
贝颖新欧: 1 第一出错误因为数组的格式必须是 type name[]; 缺少了【】所以第一个错了 第二处,因为你要定义的数组元素有小数,所以不能用int 整数格式 要用浮点型 float 或double2 第一...

江山市19329652108: C语言求改错 -
贝颖新欧: 程序中有三行“混入”了中文标点(有括号和冒号).#include int main() { char grade; scanf("%c",&grade); printf("your score:"); switch(grade) { case 'A':printf("90~100\n");break; case 'B':printf("80~89\n");break; case 'C':printf("70~79\...

江山市19329652108: c语言求数组中10个数中最大和最小的数 我编的程序哪错了 怎么改 求救! -
贝颖新欧: 是你输入的问题,程序没有错,输入的每个数中间要有空格(而且你的代码不乱呀)

江山市19329652108: C语言程序代码错误 求解释
贝颖新欧: 错误太多,请使用我的代码: #include <stdio.h>int main(){int year =0; //必须初始化char str1[]="是闰年"; //数组字符串建议不用下标.char str2[]="不是闰年"; printf("请输入年份后按回车键:\n");scanf("%d",&year); if ((year%4==0 ...

江山市19329652108: c语言编程求告知一处错误怎么改 -
贝颖新欧: scanf不能读取整个数组.而且数组是字符型,也不是整型,不能用%d.应该用gets(name);

江山市19329652108: 自己编了一个C程序 运行后输出结果不对 求改正"编写一个程序 把100以内的素数存放到一个数组中 " -
贝颖新欧: #include#include int panduan(int m) {int i;int k; k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0) break; if(i>k) return m; else return m+10000; } int main(void) { int b1,a[100],i; for(i=0;i<100;i++) a[i]=0; for(i=0,b1=2;b1<=100;b1++) if(panduan(b1)<=100) a[i++]=...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网