前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >字符简介与小编错误的统计字符

字符简介与小编错误的统计字符

作者头像
小Bob来啦
发布2020-12-16 14:34:01
5750
发布2020-12-16 14:34:01
举报
文章被收录于专栏:用户8057608的专栏

今日简单介绍有关于字符的知识,因为字符是在字符串以及字符数组中最基础的,以后指针也很大量的用到字符的知识。

更重要的是今日小编犯了一个错误,是个很小的错误,为了找出这个错误花费了小编一天的时间,这里也是告诫大家尽量要处理好细节方面的问题,无论你是工作者还是学生,细节导致的错误最为致命,因为你很难找到它。

字符简介:

字符在C语言中是最基本的元素,C语言字符集由字母、数字、空白、标点和特殊字符组成(在字符串常量和注释中还可以使用汉字等其他图形符号)。

C语言基本字符也包括以下几种:

  1. 数字字符:0,1,2,
  2. 大小写英文字母:a~z,A~Z。
  3. 其他可打印(可显示)的字符,如各种标点符号、运算符、括号等。
  4. 空白符:空格符、换行符、制表符等统称为空白字符。而空白符只在字符常量和字符串常量中起作用。

这里还要提到的是标识符:

百度定义:标识符是用来表示程序、常量、变量、过程、函数、文件和类型等名称的符号。标识符必须以字母开头,后面可以是字母和数字的任意组合。标识符含有字母和数字的个数称为标识符的长度,它的长度在具体的实现系统中一般都有限制,标准Pascal将标识符的有限长度限定在8个字符以内。

标识符可分为二类:

  1. 标准标识符:是指Pascal系统预先定义的标识符,它们都有约定的含义,在程序中可直接使用,不必再事先定义。例如:标准常量:false true maxint。
  2. 用户定义的标识符:是用户按标识符定义的规则自己定义的。用户在定义标识符时要注意以下几点:
  • 禁止使用保留字作标识符,否则Pascal编译器将指示出错信息。
  • 尽量避免使用标准标识符作为用户标识符。
  • 必须遵照先定义后使用的原则,即一个用户定义的标识符必须首先出现在程序的说明部分,然后才能出现在程序的语句部分。
  • 对标识符命名时,尽量避免字母和数字的混淆。如字母o和数字0,字母l与数字1。
  • 注重标识符的命名应能反映对象的实际意义。如Volume表示体积Largest表示最大数。

我们在使用标识符还得注意更多的地方,比如:

  • 标准C不限制标识符的长度,但它受各种版本的C语言编译系统限制,同时也受到具体机器的限制。
  • 在标识符中,字母的大小写是有区别的。例如BOOK和book是两个不同的标识符。
  • 标识符虽然可由程序员随意定义,但标识符是用于标识某个量的符号。因此,命名应尽量有相应的意义,以便于大家更好的理解。

C语言简单的字符介绍就到这里啦。

下面是小编今天犯错的一题:

字符统计

任务描述

题目描述:对于给定的一个字符串,统计其中数字字符出现的次数。

输入

输入数据有多行,第一行是一个整数n,表示测试实例的个数,后面跟着n行,每行包括一个由字母和数字组成的字符串。

输出

对于每个测试实例,输出该串中数值的个数,每个输出占一行。

测试说明

样例输入:

2

asdfasdf123123asdfasdf

asdf111111111asdfasdfasdf

样例输出:

6

9

以下为小编错误源代码的一部分:

代码语言:javascript
复制
for(n=1;n<=i;n++){
        puts(a);
        b=strlen(a);
            for (k = 0; k < b; k++) {
                if (a[k]>=48&&a[k]<=57) {

很多时候大家很可能一眼看上去没什么问题,当然大佬除外,这里的a其实是个数组,在for循环时应该是要输入字符串给数组a的,但是小编把gets写成puts了啊,还以为是IDE出问题了

。为此小编弄了一天,很不划算啊,希望大家要以小编为戒,在写代码时一定要注意。

以下为修改后的正确源代码:

代码语言:javascript
复制
#include<stdio.h>
#include<string.h>
#define m 300
int main() {
    int i, k, sum, b;
    char a[m];
    scanf("%d", &i);
    while (i--) {
        sum = 0;
        scanf("%s", a);
        b = strlen(a);
        for (k = 0; k < b; k++) {
            if (a[k] >= 48 && a[k] <= 57)
                sum = sum + 1;
        }
        printf("%d\n", sum);
    }
    return 0;
}

运行结果:

小编说明:解题的代码不只一种,欢迎大家投稿优质代码与大家共享,可以投稿到公众号后台或者到学习圈子哦。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员Bob 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 任务描述
  • 测试说明
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档