编程初学者入门2_同学投票竞选社长
发布日期:2021-05-07 20:39:23 浏览次数:23 分类:原创文章

本文共 1758 字,大约阅读时间需要 5 分钟。


  • 题目描述
    假设你们社团要竞选社长,有两名候选人分别是A和B,社团每名同学必须并且只能投一票,最终得票多的人为社长.


  • 输入描述
    一行,字符序列,包含A或B,输入以字符0结束。


  • 输出描述
    一行,一个字符,A或B或E,输出A表示A得票数多,输出B表示B得票数多,输出E表示二人得票数相等。



思路


首先我想到是用字符数组,但是输入的是连续字符串而且要判断以0结束,不知道怎么很好的判断结束


票数问题一般要有 各自的计数,这里两个人分别为a_count,b_count


循环输入,当scanf("%c",&ch) != EOF(End Of File)就是文件读取还没有结束,不写不通过


分支判断,是否0跳出,票数加1


根据票数,输出相应的结果



  • 思路1代码


# include<bits/stdc++.h>using namespace std;int main(){
int a_count = 0 ,b_count = 0; char ch = 0; while(scanf("%c",&ch) != EOF){
if(ch == '0') break; if(ch == 'A') a_count++; if(ch == 'B') b_count++; } if(a_count == b_count) printf("E\n"); else if(a_count > b_count) printf("A\n"); else printf("B\n"); return 0;}


  • 思路2代码
    利用字符数组


# include<bits/stdc++.h>using namespace std;int main(){
//计数 int a_count = 0 ,b_count = 0; //字符数组 //char stu[99]; char stu[99]; //读取全部输出的字符串 scanf("%s",stu); //字符串的长度 int len = strlen(stu); //循环计数,加票,判断是结束 for(int i = 0;i< len;++i){
if(stu[i] == 'A') a_count++; else if(stu[i] == 'B') b_count++; else break; } //打印输出结果 if(a_count == b_count) printf("E\n"); else if(a_count > b_count) printf("A\n"); else printf("B\n"); return 0;}


  • Python版代码


ll = list(input())count_A = ll.count('A')count_B = ll.count('B')if count_A == count_B:    print('E')elif count_A > count_B:    print('A')else:    print('B')

拓展


//写法1 while ((ch = getchar()) != EOF && getchar() != '\n')        continue;//写法2while (getchar() != '\n')        continue;

这两种写法的区别



  • 两种写法对于 换行符的过滤 效果是一样的,换行符输入,循环结束


  • 读取多行,遇到换行符就结束循环,第一个多判断了文件尾


  • 读取单行,第一个一直读到 文件尾 或 换行符;第二个一直读取到换行才结束,如果输入结束符EOF,第二种判断不会跳出循环


上一篇:数据库SQL实战16_sqllite创建索引、利用索引查询、创建视图、增加列、创建触发器
下一篇:数据库SQL实战15_批量插入数据,已存在就忽略、从已知表查询数据到另一个表

发表评论

最新留言

感谢大佬
[***.8.128.20]2025年04月08日 15时55分20秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章