C语言 程序设计 函数比较

C语言 程序设计 函数比较,第1张

你的程序和例题的程序思想上实际上是一模一样的,只是你的程序中两个函数接口名换了而已;

你要知道,被调用函数中函数头中的变量名与调用函数参数是无关的,也就是说你没必要写成void inverse( int a[],int n),你写成void inverse( int b[],int n)也是可以的,只要本函数内保持一致就没有问题;

再就是,你用数组名作参数,也就是你的void inverse( int a[],int n),实际上程序运行时还是用的数组的地址,与void inverse( int a,int n)是完全一样的,等价的,所以跟void inverse( int p,int n)也是完全等价的!

总之,你的程序与例题程序基本上的等价的,只是你的程序还多了个变量p(被调用函数inverse中只需要两个指针型变量)!!!

主函数我觉得你的输出比例题的简单,也少个指针变量,这是不错的,简单就是最好的!也许例题是想告诉你怎么使用指针移动实现数组输出吧,呵呵!!!

这是正确的程序,你参照一下吧

#include<stdioh>

#include<stringh>

void Inverse(char str[]);

void main()

{

char str[80];

printf("Please enter a string:");

gets(str);

Inverse(str);

printf("The inversed string is:");

puts(str);

}

void Inverse(char str[])

{

int len,i=0,j;

char temp;

len=strlen(str);

for(j=len-1;i<j;i++,j--)

{

temp=str[i];

str[i]=str[j];

str[j]=temp;

}

}

#include<stdioh>

#include<stringh>

 

int main()

{

    void inverse(char str[]); // inverse()函数声明

    char str[100];

    printf("input string:");

    scanf("%s",str); // 输入字符串

    inverse(str); // 用inverse对字符串进行处理

    printf("inverse string:%s\n",str);

    return 0;

}

 

void inverse(char str[]) // 对字符串进行翻转

{

    char t;

    int i, j;

    for(i=0, j=strlen(str);

           i<(strlen(str)/2); // i 从0到字符串长度的中间

         i++, j-- // i、j 分别向中靠拢

         )

    { 

        t=str[i];

        str[i]=str[j-1]; // 这3个语句是用来交换字符串

        str[j-1]=t;

    }

}

/

原理(举例说明):

例如:字符串“123456”变成“654321”

 1和6对调,2和5对调,3和4对调

第一个程序有错误,根本运行不出来;从你写的程序来看,你是要实现字符串的插入 *** 作,插入 *** 作是在一个字符串后插入另一个字符串,你的程序严重数组越界啦!

第二个程序是连接两个字符串,然后输出;不过此程序在链接的时候出现错误。以下是我修改后的程序。

#include<stdioh>

void connect(a,b)

char a[100],b[100];

{

strcat(a,b);

}

void main()

{

char str1[100],str2[100];

gets(str1);gets(str2);

connect(str1,str2);

puts(str1);

}

第三个程序实现的是将字符串倒序输出,编译链接没有错误,可是运行不出结果。下面是我修改的程序。

#include<stdioh>

void inverse(str)

char str[];

{

char t;

int i,j;

for(i=0,j=strlen(str);i<strlen(str)/2;i++,j--){

t=str[i];

str[i]=str[j-1];

str[j-1]=t;

}

}

void main(){

char str[10];

scanf(

代码只是实现了逆序输出,而没有把sentence中的内容逆序,每逆序输出一个单词,都用结束符来替换。

#include "stdioh"

#include "stringh"

void InverseByWord(char sentence)

{

int n,i,j;

n=strlen(sentence);// 计算字符串长度。

for(i=n-1;i>-1;i--)// 从最后一个元素开始循环,直到第一个元素

{

if((sentence+i)=='\0')//如果是结束符的话,仍然设置为结束符。由于字符串长度不变,所以结束符位置不变。

{

printf("%c",(sentence+i));// 输出结束符

(sentence+i)='\0';//设置结束符

}

if((sentence+i)==' ')// 如果是空格的话,说明新的单词开始。

{

n=strlen(sentence);// 计算字符串长度

for(j=i+1;j<n;j++)// 从i+1开始输出新的单词

{

printf("%c",(sentence+j));

(sentence+j)='\0';// 输出后清除字符。

}}}

printf("%s\n",sentence);//输出字符串

}

void main()

{

char pStr[100]="This is an interesting programe";

InverseByWord(pStr);

}

以上就是关于C语言 程序设计 函数比较全部的内容,包括:C语言 程序设计 函数比较、C语言改错:将字符数组中的字符串逆序输出,纠正程序中存在的错误以实现此功能。、求大神将下面的C语言程序每一行都注释一下,很急谢谢啦!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10082123.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存