(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);
}
时间: 2024-10-14 07:35:39

(c语法百题45)选票统计的相关文章

(c语法百题22)统计字符

知识点: 数组的运用,结合循环 getchar()的用法 注意:对于数组a[1000],没有a=getchar()然后就把字符一个一个装进数组里面,这是错误的. 还有scanf("%s”,a);也不是正确的. 内容: 输入若干个字符(以‘#'作为结束),计算输入的字符中字母‘a'或‘A’出现的次数. 输入说明: 一行若干个字符. 输出说明: 一个整数,为a或者A字符出现次数和. 输入样例: abcdefABCDEFaaAA# 输出样例 : 6 1 #include <stdio.h>

(c语法百题15)算术运算

知识点: 法1: 字符与ASCLL码的转换熟练! if……else的用法 法2: switch的用法 注意 scanf("%f %f %c",&a,&b,&c);与scanf("%f%f%c",&a,&b,&c);的区别,中间有无空格. 内容: 输入两个数值(均不为零)及一个算术运算符,输出其运算的结果(保留两位小数). 输入说明: 一行,2个数字,一字符(+,-,*,/,分别代表加.减.乘.除 输出说明: 一行,一个

(c语法百题23)各位数字之和

知识点: 字符函数 strlen()的用法 ASCLL码与数字的转换,-48 数组的灵活用法,数组名的用法. char a[100];  int i,s=0,m;  scanf("%s",&a);  m=strlen(a); 内容: 求输入的一个整数的各位数字之和 输入说明: 一行一个整数 输出说明: 一个整数 输入样例: 2147483646 输出样例 : 45 #include <stdio.h> #include <string.h> int ma

(c语法百题25)从 n 个数中挑选出最大的数

知识点: 数组灵活运用 for循环灵活运用 简单的算法 内容: 从 n 个数中挑选出最大的数 输入说明: 两行 第一行一个数n,表示总的个数 第二行共n个数字,用空格隔开. 输出说明: 一行,最大数 输入样例: 4 1 2 3 4 输出样例 : 4 #include <stdio.h>#define MAX 200; int main() { int a[MAX],n,i,t; scanf("%d",&n); for (i=0;i<n;i++) { scanf

(c语法百题21)四位整数

知识点: for语句,if语句灵活运用 内容: 编程找出四位整数 abcd 中满足下述关系的数: ( ab + cd )( ab + cd ) = abcd 输入说明: 没有输入 输出说明: 输出abcd,从小到大,一行一个. 1 #include <stdio.h> 2 int main() 3 { 4 int i,a,b; 5 for(i=1000;i<10000;i++) 6 { 7 a=i/100; 8 b=i%100; 9 if((a+b)*(a+b)==i) 10 { 11

(c语法百题12)优惠购物

知识点: if……else 的用法 内容: 节日期间,某超市举行优惠购物活动,规定:所购物品不超过1000元(含)时,按9.5折付款,如超过1000元,则超过部分按9折收费 输入说明: 一行 ,一个数,购物总额 输出说明: 一行 需付购物款(保留两位小数) 输入样例: 1200.58 输出样例 : 1130.52 1 #include <stdio.h> 2 int main() 3 { 4 float a,s; 5 scanf("%f",&a); 6 if (a&

(c语法百题11)输入一个数 ,输出其绝对值

知识点: if语句 内容: 输入一个数 ,输出其绝对值. 输入说明: 一行一个整数 输出说明: 一行一个整数 输入样例: -3 输出样例 : 3 #include <stdio.h> int main() { int a; scanf("%d",&a); if (a<0) { a=-a; } printf("%d\n",a); return 0; } (c语法百题11)输入一个数 ,输出其绝对值,布布扣,bubuko.com

(c语法百题13)符号函数

知识点: if……else……if……else的用法. 内容: 计算下列函数(符号函数): 1 (x>0) y= 0 (x=0) -1 (x<0) 输入说明: 一个整数 输出说明: 一个数字(1,0,或者-1) 输入样例: 12 输出样例: 1 1 #include <stdio.h> 2 int main() 3 { 4 int a; 5 scanf("%d",&a); 6 if (a>0) 7 { 8 printf("1\n"

(c语法百题14)判断直角三角形

知识点: 逻辑表达式的用法 &&       ||       !     注意优先级. 内容: 输入三角形的三边,判断它是否是直角三角形,是输出Yes,不是输出No,连三角形都不是,输出Error 输入说明: 一行,输入3个整数 输出说明: Yes! 或者 No!或者 Error! (注意大小写,标点前无空格) 输入样例: 3 4 5 输出样例 : Yes! 1 #include <stdio.h> 2 int main() 3 { 4 int a,b,c; 5 scanf(