C语言编程题目 给一个字符串,请找出出现次数最多的大写英文字母。 用C语言编程实现:输入一个字符串,输出大写英文字母的出现的个...
C\u8bed\u8a00\u7a0b\u5e8f\u8bbe\u8ba1\uff1a\u8f93\u5165\u4e00\u4e2a\u5b57\u7b26\u4e32\uff0c\u8f93\u51fa\u5176\u4e2d\u5927\u5199\u82f1\u6587\u5b57\u6bcd\u51fa\u73b0\u7684\u6b21\u6570\u62dc\u6258\u4e86\u5404\u4f4d \u8c22\u8c22#include void main() { int n=0; char c; while((c=getchar())!='\n') { if(c>='A'&&c<='Z') n++; } printf("\u5927\u5199\u82f1\u6587\u5b57\u6bcd\u51fa\u73b0\u7684\u6b21\u6570:%d\n",n); }
#include
#include
int main(){
char str[50];
scanf("%s",&str);
int count=0;
for(int i=0;i<strlen(str);i++)
if(str[i]>='A' && str[i]<='Z')count++;
printf("%d",count);
}
#include<stdio.h>
#include<string.h>
void main()
{
chara[100];
intfre[26];
int i,len,big=0;
gets(a);
for(i=0;i<26;i++)
fre[i]=0;
len=strlen(a);
for(i=0;i<len;i++)
if(a[i]>='a'&&a[i]<='z')
fre[a[i]-'a']++;
for(i=0;i<len;i++)
if(a[i]>='A'&&a[i]<='Z')
fre[a[i]-'A']++;
for(i=0;i<26;i++)
if(fre[i]>big)big=fre[i];
for(i=0;i<26;i++)
if(big==fre[i])
{
printf("%c\n",i+'a');
break;
}
}
扩展资料:
printf函数使用注意事项
1、域宽
%d:按整型数据的实际长度输出。
如果想输出指定宽度可以指定域宽,%md-->m域宽,打印出来以后,在控制台上,显示m位;
如果我们要打印的数的位数如果超过我们设定m则原样输出;
如果我们要打印的数的位数如果小于我们设定的位数,则补空白,具体如下:
如果m为正数,则左对齐(左侧补空白);
如果m为负数,则右对齐(右侧补空白)。
2、转义字符
如果想输出字符"%",则应该在“格式控制”字符串中用连续两个%表示。
如:printf("%f%%",1.0/3);输出结果:0.333333%。
//这个和楼上的思路是一样的,不过这是完整实现的
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct MaxGet//设置一个结构体存最大字符和出现次数
{
char maxchar;
int maxtime;
};
void main()
{
int Count[26]={0},n,i,j,temp=0;//Count数组表示A-Z出现次数计数
MaxGet maxgets[20];//程序最多能计算20条字符串,这个可以自己更改
char string[2000];//存字符串的字符数组
printf("输入样例个数:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("输入字符串:");
scanf("%s",string);
j=0;
while(string[j])//开始计数,65是A的ASCII码,这里等价于string[j]-'A'
{
Count[(int)(string[j]-65)]++;
j++;
}
for(j=0;j<26;j++)//找出出现最多的且是在前面的字符
{
if(Count[temp]<Count[j])
temp=j;
}
maxgets[i].maxchar=(char)(temp+65);//将结果存入存放结果的结构体数组中
maxgets[i].maxtime=Count[temp];
temp=0;//重置临时变量和Count数组,以便下一次处理
memset(Count,0,sizeof(Count));
}
for(i=0;i<n;i++)//输出结果
{
printf("%c %d
",maxgets[i].maxchar,maxgets[i].maxtime);
}
}
思路如下
先定义一个数组s[26],下标0-25 分别对应A-Z
遍历整个字符串,统计每个字符出现的次数
char ch ;
char s[25];
memset(s,0,sizeof(s));//清空s数组
do
{
char ch = getchar();
s[ch-'A']++; //减去A的ASCII码之后恰好为0,对应数组下标
}
while(ch!='\0');
遍历一次找到s数组中的最大值,就是出现的最大次数 设为m
int count = 0;
int min_index = 0;
for(i=0;i<25;++i)
{
if(count < s[i])
{
count = s[i];
min_index = i; //同样次数的最小字母对应下标
}
}
char min_char = min_index + 'A';
putchar(min_char);为答案
自己组织一下编程实现吧,很简单的
希望对你有帮助!
void main(){
int index, i, max, n;
char ch, a[27];
scanf("%d", &n);
while (n--){
fflush(stdin);
memset(a, 0, 27);
while ((ch = getchar()) != '
')
{
a[ch - 65]++;
}
max = 0; index = 0;
for (i = 0; i < 26; i++)
{
if (max < a[i]) { max = a[i]; index = i; }
}
printf("%c %d
", index + 65, max);
}
}
扩展阅读:ai智能写作一键生成 ... 大一期末c语言编程题 ... c语言搜题神器app ... c语言笔试题目及答案 ... c++编程题库 ... 大一c语言必背编程题 ... 字符串存入数组c语言 ... c语言入门题目及答案 ... 大一c语言编程题库100题 ...