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

.如果首字母已经大写,则不用变
.不是英文字母的不变
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 128 int main(){
char s[MAX_NUM]={};
fgets(s, MAX_NUM, stdin);
int len = (int)strlen(s); if(s[]>='a' && s[]<='z')
s[] -= ;
for(int i=; i<len; i++){
if(s[i] == ' '){
if(s[i+]>='a' && s[i+]<='z')
s[i+] -= ;
}
}
printf("%s\n", s); return ;
}

对于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支持好像不太好

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

  1. java String中的replace(oldChar,newChar) replace(CharSequence target,CharSequence replacement) replaceAll replaceFirst 面试题:输入英文语句,单词首字符大写后输出 char String int 相互转换

    package com.swift; import java.util.Scanner; public class FirstChat_ToCaps_Test { public static void ...

  2. 20150912华为机考1之"输入一个字符串,将其中出现次数最多的字符输出"

    不吐槽华为的服务器了,直接上正文 输入:字符串(英文字母),长度不超过128 输出:出现频率最高的字母 思路写在注释文档 /* Input a string * Output the most fre ...

  3. Microsoft office word关闭英文输入首字母大写设置

    1.概述: 在使用office word的时,经常出现输入一段不需首字母大写的英文时,通常敲击完回车时word会自动将首字母大写,需要重新将首字母修改成小写,这样操作很不方便.于是需要对这个功能进行一 ...

  4. 输入一段字符串,统计其中的数字,字母,空格,其他字符的方法 ----python---

    1.以简单的循环分支实现字符统计 str1 = input("输入字符串:") num=0;word=0;space=0;other=0; for i in str1: if i. ...

  5. 字符串数组 输入3个字符串,要求按由小到大的字母顺序输出; 输入n个学生的姓名和学号到字符串数组中,在输入一个姓名,如果班级有该生则返回其信息,否则返回本班无此人

    输入3个字符串,要求按由小到大的字母顺序输出 如 输入franch england china,输出结果是china england franch 三个数排序输出,比较三个数的大小怎么做? a=18 ...

  6. Java练习小题_求一个3*3矩阵对角线元素之和,矩阵的数据用行的形式输入到计算机中 程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。

    要求说明: 题目:求一个3*3矩阵对角线元素之和,矩阵的数据用行的形式输入到计算机中 程序分析:利用双重for循环控制输入二维数组,再将 a[i][i] 累加后输出. 实现思路: [二维数组]相关知识 ...

  7. 2014华为机试西安地区B组试题

    2014华为机试西安地区B组试题 题目一.亮着点灯的盏数 一条长廊里依次装有n(1≤n≤65535)盏电灯,从头到尾编号1.2.3.-n-1.n.每盏电灯由一个拉线开关控制.開始,电灯所有关着. 有n ...

  8. 2014华为机试西安地区A组试题

    2014华为机试西安地区A组试题 题目一.分苹果 M个同样苹果放到N个同样篮子里有多少种放法,同意有篮子不放. 1<=M<=10.1<=N<=10 比如5个苹果三个篮子,3,1 ...

  9. [华为机试练习题]55.最大公约数 &amp; 多个数的最大公约数

    题目 描写叙述: 输入2个数字,最后输出2个数字的最大公约数 题目类别: 位运算 难度: 0基础 执行时间限制: 无限制 内存限制: 无限制 阶段: 入职前练习 输入: 2个整数 输出: 输出数字1和 ...

随机推荐

  1. 创建Google网站地图Sitemap.xml

    Sitemap.xml是google搞出来的,也就是网站地图,不过这个网站地图是用xml写的,而且要按google的标准来写,并且要将写出来的这个文件sitemap.xml上传到自己的服务器空间中去. ...

  2. 怎样在C#中从数据库中读取数据(数据读取器)

    实现在C#中通过语句,查询数据库中的数据 SqlConnection con = null; //创建SqlConnection 的对象 try    //try里面放可能出现错误的代码        ...

  3. jquery ajax跨域访问webservice配置

    1.webservice方法 [System.Web.Script.Services.ScriptService] public class TestService : System.Web.Serv ...

  4. uml中的几种关系

    这是一堂关于UML基础知识的补习课:现在我们做项目时间都太紧了,基本上都没有做过真正的class级别的详细设计,更别提使用UML来实现规范建模了:本篇主要就以前自己一直感觉很迷糊的几种class之间的 ...

  5. java设计模式--工厂模式

       所谓工厂,就是要造产品,比如一个小型砖瓦厂,只有一个窑,既能造砖又能造瓦,这种叫简单工厂模式.规模稍大一点呢,我多个窑,有的窑专门造砖,有的窑专门造瓦,想造别的,比如瓷砖,我再用个专门的窑,这种 ...

  6. 启动Eclipse 弹出"Failed to load the JNI shared library jvm.dll"错误

    启动Eclipse 弹出"Failed to load the JNI shared library jvm.dll"错误,如下 原因:eclipse的版本与jre或者jdk版本不 ...

  7. mysql查询今天,昨天,近7天,近30天,本月,上一月数据的方法(摘录)

    mysql查询今天,昨天,近7天,近30天,本月,上一月数据的方法分析总结: 话说有一文章表article,存储文章的添加文章的时间是add_time字段,该字段为int(5)类型的,现需要查询今天添 ...

  8. netty Failed to submit an exceptionCaught() event异常

    最近测试netty开发的服务端应用在关闭时,出现下列异常: ->###WARN#########nioEventLoopGroup-3-2###io.netty.util.internal.lo ...

  9. API的非向后兼容性无论如何通常代表着一种比较差的设计

    不管一个类库或者工具方法实现多么的好,如果无法做到向后兼容性,通常会给用户带来很大的升级成本,很多对此的依赖如果希望在后续的升级和维护期间使用该类库的其他新增特性或者好处,将不得不推迟升级亦或是被迫接 ...

  10. RHEL7管道与重定向

    文件描述符 可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操作 用户可以自定义文件描述符范围是:3-num,这个最大数字,跟 ...