看看这个程序!!
本次电视购物采取唯一最低价拍卖一部手机。手机的起价是100元,封顶价是1000元。用户可以发送短信编写自己愿意出的钱数(以元为单位,且必须是整数)到1688888,最后出价最低,并且没有与其余用户出价相同者可以凭自己出的价钱购买到这部手机。
输入
输入所有用户的出价。
每个人的出价都是一个整数i。当i是-1的时候表示输入结束。否则如果i在100到1000之间,表示这个用户的出价是i元。如果i不是-1,也不是合法的出价,表示这个用户发送错误,不作处理。
特别注意100和1000都是合法的出价。
输出
输出最后拍到这部手机的用户所出的价格。如果没有任何人符合条件,则输出-1。
输出完毕之后请换行。
样例输入
50 100 100 100 102 120 102 108 300 -1
样例输出
108
也就是说当有两个或两个以上的价格相同时就可以忽略他们了,然后在没有相同的价格中再找出最小的那个数!
程序代码:
#include <stdio.h> #include <string.h> #define N 10 int main(void) { int i=0,j,t=0,tempt; int total = 0; int string[N],a[N]; scanf("%d",&string[i]); while(string[i]!=-1 && i<N) { if( string[i]>=100 && string[i]<=1000) i++; /*输入数组元素*/ scanf("%d",&string[i]); } total = i; printf("\n"); for(i=0;i<total-1;i++) { t=0; for(j=i+1;j<total;j++) /*看数组中的元素有没有相同的有的话就置相同的那个数为0*/ { if(string[i] == string[j] && string[j] != 0 && string[i] != 0) { string[j]=0; t=1; } } if(t) string[i] = 0; /*把用于比较的那个数也置为0*/ } i = 0; j = 0; while(i<total) { if(string[i]!=0) { a[j]=string[i]; j++; } /*用于输出留下来的数,并且赋给a[i]*/ i++; } total = j; printf("\n"); for(i=0;i<total;i++) { for(j=i;j<total;j++) { if(a[i] > a[j]) { tempt=a[i]; /*排序比较出最小的那个数*/ a[i]=a[j]; a[j]=tempt; } } } printf("%d\n",a[0]); /*输出*/ return 0; }这个代码怎么实现不了这个功能?求指点!