这个程序的问题出在哪?
ki 圈内达人 2016-11-23 21:11:52
1069 8 0

blob.png

问题来自: 编程题真题

共 8 个回答

    初一 人气新星 助教 1356天前

    首先 变量i  没有初始值

    if条件是j!=n

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

    ki 圈内达人 1356天前

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

    初一 人气新星 助教 1356天前

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

    while(a[i]) i++;

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

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

    人气红星 1356天前

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

    初一 人气新星 助教 1356天前

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

    ki 圈内达人 1356天前

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

    blob.png

    最佳答案

    人气红星 1356天前

    回复 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 圈内达人 1356天前

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

您还没有登录,所以不能回复该问题