1.
(1)10,strlen字符串实际元素长度
(2)10,
(3)4,指针大小
(4)11 字符串大小,包括'\0'
2.
(1)const修饰指针,可以修改指针指向,不能修改内容
(2)同上
(3)const修饰地址,可以修改内容,不能修改指针指向
3.
5,同数组地址相减是相差元素的个数,a[2]=5
4.
6,4,4,5
(1)算上'\0',sizeof是开辟空间大小
(2)指针大小
(3)4,int类型大小
(4)实际元素数量
5.
6,24,同数组相减为元素相隔数量,int型转换*4个字节
6.
给定一串字符"I love china",实现以单词为单位的逆序,如:"china love i"
思路:可以先全部倒过来:anihc evol i,然后再把每个单词倒过来---- 根据空格确定单词--空格既是一个单词的开头又是一个单词的结尾
空格既是一个单词的开头又是一个单词的结尾,所以找到空格之后我们需要暂时记录以下当前空格的位置,方便我们从当前位置找下一个空格
然后进行交换,交换完成后再从空格的后面进行查找下一个空格
#include<stdio.h>
#include<string.h>
int main(){
char a[]="",t;//定义字符串,交换变量t
gets(a);//获取字符串
char *p=a;//指向单词开头
char *q=p+strlen(a)-1;//单词结尾
char *k=NULL;//用于定位空格
while (p < q)//全部逆置
{
t=*p;
*p=*q;
*q=t;
p++;
q--;
}
puts(a);//输出倒置
p=q=a;//q,q重新定位到开头,用于确定单词开头
while(*p!='\0'){//循环遍历字符串
while(*p==' ')//当指向空格时,++指向下一个单词的开头
p++;
q=p;//从新单词开头位置开始++,用于寻找结尾
while(*q!=' '&&*q!='\0')//让q++寻找单词空格
q++;
k=q;//保存空格位置
q--;//确定单词的结尾
while(p<q){
t=*p;
*p=*q;
*q=t;
p++;
q--;//单词逆置
}
p=k;//一轮循环结束,空格赋值给p,p++后方便下一轮循环找单词开头
}
puts(a);
return 0;
}