/*
main.m
输入英文语句,单词首字符转换大写后输出
分析:
如何判断英文语句里面,哪些是单词?空格两边得都是单词
如何判断单词的首字母为大写?*p>='A'
语句的首字母判断,
1)为空,继续循环
2)大写,继续循环
3)小写,转换为大写!(*p-32)
如果检测到了空格就使下一个字母变为大写!()
注意:
gets() 和scanf()的区别
1.不同点:
scanf不能接受空格、制表符Tab、回车等;
而gets能够接受空格、制表符Tab;
2.相同点:
字符串接受结束后自动加'\0'。
*p 和 p 的区别
p存放的是地址,
*p是让程序去那个地址取出数据
*/
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
printf("请输入英文...\n");
char a [100];
char *p = a;
gets(p);//scanf( "%[^\n]", c); 表示可以存放除了 \n 外的其他所有字符。
//语句的首字母判断
if(*p==' '){//是空格
p++;
}else if(*p>='A'&&*p<='Z'){//是大写
p++;
}else if(*p>='a'&&*p<='z'){
*p-=32;//*p = *p-32
p++;
}
while (*p!='\0') {//语句没结束,就循环
if(*p!=' '){
p++;
}else if(*p ==' '){
p++;
if (*p>='a' && *p<='z') {
*p-=32;
}
}
}
puts(a);//打印
return 0;
}
sizeof的用法
1》当小括号里为数据类型或者一般变量时,不同的编译系统得到的结果可能是不同的,例如int类型在16位系统下2个字节,32位和64位下占4个字节
2》小括号中为数组或者指针时,int a[5];sizeof(a)=4*5=20,求的是数组的总字节数;
int *a=new int[5],sizeof(a)=4,求得是指针所占的大小,为4个字节
3》小括号中为结构和类时,用在这两种情况下,要注意以下几点:
a,结构或者类中的静态成员不对结构或者类的大小产生影响,因为静态变量的存储位置与结构或者类的实 例地址有关
b,没有成员变量的结构或者类的大小为1,因为必须保证结构或者类的没一个实例在内存中都有唯一的地址
|