字符统计 C语言数据输入的方式

题目:

【问题描述】输入字符串,统计字符串中字母(包括大小写)、空格的个数。

【输入形式】字符串(包括字母、空格、数字和其他字符)

【输出形式】字母个数 空格个数

【样例输入】%4dB *hg #

【样例输出】4 2

【样例说明】

输入字符串以换行符为结束。测试数据有多组。

 思路讲解:

题目要求统计字符串的字母、字符,先来复习一下系统中的数据输入方式

数据输入

输入若干字符串,可以用到的方法有

scanf(“%s",s);scanf()默认的结束符是:空号,tab,换行 

get(s);  其中的s只能是字符串,即char类型的数组char【】

getchar();获取一个字符。该函数以无符号 char 强制转换为 int 的形式返回读取的字符,如果到达文件末尾或发生读错误,则返回 EOF。

(1)输入一组数据(数据之间以空格分隔)

#include < stdio.h >
int main()
{
int a,b;
scanf("%d %d",&a, &b);
printf("%d\n",a+b);
return 0;
}

(2)输入多组数据(数据之间以空格分隔)

方法一:

#include < stdio.h >
int main()
{
int a,b;
while(scanf("%d %d",&a, &b) == 2){
printf("%d\n",a+b);
}
return 0;
}

方法二:

#include < stdio.h >
int main()
{
int a,b;
while(scanf("%d %d",&a, &b) !=EOF){
printf("%d\n",a+b);
}
return 0;
}

(3)输入n组数据(数据之间以空格分隔)

#include < stdio.h >
int main()
{
int a,b,n;
scanf("%d",&n);
while(n‐‐){
scanf("%d %d",&a, &b)
printf("%d\n",a+b);
}
return 0;
}

(4)输入多组字符串(字符串中不含空格、tab和换行符)

#include <stdio.h>
int main()
{
char s[100];
while(scanf("%s",s)==1){
printf("%s\n",s);
}
return 0;
}

(5)输入多行字符串(字符串中含有空格)

#include <stdio.h>
int main()
{
char s[100];
while(gets(s)){
puts(s);
}
return 0;
}

 ctrl+z 结束输入

题目讲解

题目说“输入字符串以换行符为结束。测试数据有多组。”也就是告诉我们,测试过一组数据,输出完这一组结果后,还不能终止程序,还会再次输入一组数据重新利用代码,需要再次返回一组新的结果,这样一直重复循环下去。

注:回车是一组字符串输入的结束

 在终端中实现的效果

符合上面“输入多行字符串(字符串中含有空格)”类型,所以就用gets(s)来接收输入的字符

提前准备一个char类型的数组来储存要输入的字符串,将字符串的每个元素挨个放进数组的每个元素里面

挨个遍历判断数组中每个元素,是否是字母或空格,如果是,就将对应的工具变量++操作。

如果遍历到字符串的最后,遇到结束符‘/0’,就终止遍历,输出记录的结果

最后要将整个过程放入while()循环里面,这样才能实现输入完一组数据并输出一组结果后,接着继续的输入下一组数据

代码展示:

#include<stdio.h>
int main(){
	
	int i=0;
	char c[1000];
	while(gets(c)){
	int a32=0;
	int a24=0;
	for(i=0;c[i]!='\n';i++){
		if(c[i]==32){
			a32++;
		}
		else if((c[i]>=65&&c[i]<=90)||(c[i]>=97&&c[i]<='z')){
			a24++;
		}}
		
			printf("%d %d\n",a24,a32);
			
		
	}
	
	return 0;
	
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值