你的程序和例题的程序思想上实际上是一模一样的,只是你的程序中两个函数接口名换了而已;
你要知道,被调用函数中函数头中的变量名与调用函数参数是无关的,也就是说你没必要写成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语言程序每一行都注释一下,很急谢谢啦!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)