Coursera课程笔记----计算导论与C语言基础----Week 11
C程序中的字符串(Week 11)
字符数组
所有的字符串,都是以\0结尾的
只能在数组定义并初始化的时候:char c[6] = "China";
不能用赋值语句将一个字符串常量或字符数组直接赋给另一个字符数组
可以利用二维字符数组存储多个字符串
字符/字符数组/字符串的输入与输出
输入的过程
输入缓冲区
输入的时候会有一个指针标定我们读取到哪里(缓冲区指针)
用cin输入数据
连续输入的情况 while(cin>>i)
一个字符的输入和输出
- 方法一:直接用cin输入字符(cin会把空格和回车当作数据之间的间隔符号,不认为其本身是数据)
- 方法二:从cin.get()函数输入字符
- 用于读入一个字符
- 可无参数or一个参数(char)
- 该方法不会忽略空格和回车,而是当作普通字符处理
- 方法三:用cin.get(char)输入字符
- 读取一个值赋给char
- 该方法不会忽略空格和回车,而是当作普通字符处理
- 方法四:用getchar()输入字符
- 该方法不会跳过任何字符,包括结束符。
一串字符的输出
- 用cout输出字符数组:在遇到\0后中止
一串字符的输入
- 方法一:直接用cin输入字符串(cin会把空格和回车当作字符串之间的间隔符号)
- 方法二:用cin.get()函数输入
- 有3个参数的get函数 cin.get(ch,10,'\n'); //读取10-1个字符(包含空格)赋给ch,如果在读取10-1个字符之前碰到了设定的中止字符,则结束。读取成功返回真,失败返回假。
- 方法三:用cin.getline()函数输入(参数同上)
- getline和get的区别
- getline遇到终止标志字符时结束,缓冲区指针移到终止标志字符之后
- get遇到终止字符是停止读取,指针不移动
- cin.getline更常用,因为中止字符通常都是换行符,因此getline比较方便
- getline和get的区别
#include<iostream>
using namespace std;
int main()
{
char a[10][10];
int n = 0;
cin >> n;
cin.get(); //添加一条语句,“拿走”上一句话指针停止在的换行符
for(int i = 0; i < n; i++)
cin.getline(a[i],10);
for(int i = 0; i < n; i++)
cout<<a[i]<<endl;
return 0;
}
字符串应用
例1 字符串加密
问题
- 输入一个字符串,把每个字符变成它的后续字符,然后输出变换后的字符,要求能够接受连续输入。
思路
- 读入字符串(想一下以什么方式输入?)
- 从字符头到尾循环:
- 是‘Z'/‘z’则直接赋值’A'/‘a’,跳过以下步骤
- 空格不做处理,跳过以下步骤
- 其他字符++
- 输出新字符串
#include<iostream>
using namespace std;
int main()
{
char str[200];
while(cin.getline(str,200))
{
for(int i = 0; str[i] !='/0';i++)
{
if(str[i] == 'Z')
{
str[i] = 'A';
continue;
}
if(str[i] == 'z')
{
str[i] = 'a';
continue;
}
if(str[i] == ' ')
continue;
str[i]++;
}
cout<<str<<endl;
}
return 0;
}
例2 字符串链接
问题
- 输入两个字符串,将其中较短的串接到较长的串的后面
要求
- 不使用系统函数strcat
- 每个输入的串的长度不超过20
思路
定义: char str1[40],str2[40]; cin.getline(str1,20);cin.getline(str2,20);
计算长度: for(len1 = 0; str1[len1]!='\0';len1++);for(len2 = 0; str2[len2]!='\0';len2++);
拼接:第一个串的下标指向最后一个元素之后,第二个串的下标指向第一个元素
for(len2 = 0; str1[len2]!='\0';len2++);
str1[len1++] = str2[len2];
str1[len1]='/0'; //加上\0就变成了一个字符串
#include<iostream>
using namespace std;
int main()
{
int len1,len2;char str1[40],str2[40];
cin.getline(str1,20);cin.getline(str2,20);
for(len1=0;str1[len1]!='\0';len1++);
for(len2=0;str2[len2]!='\0';len2++);
if(len1 >= len2)
{
for(len2 = 0; str2[len2]!='\0';len2++)
str1[len1++] = str2[len2];
str1[len1] = '\0';
}
else
{
for(len1 = 0; str2[len1]!='\0';len1++)
str2[len2++] = str1[len1];
str2[len2] = '\0';
}
cout<<str1<<endl;
cout<<str2<<endl;
return 0;
}
例3 统计单词数
- 问题
- 输入一个英文句子(不超过80个字母),统计其中有多少个单词,单词之间用空格分开
#include<iostream>
using namespace std;
int main()
{
char str[80];
int num = 0, flag = 0;
cin.getline(str,80);
for(int i = 0; str[i]!='\0';i++)
{
if(str[i] == ' ')
flag = 0;
else if(flag == 0)
{
flag = 1;
num++;
}
}
cout<<"字符串中有"<<num<<"个单词"<<endl;
return 0;
}
Coursera课程笔记----计算导论与C语言基础----Week 11的更多相关文章
- Coursera课程笔记----计算导论与C语言基础----Week 6
理性认识C程序 导论(Week 6) 明确学习进度 讲课内容 感性➡️理性➡️函数➡️指针等 作业练习 初级阶段 ➡️正常作业练习 C语言的由来 程序设计语言的分类 低级语言之机器语言 0010101 ...
- Coursera课程笔记----计算导论与C语言基础----Week 8
C语言中的运算成分(Week 8) 赋值运算符 "="赋值运算符 给赋值号左边的变量赋予数值 在变量定义的同时可以为变量赋初值 要点一:两面类型不同 若=两边的类型不一致,赋值时要 ...
- Coursera课程笔记----计算导论与C语言基础----Week 7
C语言中的数据成分(Week7) 内存 把内存想象成长带,带子上有许多方格,每个方格有8位(8bit) 2^10 = 1024 1B = 8 b 1KB = 1024Byte MB.GB.TB.PB- ...
- Coursera课程笔记----计算导论与C语言基础----Week 4
感性认识计算机程序(Week 4) 引入 编程序 = 给计算机设计好运行步骤 程序 = 人们用来告诉计算机应该做什么的东西 问题➡️该告诉计算机什么?用什么形式告诉? 如果要创造一门"程序设 ...
- Coursera课程笔记----计算导论与C语言基础----Week 2
计算机的历史与未来(Week 2) 计算机历史 早期计算机:手工计算器➡️机械计算器➡️计算机原型 现代计算机:电子管计算机➡️晶体管计算机➡️集成电路计算机➡️超大规模集成电路 早期的手工计算辅助工 ...
- Coursera课程笔记----计算导论与C语言基础----Week 9
C语言中的控制成分(Week 9) 计算机程序的基本结构 任何具有单入口单出口的程序,都可以用顺序结构.分支结构.循环结构来表达 分支语句 在执行if语句前,先对表达式求解 if()内可以是任意的数值 ...
- Coursera课程笔记----计算导论与C语言基础----Week 3
存储程序式计算机 冯·诺伊曼式计算机 "关于EDVAC的报告草案" 组成:控制器(协调工作).运算器(算数&逻辑运算).存储器(存储操作信息和中间结果).输入设备.输出设备 ...
- Coursera课程笔记----计算导论与C语言基础----Week 1
计算机的基本原理(Week 1) 第一次数学危机 公元前500年,毕达哥拉斯学派,他们相信数是万物的本源:一切数均可表示成整数或者整数之比 然而毕达哥拉斯证明了勾股定理,某些直角三角形的三边比不能用整 ...
- Coursera课程笔记----计算导论与C语言基础----Week 12
期末编程测试(Week 12) Quiz1 判断闰年 #include <iostream> using namespace std; int main() { int year; cin ...
随机推荐
- Docker-Bridge Network 02 容器与外部通信
本小节介绍bridge network模式下,容器与外部的通信. 1.前言2.容器访问外部2.1 访问外网2.2 原理2.3 一张图总结2.4 抓包3.外部访问容器3.1 创建nginx容器并从外部访 ...
- Python-气象-大气科学-可视化绘图系列(一)——利用xarray读取netCDF文件并画图(代码+示例)
本文原创链接:https:////www.cnblogs.com/zhanling/p/12192978.html 1 import numpy as np import xarray as xr i ...
- stand up meeting 11/30/2015
part 组员 今日工作 工作耗时/h 明日计划 工作耗时/h UI 冯晓云 完善了UI的各项功能,弹窗的显示格式等方面的规范:解决logic部分调用该dll的问题:解决鼠标事件的捕捉中~ ...
- B - Bash and a Tough Math Puzzle CodeForces - 914D (线段树的巧妙应用)
题目大意:当输入2时,将p处的点的值修改为x, 当输入1时,判断区间[L,R]的gcd是否几乎正确,几乎正确的定义是最多修改一个数,使得区间[L,R]的gcd为x. 题解:用线段树维护一个gcd数组, ...
- Complete the Sequence HDU - 1121
题目大意: 输入两个数n和m,n表示有n个数,这n个数是一个多项式的前n项,让输出这个序列的n+1,n+2,..n+m项. 题解:差分规律,一直差分,直到全为0或者只剩下一个数.然后再递推回去. 给出 ...
- JSP中引用CSS样式文件却无法显示的问题解决方案
你也遇到过这种问题吗,CSS写好了,JSP写好了,在JSP中调用CSS文件,路径检查后也正确,但是无法显示渲染后的页面 原因:罪魁祸首就是过滤器响应数据的时候,响应头设置为了“text/html”,但 ...
- hadoop 伪分布配置
配置 Hadoop 伪分布式 任务配置说明: VMware 15 Centos 6.5 java -jdk 1.8 hadoop-2.6.0-cdh5.14.0.tar.gz 第一步 自行安装虚拟机 ...
- CentOS6.5环境下搭建Apache httpd服务器
前期准备: 1.CentOS6.5虚拟系统: 2.CentOS6.5 IP地址:192.168.2.99 3.虚拟系统能上外网 下面我们就开始配置: 第一步:安装 首先我们需要把Apache http ...
- 基于Koa实现留言版demo
学习node.koa,随手做了一个留言板demo. 基本功能如下: 未登录用户可以查看主题列表和主题内容. 用户注册和登录功能. 登录用户可以发表.修改.删除自己的主题. 登录用户主题列表下方有发表主 ...
- pytorch seq2seq闲聊机器人
cut_sentence.py """ 实现句子的分词 注意点: 1. 实现单个字分词 2. 实现按照词语分词 2.1 加载词典 3. 使用停用词 "" ...