PAT-乙级B1021-字符串形式输入数字

题目中提到:输入一个不超过 1000 位的正整数 N,故不能再用整型接收输入

一: 整型输入,数字不能太大

//仅适用于10位内的整数
#include <stdio.h>
int main()
{
    int n, temp, i, a[10]={0};
	scanf("%d", &n);
	do {
	    temp=n%10;
		a[temp]++;
		n=n/10;
	} while(n!=0);        //0的个数存在a[0],1的个数存在a[1]...   此处用do...while考虑到输入0
	for (i=0; i<=9; i++) if (a[i]!=0) printf("%d:%d\n", i, a[i]);
}

二:字符串输入,不超过1000位整数都行

#include <stdio.h>
#include <string.h>
int main()
{
    char n[1010], c;
	int count, temp, i, a[10]={0};
	scanf("%s", n);        //由于输入最大可能是1000位的数,用字符串来接收输入
	count=strlen(n);    //计算字符串长度
	for (i=0; i<count; i++) {
	    c=n[i];
		temp=c-'0';      //将字符型数字转化为整型数字
		a[temp]++;
	}
	for (i=0; i<=9; i++) if(a[i]!=0) printf("%d:%d\n", i, a[i]);
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值