strcmp的规则是:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。
成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都做网站、网站制作、柯坪网络推广、小程序设计、柯坪网络营销、柯坪企业策划、柯坪品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联为所有大学生创业者提供柯坪建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com
strcmp(str1,str2)是str1小于str2时返回小于零的值,大于返回大于零的值,此题中t指的就是s2,B选项s1s2位置反了。D是对的。
#include stdio.h
#include string.h
void delch(char s[], char ch)
{
int i, j;
for (i = strlen(s); i = 0; i--)
if (s[i] == ch)
break;
for (j = i ; s[j] != '\0'; j++)//==============
s[j] = s[j+1];//================
//s[j] = '\0';
}
void main()
{
char s[] = "##Chinese#";
delch(s, 'e');
puts(s);
}
#includelt;stdio.hgt;
#includelt;string.hgt;
#define MAXS 10
void Shift(char s[]);
void GetString(char s[]);/*实现细节在此不表*/
int main()
{
char s[MAXS];
GetString(s);
Shift(s);
printf("%s\n",s);
return 0;
}
/*你的代码将被嵌在这里*/
代码:
void Shift(char s[])
{
int len=strlen(s);
if(len==3);
else
{
int i;
char str[100];
int t=0;
for(i=0;ilt;3;i++)
{
strlt;igt;=slt;igt;;
}
for(i=3;ilt;len;i++)
{
s[t++]=slt;igt;;
}
for(i=0;ilt;3;i++)
{
s[t++]=strlt;igt;;
}
}
}
扩展资料:
include用法:
#include命令预处理命令的一种,预处理命令可以将别的源代码内容插入到所指定的位置;可以标识出只有在特定条件下才会被编译的某一段程序代码;可以定义类似标识符功能的宏,在编译时,预处理器会用别的文本取代该宏。
插入头文件的内容
#include命令告诉预处理器将指定头文件的内容插入到预处理器命令的相应位置。有两种方式可以指定插入头文件:
1、#includelt;文件名gt;
2、#include"文件名"
如果需要包含标准库头文件或者实现版本所提供的头文件,应该使用第一种格式。如下例所示:
#includelt;math.hgt;//一些数学函数的原型,以及相关的类型和宏
如果需要包含针对程序所开发的源文件,则应该使用第二种格式。
采用#include命令所插入的文件,通常文件扩展名是.h,文件包括函数原型、宏定义和类型定义。只要使用#include命令,这些定义就可被任何源文件使用。如下例所示:
#include"myproject.h"//用在当前项目中的函数原型、类型定义和宏
你可以在#include命令中使用宏。如果使用宏,该宏的取代结果必须确保生成正确的#include命令。例1展示了这样的#include命令。
【例1】在#include命令中的宏
#ifdef _DEBUG_
#define MY_HEADER"myProject_dbg.h"
#else
#define MY_HEADER"myProject.h"
#endif
#include MY_HEADER
当上述程序代码进入预处理时,如果_DEBUG_宏已被定义,那么预处理器会插入myProject_dbg.h的内容;如果还没定义,则插入myProject.h的内容。
#includestdio.h
#includestring.h
#includestdlib.h //exit函数头文件
int main(void)
{
char a[30],b[30]; //存放字符串数组,数组长度可以稍微长点
char ch; //存放临时字符
int length_a,length_b; //统计字符串长度
int i = 0,j = 0;
//scanf("%s",a);
//为什么不用scanf %s:scanf遇到空格即停止,所以如果输入abc 123的话只会存入abc.下面用条件语句实现
//存入字符串a
printf("请输入字符串a并按enter键结束:");
while((ch = getchar()) != '\n')
{
i++;
if(i 30)
{
printf("输入的字符串太长,请按enter键退出重试。\n");
exit(1);
}
else
a[j++] = ch;
}
a[j] = '\0'; //添加字符串结束标识
i = 0; //重置计数变量
j = 0;
//存入字符串b
printf("请输入字符串b并按enter键结束:");
while((ch = getchar()) != '\n')
{
i++;
if(i 30)
{
printf("输入的字符串太长,请按enter键退出重试。\n");
exit(1);
}
else
b[j++] = ch;
}
b[j] = '\0';
//得出两字符串长度
length_a = strlen(a);
length_b = strlen(b);
printf("您输入的a、b字符串依次为:\n");
printf("a:%s\n",a);
printf("b:%s\n",b);
//如果a长度大于b长度,则交换
if(length_a length_b)
{
printf("\na较长,需交换,交换后的结果为:\n");
for(i = 0; i length_a;i++)
{
ch = a[i];
a[i] = b[i];
b[i] = ch;
}
for(i = length_a; i length_b; i++)
{
b[i] = a[i];
}
a[length_b] = '\0';
b[length_a] = '\0';
}
else
printf("\na较短,不需交换,结果仍为:\n");
printf("a:%s\n",a);
printf("b:%s\n\n",b);
return 0;
}
p+strlen(q)=p+3,指向p中的字符d的位置,所以strcpy(p+strlen(q),r);是将p变成了abcabcde,然后strcat(p,q)是字符串连接,将q接到p后面,p变成abcabcdeabc,所以strlen(p)=11.
sizeof(p)是不变的20.
另外,最后一句代码的括号位置错了,应该是
printf("%d %d\n",sizeof(p),strlen(p));
#includestdio.h
#includestring.h
void trim1(char *a)
{
int n;
n=strlen(a);
for(;n0;n--) //去除a后的空格;
{
if(a[n-1]==' ')
a[n-1]='\0';
else
break;
}
strrev(a); //去除a前的空格;先翻转字符,处理后再翻转;
n=strlen(a);
for(;n0;n--) //去除a后的空格;
{
if(a[n-1]==' ')
a[n-1]='\0';
else
break;
}
strrev(a);
}
void trim2(char *a)
{
char s[10000]; //注意这里的数组长度,要保证数组不越界!!!
int n,i,d=0;
n=strlen(a);
for(i=0;in;i++) //去空格;
{
if(a[i]!=' ')
s[d++]=a[i];
}
for(i=0;id;i++) //把处理好的字符复制到a中;
a[i]=s[i];
a[i]='\0';
}
void rev(char *a)
{
int n,i,m;
char s;
n=strlen(a);
for(i=0,m=n/2;im;i++)
{
s=a[i];
a[i]=a[n-i-1];
a[n-i]=s;
}
}
int main ()
{
char a[]=" a b c dd e",b[]=" a b c dd e";
trim1(a);
puts(a);
trim2(b);
puts(b);
rev(a);
puts(a);
return 0;
}
vc测试正确,不过能力有限,不会优化;