IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 关于字符串的编程题(C语言版,持续更新~~~~~~) -> 正文阅读

[C++知识库]关于字符串的编程题(C语言版,持续更新~~~~~~)

题目汇总:

  1. 输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数。
  2. 字符串逆序,即输入一个字符串,然后输出逆序后的字符串。例如:输入abcde,逆序后为edcba

第1题:

解法思路:
??getchar()函数的功能是读取你所输入的字符,直到回车为止。例如,你从键盘输入abcd这个字符串,然后按回车。按了回车之后,这四个字符会被存储到键盘缓冲区,这个时候你使用getchar()函数,它会从键盘缓冲区里一个一个去读取字符;
??getchar()的返回值一般情况下是字符,但也可能是负值,即返回EOF。这里要强调的一点就是,getchar函数通常返回终端所输入的字符,这些字符系统中对应的ASCII值都是非负的。因此,很多时候,我们会写这样的两行代码:
??char c;
??c = getchar();
这样就可能出现问题。因为getchar函数除了返回终端输入的字符外,在遇到Ctrl+D(Linux下)即文件结束符EOF时,getchar ()返回的是EOF,这个EOF在函数库里一般定义为-1。此时getchar函数返回一个负值,把一个负值赋给一个char型的变量是不正确的。为了能够让所定义的变量能够包含getchar函数返回的所有可能的值,正确的定义方法如下
??int c;
??c = getchar();
??注意 ??!= 的优先级比 = 高,所以需要加上括号,即(ch = getchar())。(ch = getchar()) != '\n’这条指令会读取你输入的数据直到你按回车为止,也就是说,当输入的字符不是换行符的时候,继续往下执行;

代码如下:

#include<stdio.h>

int main(){
	//letter代表字母,number代表数字,blank代表空格,others代表其他字符,ch代表从键盘输入的字符串
    int letter = 0, number = 0, blank = 0, others = 0, ch;
    while((ch = getchar()) != '\n'){ //getchar() != '\n'这条指令会读取你输入的数据直到你按回车为止
        if((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
            letter++;
        else if(ch >= '0' && ch <= '9')
            number++;
        else if(ch == ' ')
            blank++;
        else
            others++;
    }
    printf("%d %d %d %d\n",letter,number,blank,others);
    return 0;
}


第2题:

解法1:
??库函数gets()是在头文件stdio.h中,strlen()是在string.h里,用法如下:
??1、gets():与scanf("%s",s)相似,但不完全相同,使用scanf("%s",s) 函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符串直到遇到换行为止。
??2、strlen():使用格式strlen(s)。返回s的长度,不包括结束符NULL。
??申明一个exchange()函数用来做逆序。len是数组a的长度。通过for循环,从后往前依次输出,因为数组下标是从0开始的,数组中最后一个元素的下标是len-1。输出字符用的是%c,字符串是%s

> 解法2(使用指针):
??用数组存储所输入的字符,再反向输出;

解法1的代码如下:

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

int exchange(char a[]){
    int i,len = 0;
    len = strlen(a);
    for(i=len-1; i>=0; i--){
    	printf("%c",a[i]);
    }
    return 0;
}

int main(){
    char a[1000];
    gets(a);
    exchange(a);
    return 0;
}


解法2的代码如下:

#include<stdio.h>
int main(){
    char arr[1000];
    char *p = arr;	//数组名是数组的首地址,p指向数组arr的首地址
    scanf("%s",&arr);  //字符串用%s
    while(*p!='\0'){ //字符串是以'\0'结尾,所以用这个循环找到输入的字符串的结尾'\0'  
    	p++;
    }  
    while(p!=(&arr[0])){ //找到之后从后往前输出,注意不要输出'\0'  
    	p--;  //经过上面那个while循环,此时p指向的是字符串的结尾'\0',所以先p--,让p指向最后一个字符('\0'前面的那个字符)
        printf("%c",*p);  //一个字符一个字符的输出,用%c
    }
    return 0;
 }
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-04 11:00:48  更:2021-08-04 11:03:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/9 14:31:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码