第10章习题C
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10.19 请编写函数mygets和myputs,其功能分别与gets和puts相同,函数中用getchar和putchar诗篇和输出字符。
#include
#define M 81
void mygets(char s[])
{
/*
int i=0;
while((s[i]=getchar())!='\n')i++;
s[i]='\0';
*/
while((*s=getchar())!='\n')s++;
*s='\0';
}
void myputs(char s[])
{
/*
int i=0;
while(s[i]) putchar(s[i++]);
putchar('\n');
*/
while(*s) putchar(*s++);
putchar('\n');
}
void main()
{
char str[M];
/*
printf("输入一个字符串:");
gets(str);
printf("str="); puts(str);
*/
printf("输入一个字符串:");
mygets(str);
printf("str="); myputs(str);
}
10.20 请编写函数,判断一字符串是否是回文。若是回文函数返回值为1;否则返回值为0。回文是顺读和倒读都一样的字符串。
#include
#include
#define M 81
int ishuiwen(char s[])
{
/*
int i,j;
i=0;
j=strlen(s)-1;
while(s[i]==s[j]&i
if(s[i]==s[j])
return 1;
else
return 0;
*/
char *ps,*pe;
ps=s;
pe=s+strlen(s)-1;
while(*ps==*pe&ps
if(!(ps
else
return 0;
}
void main()
{
char str[M];
printf("输入一个字符串:");
gets(str);
if(ishuiwen(str))
printf("%s是回文。\n",str);
else
printf("%s不是回文。\n",str);
}
10.21 请编写函数,删除字符串中指定位置(下标)上的字符。删除成功函数返回被删字符,否则返回空值。
#include
#include
#define M 81
char delchar(char s[],int pos)
{
/*
int i;
char tmp;
if(pos<0||pos>strlen(s)-1)
return 0;
tmp=s[pos];
for(i=pos;i
s[i]='\0';
return tmp;
*/
char *ps,*pe,ch;
ps=s+pos;
pe=s+strlen(s)-1;
if(ps>=pe)
return 0;
ch=*ps;
while(*ps)
*ps=*(ps+1),ps++;
*ps='\0';
return ch;
}
void main()
{
char str[M],delc;
int postion;
printf("输入一个字符串:");
gets(str);
printf("删除之前:str=%s\n",str);
printf("输入删除的下标:");
scanf("%d",&postion);
delc=delchar(str,postion);
if(delc)
{
printf("删除成功,删除的字符为:%c\n",delc);
printf("删除之后:str=%s\n",str);
}
else
printf("删除失败。\n");
}