统计字符1的个数

下面的程序意图在于统计字符串中字符1的个数,可惜有瑕疵:

#include <stdio.h>

#define maxn 10000000+10

int main()
{
    char s[maxn];
    scanf("%s", s);
    int tot = 0;
    for(int i = 0; i < strlen(s); i++)
        if(s[i] == 1)
            tot ++;
    printf("%d\n", tot);
    return 0;
}
该程序至少有3个问题,其中一个导致程序无法运行,另一个导致结果不正确,还有一个导致效率低下。你能找到它们并改正吗?

发现的错误:

  1. 数组过大,需要声明在main方法外面。
  2. 是s[i] == ‘1’,是字符1。
  3. scanf应该包在while里面,符合一般输入输出要求

猜测的错误:

- strlen虽然很高效,但是每次都需要计算一次,当数组非常大时,可能会影响效率。

改正如下:

#include <stdio.h>
#include <string.h>

#define maxn 10000000+10
char s[maxn];

int main()
{
    int tot, len;
    while(scanf("%s", s) == 1 ){
        tot = 0;
        len = strlen(s);
        for(int i = 0; i < len; i++)
            if(s[i] == ‘1‘)
                tot ++;
            printf("%d\n", tot);
    }
    return 0;
}
时间: 2024-10-28 21:48:52

统计字符1的个数的相关文章

问题 E: C#统计字符出现的个数

题目描述 编写一个实例方法getCountChar方法.该方法参数有两个,第一个参数可以是字符串s,第二个参数为字符c,方法返回值为第二个参数在第一个参数中出现次数.例如,CountChar("6221982",'2')返回值为3. 部分程序代码已经给出. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;

下列函数的功能是统计并返回形参指针S所指向的字符串所含字符‘A’的个数。

下列函数的功能是统计并返回形参指针S所指向的字符串所含字符‘A’的个数.试完成程序,写出应填写在程序空框中的代码. int counts(char *s) int n: for( n=0:. : s++) return n: 为统计字符指针s所指字符串包含的某字符的出现次数,必须用一个循环顺序考察整个字符串.由从指针s所指字符串的首字符开始,每考察一个字符后,指针s后移一个字符位置,考察循环直至字符率结束终止.所以填写在空框中的正确代码可写成*S!=‘\ 0’.由于字符串束符‘\ 0’的代码为

excel - 统计字符个数综合案例

本文通过一个综合的案例来介绍excel统计字符数的一些方法和思路,供大家参考和学习. 下图是一个excel数据源截图,我们逐一讲解不同条件的统计字符数. 第一,统计A2所有的字符数,不论是汉字和数字.B2公式为:=LEN(A2),LEN函数是统计单元格字符串长度. 第二,统计A2单元格汉字字符数C2单元格公式:=LENB(A2)-LEN(A2),LENB是按字节数统计,LEN是按字符数统计,结合二者特性写的公式. 第三,统计A2单元格数字字符数D2单元格公式:=LEN(A2)*2-LENB(A2

[汇编] 统计字符

1 ;编写一个有主程序和子程序结构的程序模块. 2 ;子程序的参数是一个N字节数组的首地址TABLE,数N及字符CHAR. 3 ;要求在N字节数组中查找字符CHAR,并记录该字符出现的次数. 4 ;主程序则要求从键盘接收一串字符以建立字节数组TABLE, 5 ;并逐个显示从键盘输入的每个字符CHAR以及它在TABLE数组中出现的次数. 6 ;(为简化起见,假设出现次数≤15,可以用16进制形式把它显示出来.) 7 8 data segment 9 table db 255 dup(0) 10 n

定义一个字符数组并初始化,统计字符&#39;a&#39;或&#39;A&#39;出现的次数

1 package com.imooc.array; 2 3 public class SortDemo2 { 4 5 public static void main(String[] args) { 6 //定义一个字符数组并初始化,统计字符'a'或'A'出现的次数 7 //定义一个字符数组ch并初始化 8 char[] ch={'a','b','c','A','a','d','a','e','f','g'}; 9 //循环遍历数组,统计字符'a'或'A'出现的次数 10 int sum=0;

浙大版《C语言程序设计(第3版)》题目集 练习3-4 统计字符 (15 分)

练习3-4 统计字符 (15 分) 本题要求编写程序,输入10个字符,统计其中英文字母.空格或回车.数字字符和其他字符的个数. 输入格式: 输入为10个字符.最后一个回车表示输入结束,不算在内. 输出格式: 在一行内按照 letter = 英文字母个数, blank = 空格或回车个数, digit = 数字字符个数, other = 其他字符个数 的格式输出. 输入样例: aZ & 09 Az 输出样例: letter = 4, blank = 3, digit = 2, other = 1

C语言统计字符数

一段统计字符数的代码及分析. 先贴代码: #include<stdio.h> #include<string.h>//提供memset函数原型. int main() { char S[80]; int C[26],length;//一段声明,即字符数组S,整型数组C,和整型length. memset(C,0,sizeof(C));//将C清零,至于为什么不把字符数组清零,稍后有一段实验过程. for(int i=0;i<=3;i++)//循环4次,读入4行字符串. { g

29:统计字符数

29:统计字符数 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  65536kB 描述 给定一个由a-z这26个字符组成的字符串,统计其中哪个字符出现的次数最多. 输入 输入包含一行,一个字符串,长度不超过1000. 输出 输出一行,包括出现次数最多的字符和该字符出现的次数,中间以一个空格分开.如果有多个字符出现的次数相同且最多,那么输出ascii码最小的那一个字符. 样例输入 abbccc 样例输出 c 3 来源 1744 1 #include<iostream> 2 #

统计字符(杭电1860)

/*统计字符 Problem Description 统计一个给定字符串中指定的字符出现的次数 Input 测试输入包含若干测试用例,每个测试用例包含2行,第1行为一个长度不超过5的字符串,第2行为一个长度不超过80的字符串.注意这里的字符串包含空格,即空格也可能是要求被统计的字符之一.当读到'#'时输入结束,相应的结果不要输出. Output 对每个测试用例,统计第1行中字符串的每个字符在第2行字符串中出现的次数,按如下格式输出: c0 n0 c1 n1 c2 n2 ... 其中ci是第1行中