----------------解决方案--------------------------------------------------------
//从键盘对一个有十个元素的数组任意赋值,并将相同的数删得只剩一个! #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=&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 <stdio.h>
#include <conio.h>
main()
{
float *n,*m,a[10];
int i,j,k=0;
n=m=a;
for(i=0;i<=9;i++)
{ if(i) ++m;
scanf("%f",m);
if(i)
{
for(j=0;j<i-k;j++)
if(*m==*(n--))
{m--;k++;}
n=m;
}
}
n=&a[10];/*此处为什么是a[10]*/
if(k)
{for(i=0;i<k;i++)
free(n--);}
clrscr();
for(i=9-k;i>=0;i--)
printf("%f\t",*(m-i));
getch();
}
实际上我少释放了一个空间!
[此贴子已经被作者于2005-5-21 21:18:38编辑过]
----------------解决方案--------------------------------------------------------
能讲讲吗?
----------------解决方案--------------------------------------------------------
程序的这种方法是好的 但是错误是存在的 我按照这种思路, 并加如自己的想法 把它重写如下: #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可是网络安全高手噢,楼上的,小心他找麻烦噢
----------------解决方案--------------------------------------------------------