目录
题目1:竞选社长
题目2:最高分数
题目3:判断是元音还是辅音
题目4:判断是不是字母
题目5:字母大小写转换
题目1:竞选社长
💭法1:使用字符串数组
代码实现:
int main()
{
char arr[100]={0};
scanf("%s",arr);
int count1 = 0;
int count2 = 0;
int sz = sizeof(arr)/sizeof(arr[0]);
for(int i = 0;i<sz;i++)
{
if(arr[i]=='A')
{
count1++;
}
else if(arr[i]=='B')
{
count2++;
}
else if(arr[i]=='\0')
{
break;
}
}
if(count1==count2)
{
printf("E\n");
}
else if(count1>count2)
{
printf("A\n");
}
else
{
printf("B\n");
}
return 0;
}
💭 法2:使用gets函数获取字符串
int main()
{
char buf[100]={0};
gets(buf);
int count1 = 0;
int count2 = 0;
int i = 0;
while(buf[i]!='\0')
{
if(buf[i]=='A')
count1++;
if(buf[i]=='B')
count2++;
i++;
}
if(count1==count2)
{
printf("E\n");
}
else if(count1>count2)
{
printf("A\n");
}
else
{
printf("B\n");
}
return 0;
}
💭 法3:只定义一个变量来统计票多少
代码实现:
int main()
{
char buf[100]={0};
gets(buf);
int flag = 0;
int i = 0;
while(buf[i]!='\0')
{
if(buf[i]=='A')
flag++;
if(buf[i]=='B')
flag--;
i++;
}
if(flag==0)
{
printf("E\n");
}
else if(flag>0)
{
printf("A\n");
}
else
{
printf("B\n");
}
return 0;
}
💭 法4:逐个字符读取
代码实现:
int main()
{
int ch = 0;
int flag = 0;
while((ch=getchar())!='\0'&&ch!=EOF)
{
if(ch=='A')
{
flag++;
}
if(ch=='B')
{
flag--;
}
}
if(flag==0)
{
printf("E\n");
}
else if(flag>0)
{
printf("A\n");
}
else if(flag<0)
{
printf("B\n");
}
return 0;
}
题目2:最高分数
💭 法1:定义整型变量存储数据
代码实现:
int main()
{
int n1 = 0;
int n2 = 0;
int n3 = 0;
while(~scanf("%d %d %d",&n1,&n2,&n3))
{
int max = n1>n2?n1:n2;
max=max>n3?max:n3;
printf("%d\n",max);
}
return 0;
}
💭 法2:定义数组存储数据
代码实现:
int main()
{
int num[3]={0};
while(~scanf("%d %d %d",&num[0],&num[1],&num[2]))
{
int max = 0;
int i = 0;
for(i=0;i<3;i++)
{
if(num[i]>max)
{
max = num[i];
}
}
printf("%d\n",max);
}
return 0;
}
题目3:判断是元音还是辅音
💭 法1 常规解题
代码实现:
int main()
{
int ch = 0;
char vowel[20]="AaEeIiOoUu";
int i = 0;
while((ch=getchar())!=EOF)
{
getchar();//读取回车字符
for(i=0;i<10;i++)
{
if(ch==vowel[i])
{
printf("Vowel\n");
break;
}
}
if(i==10)
{
printf("Consonant\n");
}
}
return 0;
}
💭 法2:使用strchr库函数,判断一个字符串里面是否出现该字符
如果存在返回该字符在字符串中的地址,如果不存在返回空指针。
代码实现:
#include <stdio.h>
#include <string.h>
int main()
{
int ch = 0;
char vowel[20]="AaEeIiOoUu";
int i = 0;
while((ch=getchar())!=EOF)
{
getchar();
if(strchr(vowel,ch))
{
printf("Vowel\n");
}
else
{
printf("Consonant\n");
}
}
return 0;
}
#include <stdio.h>
#include <string.h>
int main()
{
int ch = 0;
char vowel[20]="AaEeIiOoUu";
int i = 0;
while((scanf(" %c",&ch))!=EOF)
//%c前面空格处理字符前面的空白字符,也就是消除\n
{
//getchar();
if(strchr(vowel,ch))
{
printf("Vowel\n");
}
else
{
printf("Consonant\n");
}
}
return 0;
}
%c前面加上空格,会消化掉前面所有的空白字符,然后读取下一个字符
#include <stdio.h>
#include <string.h>
int main()
{
int ch = 0;
char vowel[20]="AaEeIiOoUu";
int i = 0;
while((scanf("%c\n",&ch))!=EOF)
{
if(strchr(vowel,ch))
{
printf("Vowel\n");
}
else
{
printf("Consonant\n");
}
}
return 0;
}
在%c的后边加一个\n,其实在输入时候就会消化掉\n字符,不会在下次读取字符时留下隐患。
题目4:判断是不是字母
💭 法1:常规解题
代码实现:
int main()
{
char ch = 0;
while((scanf("%c\n",&ch))!=EOF)
{
if((ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z'))
printf("%c is an alphabet.\n",ch);
else
printf("%c is not an alphabet.\n",ch);
}
return 0;
}
💭 法2:isalpha库函数判断是不是字母
#include <stdio.h>
#include <ctype.h>
int main()
{
char ch = 0;
while((scanf("%c\n",&ch))!=EOF)
{
if(isalpha(ch))
printf("%c is an alphabet.\n",ch);
else
printf("%c is not an alphabet.\n",ch);
}
return 0;
}
如果ch是字母,返回非零数字,如果ch不是字母,返回0
题目5:字母大小写转换
💭 isupper库函数判断字母是否为大写字母
islower库函数判断字母是否为小写字母
tolower库函数转小写字母
toupper库函数转大写字母
代码实现:
#include <stdio.h>
#include <ctype.h>
int main()
{
char ch = 0;
while((scanf("%c\n",&ch))!=EOF)
{
if(isupper(ch))//判断是否为大写
printf("%c\n",tolower(ch));//将大写转换为小写
if(islower(ch))//判断是否为小写
printf("%c\n",toupper(ch));//将小写转换为大写
}
return 0;
}
注意:
本题中使用的所有库函数全部用于处理字符,不能处理字符串