20150912华为机考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 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之"输入一段字符串(英文),将每个单词首字母大写后输出"的更多相关文章
- 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 ...
- 20150912华为机考1之"输入一个字符串,将其中出现次数最多的字符输出"
不吐槽华为的服务器了,直接上正文 输入:字符串(英文字母),长度不超过128 输出:出现频率最高的字母 思路写在注释文档 /* Input a string * Output the most fre ...
- Microsoft office word关闭英文输入首字母大写设置
1.概述: 在使用office word的时,经常出现输入一段不需首字母大写的英文时,通常敲击完回车时word会自动将首字母大写,需要重新将首字母修改成小写,这样操作很不方便.于是需要对这个功能进行一 ...
- 输入一段字符串,统计其中的数字,字母,空格,其他字符的方法 ----python---
1.以简单的循环分支实现字符统计 str1 = input("输入字符串:") num=0;word=0;space=0;other=0; for i in str1: if i. ...
- 字符串数组 输入3个字符串,要求按由小到大的字母顺序输出; 输入n个学生的姓名和学号到字符串数组中,在输入一个姓名,如果班级有该生则返回其信息,否则返回本班无此人
输入3个字符串,要求按由小到大的字母顺序输出 如 输入franch england china,输出结果是china england franch 三个数排序输出,比较三个数的大小怎么做? a=18 ...
- Java练习小题_求一个3*3矩阵对角线元素之和,矩阵的数据用行的形式输入到计算机中 程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。
要求说明: 题目:求一个3*3矩阵对角线元素之和,矩阵的数据用行的形式输入到计算机中 程序分析:利用双重for循环控制输入二维数组,再将 a[i][i] 累加后输出. 实现思路: [二维数组]相关知识 ...
- 2014华为机试西安地区B组试题
2014华为机试西安地区B组试题 题目一.亮着点灯的盏数 一条长廊里依次装有n(1≤n≤65535)盏电灯,从头到尾编号1.2.3.-n-1.n.每盏电灯由一个拉线开关控制.開始,电灯所有关着. 有n ...
- 2014华为机试西安地区A组试题
2014华为机试西安地区A组试题 题目一.分苹果 M个同样苹果放到N个同样篮子里有多少种放法,同意有篮子不放. 1<=M<=10.1<=N<=10 比如5个苹果三个篮子,3,1 ...
- [华为机试练习题]55.最大公约数 & 多个数的最大公约数
题目 描写叙述: 输入2个数字,最后输出2个数字的最大公约数 题目类别: 位运算 难度: 0基础 执行时间限制: 无限制 内存限制: 无限制 阶段: 入职前练习 输入: 2个整数 输出: 输出数字1和 ...
随机推荐
- 剑指offer面试题30:最小的k个数
一.题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 二.解题思路 1.思路1 首先对数组进行排序,然后取出前k个数 ...
- 编程Bug集
(基础)将“/”用于取余符号,导致非预想结果——1小时后才找到错误原因 9.16
- mysqli连接数据库常见函数
mysqli_free_result() 返回最后一次查询中使用的自动生成 id,如果是多表插入,返回的是第一个被插入的id. mysqli_query($con,"INSERT INTO ...
- 【JavaEE】SSH+Spring Security基础上配置AOP+log4j
Spring Oauth2大多数情况下还是用不到的,主要使用的还是Spring+SpringMVC+Hibernate,有时候加上SpringSecurity,因此,本文及以后的文章的example中 ...
- javascript的错误处理
1 onerror事件,实例代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind= ...
- css3属性(一)
圆角效果: border-radius: 5px 4px 3px 2px; /* 四个半径值分别是左上角.右上角.右下角和左下角,顺时针 */ 阴影: box-shadow:X轴偏移量 Y轴偏移量 [ ...
- Microsoft Dynamics CRM 2013 安装程序及SDK 下载地址
Microsoft Dynamics CRM 2013 已经具有相关资料 2013 Setup (Microsoft Dynamics CRM Server 2013) 下载地址: http://ww ...
- 安卓开发--android library projects cannot be launched错误
最新因为学习,问技术友要了几个源代码,导入源代码的时候无法进行真机或者虚拟机测试. 原因:android library projects cannot be launched 百度了一下,解决方法很 ...
- 安卓开发_浅谈Service
一.Service(服务) Service是Android程序中四大基础组件之一,它和Activity一样都是Context的子类,区别在于它没有UI界面,是在后台运行的组件. public abst ...
- 谷歌的网页排序算法(PageRank Algorithm)
本文将介绍谷歌的网页排序算法(PageRank Algorithm),以及它如何从250亿份网页中捞到与你的搜索条件匹配的结果.它的匹配效果如此之好,以至于“谷歌”(google)今天已经成为一个被广 ...