续nqsort
续“上学期同学给的C语言练习”

上学期同学给的C语言练习

TLHL28 posted @ Sun, 01 Jun 2008 09:18:50 +0800 in C语言 with tags C语言 , 2051 readers

上学期同学从其它学校拿来的题.当时只学了一点点.(惭愧啊,一个学期学了很少的东西,还是那么懒.....)

题目要求在这大概简述一下,题目丢了.

多人对三个候选人,分别为 a, b, c ,进行投票.排第一个拿5分,第二个拿3分,第三个2分.

若重复,出现未知候选人,要在输入投票内容后提示错误,但不影响投票结果,结果中不包含错误票提交的分数.

分数相同者要重新投票,若是有两人相同票数,要提示要求哪两人重投.

这是我的

 

 

  1. #include <stdio.h>
  2. char *b[2];
  3. int i,k,l,q,w,x,j;      //LINUX下每个FOR循环要用不同变量,好象还和循序有关......你在WINDOWS下试下减少变量......
  4. int swap;       //记录统计结果较大的数组下标
  5. char vote[3];   //记录投票内容,如:a,b,c
  6. void two(int i);        //两人投票
  7. int mark=0;
  8.  
  9. main()
  10. {
  11.     int m;
  12.     char a[]={'a','b','c'};     //用于实现统计功能
  13.     int s[3]={0};                     //分别固定记录a,b,c的得分,如:s[0]固定记录a[0](即'a')的得分
  14.     //printf("%c %c %c",a[0],a[1],a[2]);
  15.     printf("\nman:");
  16.     scanf("%d",&i);
  17.     printf("case a vote:\n");
  18.  
  19.     for(q=0;q<i;++q){
  20.         for(l=0;l<3;++l)
  21.             scanf("%s",&vote[l]);
  22.         //printf("%c %c %c",vote[0],vote[1],vote[2]);
  23.  
  24.         for(m=0;m<3;++m)
  25.             if(vote[m]<='c'&& vote[m]>='a')
  26.                 mark++;
  27.  
  28.         /*实现统计功能*/
  29.         if(vote[0]!=vote[1]&&vote[1]!=vote[2]&&vote[2]!=vote[0]&&vote[0]&&(mark == 3)){
  30.             for(l=0;l<3;++l)
  31.                 for(k=0,w=0,x=0;k<3;++k,++x,++w)
  32.                     if(vote[l]==a[x])
  33.                         //printf("%d %c",x,a[x]);
  34.                         if(l==0) s[w]=s[w]+5;
  35.                         else if(l==1) s[w]=s[w]+3;
  36.                         else if(l==2) s[w]=s[w]+2;
  37.         }
  38.  
  39.         else //if(vote[0]==vote[1]||vote[0]==vote[2]||vote[1]==vote[2])
  40.             printf("it is not availability!\n");
  41.     }   
  42.  
  43.  
  44.     for(l=0,x=0;l<3;++l,++x)
  45.         printf("%c score : %d\n",a[x],s[l]);
  46.  
  47.     /*存在统计结果相同时*/
  48.     if(s[0] == s[1]&&mark==1){
  49.         printf("vote %c and %c\n",a[0],a[1]);
  50.         b[0]=&a[0];b[1]=&a[1];
  51.         two(i);
  52.     }
  53.     else if(s[1]==s[2]&&mark==1){
  54.         printf("vote %c and %c\n",a[1],a[2]);
  55.         b[0]=&a[1];b[1]=&a[2];
  56.         two(i);
  57.     }
  58.     else if(s[2]==s[0]&&mark==1){
  59.         printf("vote %c and %c \n",a[2],a[0]);
  60.         b[0]=&a[2];b[1]=&a[0];
  61.         two(i);
  62.     }
  63.  
  64.     else if(mark){
  65.         for(j=0;j<3;j++){
  66.             for(l=0;l<3;++l)
  67.                 //printf("%d",s[j]);
  68.                 if(s[j]>s[l]){
  69.                     swap = j;
  70.                     //printf(" %d ",swap);
  71.                 }
  72.             if(swap==0) break;
  73.         }
  74.  
  75.         swap=swap+1;
  76.         //printf("\n%d",swap);
  77.         switch(swap){   
  78.             case 1:
  79.                 printf("winner :%c\n",a[0]);
  80.                 break;
  81.             case 2:
  82.                 printf("winner :%c\n",a[1]);
  83.                 break;
  84.             default:
  85.                 printf("winner :%c\n",a[2]);
  86.         }
  87.     }
  88.     else printf("it is wrong!\n");
  89. }
  90.  
Head_small
Corolla said:
Thu, 05 Jun 2008 05:41:10 +0800

代码没贴全吧,呵呵

Avatar_small
TLHL28 said:
Thu, 05 Jun 2008 16:18:46 +0800

.........
对喔~回头贴上
多多指教!^_^


Login *


loading captcha image...
(type the code from the image)
or Ctrl+Enter