递归
里面,在
if(s[i]=='\0')这一行前面加 else错误原因,你试着考虑一下,return以后,
递归是怎么返回的如果strlen(s)-n>=2,会无限递归,死循环
这种错误,你自己可以试着设断点调试
还有,fflush(stdin)不是C标准,是VC编译器对C做的扩展,代码里加这样的语句,移植性会很差
需要为输入的数据分配指定的内存空间,如下修改就没问题了
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char argv[])
{
int buf[88],iIn=0;
scanf("%d",&iIn);
char sIn=buf;
scanf("%s",sIn);
char sOut;
sOut=sIn;
for(;sIn!=0;sIn++)
sIn+=iIn;//指针sIn向后移动的同时,sIn的目标增加iIn
printf("%s\n",sOut);
system("PAUSE");
return EXIT_SUCCESS;
}
试一下吧,有问题再问!!
i=strlen(a),j=strlen(b);
for (k = 0; k < j; k++){
a[i++] = b[k];
}建议这样改
另:
char a[30]={0}, b[30]={0};数组清零C语言
中函数的调用中,参数传递,只能传递数值。如果只是将数值传递过去(接收者是形参),在子函数中变化,形参的变化,不会影响到实参数据的内容。
C中,每定义一个变量,系统都会在内存中给其分配一个空间用来存储数据。而这个空间的编号就是这个变量的地址。当我们将这个地址传递到子函数中,子函数在 *** 作数据时,就会改变这个地址中的数据,这样,实参的数据是会发生变化。而你程序
中,传递的是a b本身的值(可能是0,可能是1,可能是任意的数),scanf()将这两个值当作地址去 *** 作,因此会产生系统错误,导致程序运行停止。
C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的DMRitchie于1972年推出,1978年后,C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画,具体应用比如单片机以及嵌入式系统开发。main()
{
;
/ 需要按键暂停或停止部分,通常是循环体/
#define STOP_KEY 'm'
while(你的循环条件) {
if(kbhit()) {
char ch=getchar();
if(ch == STOP_KEY) break; /中止循环/
}
}
;
}
评论列表(0条)