全部问题 > 当前问题

这个程序的问题出在哪?

blob.png

ki 2016-11-23 21:11:52

共 8 个回答

初一 2016-11-23 22:45:34

首先 变量i  没有初始值

if条件是j!=n

然后else 子句后面加上个j+=1;

ki 2016-11-23 23:05:48

回复 初一:如果想要用将从第n个元素起的元素前移的这种方法呢?可行吗?应该如何编写?

初一 2016-11-24 00:06:13

回复 ki:你是说把第N个下标的元素往前移动一个嘛   以本题为例 将A数组中的第N个元素起往前移动一位

while(a[i]) i++;

for(j=N;j<i-1;j++)

 a[j]=a[j+1];

2016-11-24 00:10:24

只看出i没赋值。其他的不知道

初一 2016-11-24 00:22:24

回复 :我是以本题为例 没写完整呢~

ki 2016-11-24 10:13:18

回复 初一:如果用这种方法实现题中的结果呢?(虽然参考答案的方法要简洁很多,但还是想知道这个程序的问题出在哪里,谢啦)

blob.png

最佳答案

2016-11-24 15:18:14

回复 ki

你这个方法也是对的,只不过 要把 for (j=0;)j<i-1;j++改成for (j=0;)j<i;j++或者for (j=0;)j<=i-1;j++即可。

为了更方便了解你写的语句循环情况,我把你的语句加了printf输出,了解每一次循环情况和值,这样你可以清楚看到,假如j<i-1,   输入 world  ,  3  的情况 下,j=3时执行了最后一次循环。就跳出循环了,没有达到我们的要求。


void fun (char a[], char b[], int n)

{


int i=0,j;

while(a[i])i++;

printf("i=%d\n",i);

for (j=0;j<i;j++)

{

printf("for循环 i=%d,j=%d,n=%d\n",i,j,n);system("pause");

if(j<n) {b[j]=a[j];printf("if语句 i=%d,j=%d,n=%d\n",i,j,n);system("pause");}

else {b[j]=a[j+1];printf("else语句 i=%d,j=%d,n=%d\n",i,j,n);system("pause");}

}


ki 2016-11-24 15:39:26

回复 :谢谢!我试过啦,确实是这样!我错把while (a[i])i++;之后得到的i值算上了\0那一位,因而在j<i之后又加了个-1。

问题来自: 编程题真题