单词首字母大写##15

要点:1.小写字母-32就是大写字母【对应ascal表】

2.putchar完了过后就可以getchar了,避免出错。

3.变大写的情况:1.首字母:特点它的字母前面【‘前面’用另一个变量表示】有空格2.第一个字母大写【flag=1时,代表新的开头,所以判断是不是小写;flag=0时,正常输出即可】,当然我们也可以char[i-1]与char[i]。

/*单词首字母大写*/
#include <stdio.h>

int main() {
	int ch, flag = 1;
	ch = getchar();
	while (ch != '\n') {
		if (flag == 1) {//这里的flag是依据着之前的ch的字符,来判断是不是新开头的字母
			if (ch >= 'a' && ch <= 'z') {
				ch -= 32;
				flag = 0;
			} else {
				flag = 0;
			}
		}
		if (ch == ' ') {
			flag = 1;//预示着【下一位】小写变大写
		}
		putchar(ch);//无论标志(flag)怎么变,这一次的输出还是不变。
		ch = getchar();
	}
	return 0;
}

我同学的:

#include<stdio.h>
int main(){
 char ch,prew=' ';
 while((ch=getchar())!='\n'){
  if (ch>='a'&&ch<='z'&&prew==' ') ch-=32;
  printf("%c", ch);//注意这两步顺序
  prew=ch;//由于prew慢了一步,所以ch到下一个字母开头时prew仍然是空格,很巧妙!
 }
 return 0;
}

!!!羡慕,总要超过你!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值