精华内容
下载资源
问答
  • C语言分类统计字符个数

    千次阅读 2020-02-13 11:31:57
    题目来源:分类统计字符个数 PTA 本题要求实现一个函数,统计给定字符串中英文字母、空格或回车、数字字符和其他字符的个数。 函数接口定义: void StringCount( char s[] ); 其中 char s[] 是用户传入的字符串。...

    题目来源:分类统计字符个数 PTA
    本题要求实现一个函数,统计给定字符串中英文字母、空格或回车、数字字符和其他字符的个数。

    函数接口定义:

    void StringCount( char s[] );
    

    其中 char s[] 是用户传入的字符串。函数StringCount须在一行内按照:
    letter = 英文字母个数, blank = 空格或回车个数, digit = 数字字符个数, other = 其他字符个数
    的格式输出。

    裁判测试程序样例:

    #include <stdio.h>
    #define MAXS 15
    
    void StringCount( char s[] );
    void ReadString( char s[] ); /* 由裁判实现,略去不表 */
    
    int main()
    {
        char s[MAXS];
    
        ReadString(s);
        StringCount(s);
    
        return 0;
    }
    
    /* Your function will be put here */
    

    输入样例:

    aZ &
    09 Az
    
    

    输出样例:

    letter = 4, blank = 3, digit = 2, other = 1
    
    

    代码:

    void StringCount( char s[] )
    {
    	int i=0;
    	int letter=0,blank=0,digit=0,other=0;
    	while(s[i])
    	{
    		if(s[i]>64 && s[i]<91 || s[i]>96 && s[i]<123)
    			letter++;
    		else if(s[i] == ' ' || s[i] == '\n')         //将这一句改为else if ( s[i] == 32  ||  s[i] == 13 )答案会出错
    			blank++;
    		else if(s[i]>47 && s[i]<58)
    			digit++;
    		else
    			other++;
    		i++;
    	}
    	printf("letter = %d, blank = %d, digit = %d, other = %d",letter,blank,digit,other);
    }
    

    其中这一句:

    else if(s[i] == ' ' || s[i] == '\n') 
    

    换成:

    else if ( s[i] == 32  ||  s[i] == 13 )
    

    会通不过测试,32是空格的十进制ASCII码数,13是回车的十进制ASCII码数,但是不知道为什么不能通过测试。

    展开全文
  • C语言类与对象的实现

    2015-10-06 16:46:47
    为什么要用C来模拟面向对象的机制,在实际的工作中我们往往在感慨一些面向对象的经典设计模式由于C语言的限制无法使用,其实通过简单的模拟面向对象的行为,在C语言中也可以使用这些模式。 1:的构建 描述...

    本文转自:http://www.cnblogs.com/chencheng/archive/2012/12/22/2825692.html


    为什么要用C来模拟面向对象的机制,在实际的工作中我们往往在感慨一些面向对象的经典设计模式由于C语言的限制无法使用,其实通过简单的模拟面向对象的行为,在C语言中也可以使用这些模式。


    1:类的构建


    类描述了所创建的对象共同的属性和方法。我们在一个源文件中通过把数据和操作进行适当的组织来完成类的模拟。

    /*类的数据*/
    typedef struct SQUARE_S SQUARE_T;
    struct SQUARE_S
    {
        void (*draw)(void*);
        int sideLen;
    };
    /*类的方法*/
    static void draw(void* pObj)
    {
        SQUARE_T* pSqr = (SQUARE_T*)pObj;
        printf("Draw Square len is %d\n",pSqr->sideLen);
    }

    如上所示,一个正方形的类我们用一个结构体SQUARE_T来表示正方形的属性,draw是其中的一个方法。


    2:类的封装性


    类的封装一般要求对细节的隐藏并且提供指定的方法供调用者使用,在SQUARE这个类中,sideLen是图形的细节,只需要提供一个draw接口给调用者。因此在提供给外部调用的接口头文件中构建如下的接口。

    typedef struct SHAPE_S SHAPE;
    struct SHAPE_S
    {
        void (*draw)(void*);
    };

    通过定义不同的数据结构来达到数据隐藏的目的,如下图所示,对外接口中只能看到draw,内部实现中可以看到draw和sideLen。


    3:多态的模拟


    多态无疑是面向对象语言的很重要的一个机制,很多面向对象的设计模式都是以多态为基础,C语言并不支持多态,导致很多设计模式都无法直接使用。


    一个典型的多态例子,通过声明一个SHAPE接口,根据实例化对象类型的不同,pShape在运行时动态的表现不同的行为。


    SHAPE* pShape = NULL;                   //一个形状接口
    pShape = (SHAPE*)Ins(SQUARE,2);         //实例化为一个正方形
    pShape->draw(pShape);                   //pShape表现为正方形的行为

    多态机制的实现依赖函数指针,在每个类的构造函数中把相关接口用具体的函数地址填充,这样在实例化一个对象的时候我们才绑定了其具体的操作,也就是所谓的动态绑定。

    /*每个类的构造函数*/
    static void* Constructor(void* pObj,va_list* pData)
    {
        SQUARE_T* pSquare = (SQUARE_T*)pObj;
        pSquare->draw = draw;             //具体行为的填充
        pSquare->sideLen = va_arg(*pData,int);
        return pObj;
    }
    4:对象的创建


    有了类,我们需要实例化为可以运行的对象,实例化主要的工作是分配内存、动态绑定、数据初始化等工作。

    void* Ins(const void* pClass,...)
    {
        CLASS* pCls = NULL;
        void* pObj  = NULL;
        va_list vaList = NULL;
    
        pCls = (CLASS* )pClass;
        pObj = malloc(pCls->classSize);
        memset(pObj,0,pCls->classSize);
        
        va_start(vaList,pClass);
        pObj = pCls->Constructor(pObj,&vaList);
    
        return pObj;
    }


    展开全文
  • C语言分类统计输入字符个数

    万次阅读 2018-09-05 09:51:43
    /* 文件名:统计字符 编写日期:2018.9.5 使用软件:vs2017 编写思路:使用while语句循环统计 */ #include&... int letters_num = 0, space_num = 0, digit_num = 0, other_num = 0;... whil...

    /*
    文件名:统计字符
    编写日期:2018.9.5
    使用软件:vs2017
    编写思路:使用while语句循环统计
    */

    #include<stdio.h>
    int main()
    {
        char c;
        int  letters_num = 0, space_num = 0, digit_num = 0, other_num = 0;
        while ((c = getchar()) != '\n')//输入换行符退出循环
        {
            if ((c >= 'a'&&c <= 'z') || (c >= 'A'&&c <= 'Z')) letters_num++;
            else if (c == ' ') space_num++;
            else if (c >= '0'&&c <= '9') digit_num++;
            else other_num++;
        }
        printf("字母=%d,空格=%d,数字=%d,其他=%d", letters_num, space_num, digit_num, other_num);
        return 0;
    }

    代码运行结果:
    生成结果

    展开全文
  • 对于普通的函数来说,得在头文件里面声明(记得要用ifndef),在c文件里面定义,但是对于的成员函数来说,可以直接在class里面声明同时定义 就把看作一个加强版的结构体,结构体是可以这样的 A.c —include— ...

    对于普通的函数来说,得在头文件里面声明(记得要用ifndef),在c文件里面定义,但是对于类的成员函数来说,可以直接在class里面声明同时定义

    就把类看作一个加强版的结构体,结构体是可以这样的

    A.c —include— myapp.h ==》生成A.o

    B.c —include— myapp.h ==》生成B.o

    main.c —include— A.h & B.h ==》生成main.o
    讲道理main.o里面会包含两个myapp的定义,会起冲突,但是其实并不会~

    但是对于普通函数来说就会起冲突啦~

    阳哥tql~

    展开全文
  • 关于C语言的书籍方面,我感觉国外作者写的更好一些,比如《C和指针》,大概在15年1月份,我全部读过,他是作者经验的总结,一步步分享给大家。遇到的疑惑,在下面的内容里马上就会找到答案,这是我读这本书的最大的...
  • 1 另一是数据库程序设计(Visual )自选一参加考试http://www.examda.com/ncre/Dynamic/dagang/20070308/145902533.html 二级定位为计算机程序员 一是语言程序设计(C、C++、Java、Visual Basic、Delphi) 学高等...
  • C语言

    万次阅读 多人点赞 2019-12-18 23:01:50
    C语言 42.C语言是一种计算机高级语言。 43.C语言允许直接访问物理地址,能进行位操作。 44.C语言是结构化程序设计语言 45.c程序要通过编译,连接才能得到可执行的目标程序 46.用c语言编写程序,可以编写出任何类型的...
  • C语言实现

    万次阅读 多人点赞 2017-03-24 19:05:37
    c语言实现 学习嵌入式,C语言是必须学习的一门语言,C语言在设计之初是为了提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言不光提供了许多...
  • C语言函数分类

    千次阅读 2009-03-08 13:27:00
    C语言中可从不同的角度对函数分类。 1. 从函数定义的角度看,函数可分为库函数和用户定义函数两种。 (1)库函数 由C系统提供,用户无须定义, 也不必在程序中作类型说明,只需在程序前包含有该函数原型的头文件即可...
  • C语言】实现效果

    千次阅读 2018-08-01 13:56:22
    C语言】实现的继承 C语言如何实现的效果? 结构体跟是一种比较类似的结构,都对成员进行了一定程度的封装。区别在于,结构体的成员默认是public,的成员默认是private。 .h文件 #ifdef __cplusplus /...
  • c语言的存储

    2014-01-05 19:01:47
    c语言有五种不同类型的存储,了解他们会十分有助于对c语言的理解程度。 描述c语言的存储有作用域,链接类型以及存储时期三种描述方法。 作用域是用来描述变量的可以引用的区域的一个概念,一般情况下...
  • C语言 存储说明符

    千次阅读 2017-03-07 16:39:38
    有关C语言的存储,推荐的参考资料:C Primer Plus ,其中有一章专门讲解这个; 在理解C的存储之前,首先要搞懂的概念有:作用域、生存周期、连接属性 C中的存储说明符实际上是上述属性的不同组合 作用...
  • 类C语言的基础操作 抽象数据类型Triplet的表示和实现 算法的定义及他的五个特性“好的”的算法应该考虑达到一下目标 1、正确性 2、可读性 3、健壮性 4、效率和低存储量需求 算法侠侣是通过程序...
  • C语言】实现的继承

    千次阅读 2018-08-03 16:04:39
    [C语言]实现效果 C语言是利用结构体来实现的效果的。当然,跟还是有不同,在C++中的成员属性默认是私有(private)的,而结构体是公开的(public)。 那么应该如何实现的继承效果呢?我们可以利用结构体嵌套...
  • C语言字符分类函数

    千次阅读 2017-11-27 20:39:06
    百科:https://baike.baidu.com/item/ctype.h/8497240?fr=aladdin https://www.cnblogs.com/haomiao/p/6128459.html#include<ctype.h>//头文件...  int isalnum(int c):检查字符是否为数字或字母;(0~9,a~z,A~Z)
  • 一个资深C语言工程师说如何学习C语言

    万次阅读 多人点赞 2017-05-25 20:18:47
    谈及C语言,我想凡是学过它的朋友都有这样一种感觉,那就是“让我欢喜让我忧。”欢喜的是,C语言功能非常强大、应用广泛,一旦掌握了后,你就可以理直气壮地对他人说“我是电脑高手!”,而且以后若是再自学其他语言...
  • C语言 C语言基础

    千次阅读 多人点赞 2018-11-18 19:42:02
    C语言 C语言基础 一、简述 对于C语言基础相关方面的表面理解,简单介绍。 二、二进制 生活中常用的是十进制,基数0,1,2,3,4,5,6,7,8,9,。满10进1。 时钟60进制。基数0,1,2...57,58,59。满60进1。60秒为1分钟...
  • C语言基础知识梳理总结

    万次阅读 多人点赞 2017-03-06 09:54:48
    C语言是当代人学习及生活中的必备基础知识,应用十分广泛,下面为大家带来C语言基础知识梳理总结,C语言零基础入门绝对不是天方夜谭!
  • C语言标识符有哪三

    千次阅读 2020-11-10 18:00:52
    C语言标识符有哪三 C语言标识符有关键字、用户标识符、预定义标识符三C语言规定,标识符只能由字母、数字和下划线组成,并且第一个字符必须是字母或下划线,不能是数字。 C语言中的标识符可分为关键字、用户...
  • C语言基础

    万人学习 2020-01-08 14:13:00
    一、C语言自我YY 1)、C语言是许多高级计算机语言的基础,学好C语言能更好的学习其他高级语言,为以后的学习打基础;往深学C语言的话那就是学到C在Linux里的应用,Linux十分强大。 2)、C语言是一种计算机程序设计语言...
  • C语言中没有string

    千次阅读 2015-10-19 18:13:14
    C语言里有这个头文件,但是C语言里没有string这个类型 字符串都是通过char数组来存储的 这个头文件里声明的函数原型也全是针对char数组的种种操作。 直到C++中才出现了string这个
  • C语言实现C++ 中的

    万次阅读 2017-03-11 21:58:09
    华科复试面试题:C语言如何实现C++ 中的 #include <stdio.h> //C 语言没有,但可以用结构体充当一个 //与不同,结构体只能定义变量,不能够定义函数,可以通过函数指针的方法来实现其功能 //定义...
  • C语言中函数的分类

    千次阅读 2019-10-05 03:51:53
    C语言中函数被分为两,一是系统提供的标准函数,又称库函数。标准函数由系统定义,在程序中可以直接调用,例如:printf(),scanf()等。另一是用户自己定义的函数。 用户自己定义函数要遵循一定的规则,而且...
  • c语言中static关键字用法详解

    万次阅读 多人点赞 2018-04-05 18:18:14
    static关键字在c语言中比较常用,使用恰当能够大大提高程序的模块化特性,有利于扩展和维护。 但是对于c语言初学者,static由于使用灵活,并不容易掌握。本文就static在c语言中的应用进行总结,供参考使用。错漏...
  • C语言实现c++的

    千次阅读 2018-02-28 16:06:45
    C语言实现对c++的封装其实也就是用结构体作为c++的属性,用全局函数(这个函数的入参是这个结构体指针和其他参数)作为的方法或行为。 struct Time { int Hour; int Min; int Sec; }; void SetTime(struct ...
  • C语言学习路线图

    万次阅读 多人点赞 2020-08-05 13:33:41
    C语言是当代人学习及生活中的必备基础知识,应用十分广泛,下面为大家带来C语言基础知识梳理总结,C语言零基础入门绝对不是天方夜谭! 1、环境篇(ubuntu 系统安装 及环境调试) 学习内容:ubuntu 虚拟机安装以及...
  • c语言结构体到c++的演化过程
  • 【C/C++】C语言特性总结

    万次阅读 多人点赞 2019-08-10 16:21:28
    已经有大约半年的时间没有碰C语言了,当时学习的时候记录了很多的笔记,但是都是特别混乱,后悔那个时候,不懂得写博客,这里凭借记忆和零零散散的笔记记录,尝试系统性地复习一下C语言。 之前都是在Windows环境下...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 384,472
精华内容 153,788
关键字:

c语言类

c语言 订阅