读取输入字符个数

出现次数(Number Occurrences)

修改如下程序,使其打印⼀份列表,显示出每个数字在数中出现的次数。

输出范例:

Enter a number: 41271092

Digit: 0 1 2 3 4 5 6 7 8 9
Occurrences: 1 2 2 0 1 0 0 1 0 1

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main(void)
{
int ch = 0;
int i;
int arr[10] = { 0 };
while ((ch = getchar()) != ‘\n’)
{
for (i = 0; i < 10; i++)
{
if (ch == (i + 48))
arr[i] = arr[i] + 1;
}
}
printf(“Digit: 0 1 2 3 4 5 6 7 8 9\n”);
printf(“Occurrences:”);
for (i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
11111111…****getchar函数:**只读取字符,且只读取一个字符,比如,如果没用scanf的话,你只用了getchar,程序会叫你输入数据,如果输入120,getchar会读一个一个的字符1再读2最后读取字符3,还有最最后读取字符\n也就是回车,不会读取字符120的这种情况,只会读取一个,比如又输入3 4 a,挨着读3空格4空格a\n。反正记住getchar与putchar都一样,不会读太多合起来的字符。不会读大于九的数字的,所以这题才叫你求0到9的字符个数,没叫你求10的个数。遇到getchar,就默认为字符了,不是整型。且遇到getchar一次,就读取输入流缓冲区中的字符一次。(所以才把它放在ch中,不然直接用它去做比较,不用一次就变一次吗)
2222222…**变量的转换:变量ch为int,所以ch=getchar()的意思是读取一个字符,然后·把这个字符放入变量ch中,且转换为整型。比如读取字符0,由于字符·0的ASCLL值为48,所以ch其实是等于48的。所以与i进行比较的时候,i要加上48才行,才是公平的比较。
333333…***求个数思想:数列的下标为0到9,恰好可以作为看字符是否以下标的类型出现了几次,下标对应的数列中的值就加几。例如如果字符0总共出现了三次,所以字符0对应的下标0再对应的数列值0就加1,遇到一次getchar等于1,就加一,总共加两次.
444444…**注意:**ch只能为int不然为char的话,就不能与i进行比较了,除非把i也进行转换为char型

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值