编写main()函数,输入一个字符串,调用mystrlen函数,输出串长,调用cov函数,将倒置后的字符串输出

C语言题目

编写函数int mystrlen(char *s),计算字符串的串长并返回;编写函数cov (char *s),功能是将字符串倒置;编写main()函数,输入一个字符串,调用mystrlen函数,输出串长,调用cov函数,将倒置后的字符串输出。

解题思路

总共三个函数,一为主函数main(),二为mystrlen(char *s),三为cov(char *s)。

对于主函数main,先定义一个字符串变量并输入:

char str;
scanf("%s",&str);

调用mystrlen函数直接输出:

printf("Len=%d\n",mystrlen(&str));

调用cov函数:

cov(&str);

还有,不要忘了是否需要return?这个按照个人喜好定义main函数(可能是int,也可能是void的……),int main自然需要return 0;即:

return 0;

进入到mystrlen函数的编写中,这里就是简单的字符串长度计算罢了,所以在此自定义函数中直接把传入的*s=&str的 s 当做字符数组使用,然后再直接遍历,运用字符串存于字符数组的特征’\0’来判断字符串的结束与否,并引入变量记录长度,然后直接返回变量i:

int i;
for(i=0;s[i]!='\0';i++){}
return i;

再就是倒置字符串函数cov,思考一下如何进行倒置?还是一样将传入的str作为字符数组s[i]进行处理,运用对称性首尾进行交换,而后依次对称向内遍历直至下标遍历到字符数组下标的中间位置(这里叙述有些模糊,不如直接上代码看看就知道了),重中之重的就是字符的交换!!!此处用了中间变量存储需要交换的字符,然后依次交换:

char k;
int i;
for(i=0;i<=mystrlen(s);i++)
{
    k=s[i];
    s[i]=s[mystrlen(s)-1-i];
    s[mystrlen(s)-1-i]=k;
}
printf("%s\n",s);

上述的k即为中间变量,用于存储需要交换的字符,i为遍历时所需的下标,其中为了方便直接调用了mystrlen函数,是计算了s字符串长度(注意:mystrlen计算所得的长度是字符串总长度,区别于字符数组的下标,下标应为0~mystrlen(s)-1),所以应用对称性,下标 i 所对称的下标应为 mystrlen(s)-1-i,这里需要仔细思考一下。

数组元素交换就不必多说了……

以上便完成了此题的主要内容,剩下的可看下面的代码实践思考分析。

初步代码实践

#include<stdio.h>
int mystrlen(char *s)
{
    int i;
    for(i=0;s[i]!='\0';i++){}
    return i;
}
void cov(char *s)
{
    char k;
    int i;
    for(i=0;i<=mystrlen(s)/2;i++)
    {
        k=s[i];
        s[i]=s[mystrlen(s)-1-i];
        s[mystrlen(s)-1-i]=k;
    }
    printf("%s\n",s);
}
int main()
{
    char str;
    scanf("%s",&str);
    printf("Len=%d\n",mystrlen(&str));
    cov(&str);
    return 0;
}

代码优化/进阶

待补充……

将于评论区征集……

© 版权声明
THE END
喜欢就点赞支持一下吧,如果觉得不错或日后有所需要,可以收藏文章和关注作者哦。
点赞7打赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容