前言:成功没有快车道,幸福没有高速路。所有的成功,都来自不倦地努力和奔跑,所有的幸福都来自平凡的奋斗和坚持,今天小编带大家做一道关于C语言的题(题目来源牛客),内容精华(gets()函数和getchar()函数)相信大家咱看完,都有不小的收获!!
作者:旧梦拾遗186
专栏:C语言编程----小比特成长日记
每日励志:
成功没有快车道,幸福没有高速路。所有的成功,都来自不倦地努力和奔跑,所有的幸福都来自平凡的奋斗和坚持
目录
一.试题名称:
二.试题题目:
a)题目描述:
b)输入描述:
c)输出描述:
d) 示例1
三.解决方法:
解法1(一个字符一个字符的输入):
a)代码:
b1)结果
b2)结果:
解法2(输入字符串):
a)代码:
b)结果:
竞选社长
假设你们社团要竞选社长,有两名候选人分别是A和B,社团每名同学必须并且只能投一票,最终得票多的人为社长.
一行,字符序列,包含A或B,输入以字符0结束。
一行,一个字符,A或B或E,输出A表示A得票数多,输出B表示B得票数多,输出E表示二人得票数相等。
输入:
ABBABBAAB0输出:
B
本题的解题思路大致是通过定义变量充当(计数器 ),在通过循环语句和判断语句改变计数器的值,最后通过计数器的值判断'A'和'B',谁出现的次数多。
输入时有两种做法,一种是一个字符一个字符的输入,一种是一串字符的输入。
#include
int main()
{
int ch=0;
int c=0;
int b=0;
while(((ch=getchar())!='0')&&(ch!=EOF))
{
if(ch=='A')
{
c++;
}
if(ch=='B')
{
b++;
}
}
if(c>b)
{
printf("A");
}
else if(b>c)
{
printf("B");
}
else{
printf("E");
}
return 0;
}
注意:
这里的getchar()1.读取的是字符。
2.返回的是字符的ascii值,不会超过一个字节
通过百度了解一下ascii值
“ASCII它是一种7位编码,但它存放时必须占全一个字节,也即占用8位。 ASCII编码是由美国国家标准委员会制定的一种包括数字、字母、通用符号、控制符号在内的字符编码集。
3.读取失败会返回EOF--->-1(int 型)
4.这里getchar()的返回值理论上可以是int型也可以是char型,但是当读取失败 时会返回-1所以返回int型更合理
通过判断语句如果字符'A'的计数器>字符'B'的计数器,则字符'A'的数量多于字符'B',输出字符'A',反之亦然,若计数器相等输出字符'E'。
或者:
#include
int main()
{
int ch=0;
int count=0;
while(((ch=getchar())!='0')&&(ch!=EOF))
{
if(ch=='A')
{
count++;
}
if(ch=='B')
{
count--;
}
}
if(count>0)
{
printf("A");
}
else if(count<0)
{
printf("B");
}
else{
printf("E");
}
return 0;
}
通过判断语句如果计数器>0,则字符'A'的数量多于字符'B',输出字符'A',反之亦然,若计数器等于零输出字符'E'。
#include
int main()
{
char str[100]={0};
gets(str);
int count=0;
int i=0;
while(str[i]!='0')
{
if(str[i]=='A')
{
count++;
}
if(str[i]=='B')
{
count--;
}
i++;
}
if(count>0)
{
printf("A");
}
else if(count<0)
{
printf("B");
}
else{
printf("E");
}
return 0;
}
注意:1.这里的get()接收的是地址
2.先用gets()接收你要输入的字符串,注意字符串要存到数组中,并将数组名当作地址传给get()函数。
通过判断语句如果计数器>0,则字符'A'的数量多于字符'B',输出字符'A',反之亦然,若计数器等于零输出字符'E'。
今天小编带大家做了一道c语言的题目,相信看完的小伙伴都有自己的收获,如果大家觉得小编写的不错,希望三连加关注哦,小编会继续努力,推出优质博文。