C语言编程,用while语句,输入一行字符统计字母的个数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言编程,用while语句,输入一行字符统计字母的个数相关的知识,希望对你有一定的参考价值。
代码如下:
#include <stdio.h>
int main()
char c;
int letters=0,space=0,digit=0,other=0;
printf("请输入一行字符:");
while ((c=getchar())!='\\n')
if (c >= 'a'&&c <= 'z' || c >= 'A'&&c <= 'Z')
letters++;
else if (c == ' ')
space++;
else if (c >= '0'&&c <= '9')
digit++;
else
other++;
printf("字母数:%d\\n空格数:%d\\n数字数:%d\\n其他字符:%d\\n",letters,space,digit,other);
return 0;
扩展资料
while的执行顺序
while 循环的执行顺序非常简单,它的格式是:
while (表达式)
语句;
当表达式为真,则执行下面的语句;语句执行完之后再判断表达式是否为真,如果为真,再次执行下面的语句;然后再判断表达式是否为真……就这样一直循环下去,直到表达式为假,跳出循环。这个就是 while 的执行顺序。
注意,初学者编程时,if、else、for、while、do 后面的执行语句不论有多少行,就算只有一行也要加“”,养成良好的编程习惯尤为重要。
再来看一下 for 循环的格式:
for (表达式1;表达式2;表达式3)
在 for 循环的格式中,表达式 1、表达式 2 和表达式 3 在 while 循环中一个也不少,只不过不像 for 循环那样写在一起,而是分开写。在 while 循环中,循环变量 i 在定义的时候就给它赋初值,++i 则是写在 while 的循环体内。只有循环判断表达式与 for 一样,都是写在其后的括号中。
并且所有的 for 循环都可以转化成 while 循环,不仅如此,所有的 while 循环也都可以转化成 for 循环,for 循环和 while 循环可以相互转换。
参考资料来源:
百度百科——while语句
可以参考下面的代码:
//arg为要输入的字符串
int lettercout(char* arg)
char *tmp = arg;
int k = 0;
while(*tmp != '\\0')
if((*tmp >='a'&&*tmp <='z')||(*tmp >= 'A'&&*tmp <= 'Z'))
k++;
tmp ++;
return k;
扩展资料:
while语句语法如下:
1、Pascal
while <条件> do <语句>
意为当条件符合时,接着做下面的语句;不符合时,退出循环。
2、C
do <语句> while(<条件>);
while(<条件>) <语句>;
3、C++
while(<条件>) <语句>;
do <语句> while(<条件>);
注意:do...while 循环是 while 循环的变种。
参考资料来源:百度百科-while (循环语句及英文单词)
参考技术B //arg为要输入的字符串int lettercout(char* arg)
char *tmp = arg;
int k = 0;
while(*tmp != '\\0')
if((*tmp >='a'&&*tmp <='z')||(*tmp >= 'A'&&*tmp <= 'Z'))
k++;
tmp ++;
return k;
本回答被提问者采纳 参考技术C #include<stdio.h>
int main()
char c;
int count = 0;
while(c=getchar(),c!='\\n')
if((c>='a' && c<='z')||(c>='A' && c<='Z') )
count ++;
printf("字母个数是:%d\\n",count);
return 0;
参考技术D
用那个什么码
就行拉
C语言编程-9_4 字符统计
输入一个字符串(其长度不超过81),分别统计其中26个英文字母出现的次数(不区分大、小写字母),并按字母出现次数从高到低排序,若次数相同,按字母顺序排列。字母输出格式举例,例如:A-3,表示字母A出现3次,C-0表示字母C没有出现。
输入:
第一行为输入,占一行,输入的字符串可能含有空格
输出:
第二行为输出,占一行。按照字母输出格式从高到低输出,各字母输出之间用一个空格字符分隔。
样例:
123abcAABXxwvUu+
A-3 B-2 U-2 X-2 C-1 V-1 W-1 D-0 E-0 F-0 G-0 H-0 I-0 J-0 K-0 L-0 M-0 N-0 O-0 P-0 Q-0 R-0 S-0 T-0 Y-0 Z-0
//插入排序法
#include<stdio.h>
#include<string.h>
int main()
char str[81] = "123abcAABXxwvUu+";
gets(str);
int letter_stat[26] = 0;
char letter[26] = ‘ ‘ ;
for (int i = 0; i < 26; i++)
letter[i] = i + ‘A‘;
int i = 0;
while (str[i])
int k = 0;
if (str[i] >= ‘A‘&&str[i] <= ‘Z‘)
k = str[i] - ‘A‘;
letter_stat[k]++;
else if (str[i] >= ‘a‘&&str[i] <= ‘z‘)
k = str[i] - ‘a‘;
letter_stat[k]++;
i++;
for (int i = 0; i < 26; i++)
int k = letter_stat[i];
int temp = letter[i];
int j = i - 1;
while (j >= 0 && letter_stat[j] < k)
letter_stat[j + 1] = letter_stat[j];
letter[j + 1] = letter[j];
j--;
letter_stat[j + 1] = k;
letter[j + 1] = temp;
for (int i = 0; i < 25; i++)
printf("%c-%d ", letter[i],letter_stat[i]);
printf("%c-%d", letter[25], letter_stat[25]);
return 0;
//冒泡排序法
#include<stdio.h>
#include<string.h>
int main()
char str[81] = "123abcAABXxwvUu+";
gets(str);
int letter_stat[26] = 0;
char letter[26] = ‘ ‘ ;
for (int i = 0; i < 26; i++)
letter[i] = i + ‘A‘;
int i = 0;
while (str[i])
int k = 0;
if (str[i] >= ‘A‘&&str[i] <= ‘Z‘)
k = str[i] - ‘A‘;
letter_stat[k]++;
else if (str[i] >= ‘a‘&&str[i] <= ‘z‘)
k = str[i] - ‘a‘;
letter_stat[k]++;
i++;
for (int i = 0; i < 25; i++)
for (int j = 0; j < 25 - i; j++)
if (letter_stat[j] < letter_stat[j + 1])
int temp = letter_stat[j + 1];
letter_stat[j + 1] = letter_stat[j];
letter_stat[j] = temp;
temp = letter[j + 1];
letter[j + 1] = letter[j];
letter[j] = temp;
for (int i = 0; i < 25; i++)
printf("%c-%d ", letter[i],letter_stat[i]);
printf("%c-%d", letter[25], letter_stat[25]);
return 0;
---------------------
以上是关于C语言编程,用while语句,输入一行字符统计字母的个数的主要内容,如果未能解决你的问题,请参考以下文章
c语言 用指针方法处理:输入一行字符,统计并输出其中大写字母、小写字母、空格、数字及其它字符的个数。
怎么用c语言编写程序:用户从键盘输入一行字符,分别统计其中的英文字母,空格,数字占字符总数的百分比