(c语法百题45)选票统计

注意点:

文章来自博客园,作者:Ls_Hacker_柏杨(http://www.cnblogs.com/hlwyfeng/)

函数的定义和调用,注意声明

int max(int xx,int yy,int zz);  int min(int xxx,int yyy,int zzz);

注意符号数组,比如 char a[10];数组a中有10个元素,a[0]~a[9],但是,里面不能装10个字符,因为符号数组最后有个'\0',自动的。

char a[1000];

for (i=0;i<=n;i++) 不是字符数组的话,是i<n,但是因为是字符数组有'\n',所以用i<=n,细节问题要注意。

注意  i++与++i 的区别

i=i+1;与++i等价

对if的更深入了解

注意比较两个数大小的方法

m=yy>zz?yy:zz;  n=xx>m?xx:m;

 

 

内容: abc三个人,n个人投票(n需要输入),统计abc三人的票数,abc三个字母以外的字符为弃权,按得票多少打印候选人和票数(相同票数按abc字母顺序输出)

输入说明:

 

第一行 n 代表有个人投票

第二行有n个字符(字母不区别大小写,如a和A都代表投给a票,abc 以外的字符弃权)

 

输出说明:

三行每行第一为字母(只能为abc之一,然后是得票数),按从大到小顺序

 

输入样例:

6 abcA1b

 

输出样例 :

a 2 b 2 c 1

 

#include <stdio.h>

int main()

{

 int max(int xx,int yy,int zz);    

 int min(int xxx,int yyy,int zzz);

 char a[1000];

 int n,i,x=0,y=0,z=0,t,h;

 scanf("%d",&n);

 for (i=0;i<=n;i++)                 //控制数组容量

 {

  

  a[i]=getchar();

  if (a[i]=='a'||a[i]=='A')         //这里也可用ASCLL码,'a'为97

  {

   ++x;

  }

  if (a[i]=='b'||a[i]=='B')

  {

   ++y;

  }

  if (a[i]=='c'||a[i]=='C')

  {

   ++z;

  }

 }

 t=max(x,y,z);

 h=min(x,y,z);

 if (t!=h)                           //排除了a,b,c数量相同的情况

 {

  if (x==t)

  {

   printf("a %d\n",x);

  }

  if (y==t)

  {

   printf("b %d\n",y);

  }

  if (z==t)

  {

   printf("c %d\n",z);

  }

  if (x>h&&x<t)

  {

   printf("a %d\n",x);

  } 

  if (y>h&&y<t)

  {

   printf("b %d\n",y);

  }

  if (z>h&&z<t)

  {

   printf("c %d\n",z);

  }

  if (x==h)

  {

   printf("a %d\n",x);

  } 

  if (y==h)

  {

   printf("b %d\n",y);

  }

  if (z==h)

  {

   printf("c %d\n",z);

  }

 }

 else printf("a %d\nb %d\nc %d\n",x,x,x);

 return 0;

}

int max(int xx,int yy,int zz)

{

 int m,n;

 m=yy>zz?yy:zz;

 n=xx>m?xx:m;

 return (n);

}

int min(int xxx,int yyy,int zzz)

{

 int m,n;

 m=yyy<zzz?yyy:zzz;

 n=xxx<m?xxx:m;

 return (n);

}

 

你可能感兴趣的:(语法)