当前位置: 代码迷 >> C语言 >> 求救!!!!课后一题不会!救救我啊!!!!!
  详细解决方案

求救!!!!课后一题不会!救救我啊!!!!!

热度:140   发布时间:2005-05-17 22:04:00.0
求救!!!!课后一题不会!救救我啊!!!!!
从键盘对一个有十个元素的数组任意赋值,并将相同的数删得只剩一个!这个程序怎么编写?
搜索更多相关的解决方案: 键盘  元素  

----------------解决方案--------------------------------------------------------

//从键盘对一个有十个元素的数组任意赋值,并将相同的数删得只剩一个! #include <stdio.h>

void only_arry(int a[],int n); void select_arry(int a[],int n);

void only_arry(int a[],int n) { int i; int j; int ip; int counter; char temp[10]; counter=0; ip=0; for(i=0;i<n;) { temp[ip++]=a[i]; for(j=i+1;j<n;j++) { if(a[j]==a[i]) ++counter; else break; } i+=counter+1; counter=0; } printf("the final arry as following:\n"); for(i=0;i<ip;i++) printf("%5d",temp[i]); printf("\n");

}

void select_arry(int a[],int n) { int i; int j; int k; int temp; for(i=0;i<n;i++) { k=i; for(j=i+1;j<n;j++) { if(a[j]<a[k]) k=j; } if(k!=i) { temp=a[k]; a[k]=a[i]; a[i]=temp; } } }

int main() { int n; int i; int a[10]; n=10; printf("please enter the a_arry's number!\n"); for(i=0;i<n;i++) { printf("please enter the%d arry's number:\n",i+1); scanf("%d",&a[i]); } select_arry(a,n); only_arry(a,n); return 0; }


----------------解决方案--------------------------------------------------------
main()
{float temp[10],*point;
int i;
point=&amp;temp[0];
for(i=0;i&lt;10;i++)
   scanf("%f",*(point+i));
replace(point,10);
for(i=0;i&lt;10;i++)
   printf("%f",point[i]);
}
float replace(float *point,int a)
{int i,j;
for(i=0;i&lt;a;i++)
  for(j=i+1;j&lt;a;j++)
{ if(point[i]==point[j])
     free(point[j]);
}
}
----------------解决方案--------------------------------------------------------
哦,都不错嘛
----------------解决方案--------------------------------------------------------
以下是引用bmxboy在2005-5-18 14:09:15的发言: main() {float temp[10],*point; int i; point=&temp[0]; for(i=0;i<10;i++) scanf("%f",*(point+i)); replace(point,10); for(i=0;i<10;i++) printf("%f",point[i]); } float replace(float *point,int a) {int i,j; for(i=0;i<a;i++) for(j=i+1;j<a;j++) { if(point[i]==point[j]) free(point[j]); } }

程序的这种方法是好的 但是错误是存在的 我按照这种思路, 并加如自己的想法 把它重写如下: #include <stdio.h> #include <stdlib.h>

typedef struct { float number; int flag; }arry;

void Replace(arry *,int );

void Replace(arry *point,int a) { int i; int j; for(i=0;i<a;i++) for(j=i+1;j<a;j++) if((point+i)->flag==0&&(point+j)->flag==0&&(point+i)->number==(point+j)->number) (point+j)->flag=1; }

int main() { arry temp[10]; int i; for(i=0;i<10;i++) { printf("please enter the%d number:\n",i+1); scanf("%f",&((temp+i)->number)); (temp+i)->flag=0; } Replace(temp,10); for(i=0;i<10;i++) if(temp[i].flag==0) printf("%5.1f",temp[i].number); printf("\n"); return 0; }


----------------解决方案--------------------------------------------------------

----------------解决方案--------------------------------------------------------
我也来贴一个!大同小异!
#include &lt;stdio.h&gt;
#include &lt;conio.h&gt;
main()
{
float *n,*m,a[10];
int i,j,k=0;
n=m=a;
for(i=0;i&lt;=9;i++)
{ if(i) ++m;
scanf("%f",m);
if(i)
{
for(j=0;j&lt;i-k;j++)
if(*m==*(n--))
{m--;k++;}
n=m;
}
}
n=&amp;a[10];/*此处为什么是a[10]*/
if(k)
{for(i=0;i&lt;k;i++)
free(n--);}
clrscr();
for(i=9-k;i&gt;=0;i--)
printf("%f\t",*(m-i));
getch();
}
实际上我少释放了一个空间!

[此贴子已经被作者于2005-5-21 21:18:38编辑过]



----------------解决方案--------------------------------------------------------
能讲讲吗?
----------------解决方案--------------------------------------------------------
以下是引用musicml在2005-5-19 0:37:36的发言:

程序的这种方法是好的 但是错误是存在的 我按照这种思路, 并加如自己的想法 把它重写如下: #include <stdio.h> #include <stdlib.h>

typedef struct { float number; int flag; }arry;

void Replace(arry *,int );

void Replace(arry *point,int a) { int i; int j; for(i=0;i<a;i++) for(j=i+1;j<a;j++) if((point+i)->flag==0&&(point+j)->flag==0&&(point+i)->number==(point+j)->number) (point+j)->flag=1; }

int main() { arry temp[10]; int i; for(i=0;i<10;i++) { printf("please enter the%d number:\n",i+1); scanf("%f",&((temp+i)->number)); (temp+i)->flag=0; } Replace(temp,10); for(i=0;i<10;i++) if(temp[i].flag==0) printf("%5.1f",temp[i].number); printf("\n"); return 0; }

typedef struct { float number; int flag; }arry; 这里面的最后的 arry是什么意思啊? 还有typedef struct 是结构么?
----------------解决方案--------------------------------------------------------
glacier可是网络安全高手噢,楼上的,小心他找麻烦噢
----------------解决方案--------------------------------------------------------

  相关解决方案