20150912华为机考2之输入一段字符串(英文),将每个单词首字母大写后输出

news/2024/11/24 9:38:19/

还有其他一些(隐性)要求(要不然无法通过测试):

1.如果首字母已经大写,则不用变
2.不是英文字母的不变
e.g.
Input:  hello world! this is _Ljj speaking!
Output:  Hello World! This Is _ljj Speaking!

 

 

思路写在注释里面了

/*  Input a string*  Output: uppercase the first character of evrey word*          if already uppercased, or other ascii-ch, no change on them**  The way of thinking: using ascii*  e.g. 'A'+32 = 'a'*
**/
#include <stdio.h>
#include <string.h>
#define MAX_NUM 128int main(){char s[MAX_NUM]={0};fgets(s, MAX_NUM, stdin);int len = (int)strlen(s);if(s[0]>='a' && s[0]<='z')s[0] -= 32;for(int i=0; i<len; i++){if(s[i] == ' '){if(s[i+1]>='a' && s[i+1]<='z')s[i+1] -= 32;}}printf("%s\n", s);return 0;
}

 

对于C,字符串的输入有几点需要注意:

1.  如果想要把一个字符串读到程序中,必须首先预留存储字符串的空间(一般先建立一个字符串数组,而且是已经分配好大小的。例如 char str[80];),然后使

   用输入函数来获得这个字符串;

2.  输入函数需要知道输入什么时候结束,gets(char *)知道换行才结束,结束时添加空字符 '\0',然后传给程序(所以要位'\0'预留空间);

3.  fgets(<#char *restrict#>, <#int#>, <#FILE *#>) 有三个参数,第一个是存放输入进去的字符串的,第二个是长度限制,需要填写最大允许输入字符

   数,如果填n,最多读n-1个字符,或者到换行符停止。第三个参数说明读哪个文件,从键盘读取数据时,填stdin(在stdio.h中定义);

4.  gets()不检查预留存储区是否能够容纳实际输入的数据,多出来的字符会溢出到相邻内存区域,所以不安全。书中给的一个例子,以前一些操作系统代码使用

   get(),于是有黑客利用这个弱点,用很长的输入覆盖操作系统代码,这就是曾经的“蠕虫(worm)病毒”。而fgets()限制了长度,因此更安全的方式是用

   fgets()代替gets();

5.  scanf(<#const char *restrict, ...#>)遇到空白字符(如空格,制表符,换行符)就停止,所以它更多用于获取单词(get word)而非获取

   字符(get string) ;

 

 

 

 

参考:《C Primer Plus 5th Edition》

 

 

ps: 博客园网页端对Safari支持好像不太好

转载于:https://www.cnblogs.com/Cmfvacks-IsLjj/p/4805607.html


http://www.ppmy.cn/news/796738.html

相关文章

在计算机中这样切换大小英语字母,英文大小写转换器在线

手机评站网今天精心准备的是《英文大小写转换器在线》&#xff0c;下面是详解&#xff01; 英文的大小写转换 我需要一个软件可以输入数字转换成英文的举例122&#xff1a;ONEHUNDREDANDTWENTYTWO242341&#xff1a;TWOHUNDREDANDFORTYTWOTHOUSANDTHREEHUNDREDANDFORTYONE第一个…

EL表达式遇到实体类首字母大写

错误&#xff1a;今天同事出了一个错&#xff0c;报错信息如下图所示 意思是在实体类中没找到这个属性。去实体类看了一下&#xff0c;有这个属性啊&#xff0c;get方法也自动生成了&#xff0c;怎么会没有. 看了好几遍才发现他实体类字段首字母是大写的&#xff0c;而在el表达…

机器学习实战:K-近邻(KNN)算法识别26个大写英文字母(A到Z)(含拍照检验步骤详解)

步骤一&#xff1a;收集数据集 数据集来自于Character Recognition in Natural Images网站。 具体的文件链接为&#xff1a;link 中的EnglishHnd.tgz文件。 在该文件夹中&#xff0c;Img文件内含有Sample001—Sample062等62个文件&#xff0c;每个文件中含有55张900*1200像素的…

Ps部分重点

基本快捷键的使用: CtrlN 新建 CtrlO 打开 Ctrl 放大 Ctrl- 缩小 Ctrl1 100% Shift-Ctrl-l 反选 基本抠图功能&#xff1a;钢笔工具&#xff0c;套索工具&#xff0c;魔棒&#xff0c;橡皮擦&#xff0c;蒙版&#xff0c;通道等&#xff08;抠图工具很多&#xff0c;了解…

Java去除中英文标点符号

利用的是Unicode编码&#xff0c;Unicode 编码并不只是为某个字符简单定义了一个编码&#xff0c;而且还将其进行了归类。 \pP 其中的小写 p 是 property 的意思&#xff0c;表示 Unicode 属性&#xff0c;用于 Unicode 正表达式的前缀。 大写 P 表示 Unicode 字符集七个字符…

linux命令ps详解

原文地址&#xff1a;http://apps.hi.baidu.com/share/detail/32573968 名称&#xff1a;ps 使用权限&#xff1a;所有使用者 使用方式&#xff1a;ps [options] [--help] 说明&#xff1a;显示瞬间行程 (process) 的动态 参数&#xff1a;ps的参数非常多, 在此仅列出几个常用…

怎么给大写字母标声调

用搜狗输入法设置&#xff1a;给大写字母标声调 1、切换输入法使它悬浮在桌面&#xff0c;如图&#xff1a; 2、打开word&#xff0c;点击小键盘图标---->打开软键盘----->选择“拼音字母”&#xff0c;如图: &#xff08;1&#xff09;先输入&#xff1b; &#xff08…

ps命令解释

名称&#xff1a;ps 使用权限&#xff1a;所有使用者 使用方式&#xff1a;ps [options] [--help] 说明&#xff1a;显示瞬间行程 (process) 的动态 参数&#xff1a;ps的参数非常多, 在此仅列出几个常用的参数并大略介绍含义 -A 列出所有的进程 -w 显示加宽可以显示较多…