C程序帮助:意外输出

时间:2013-11-27 02:19:31

标签: c arrays output

计算机科学学院项目。我需要创建一个程序,其中用户声明一个数组的大小,然后以数字,非递减顺序填充数组,然后声明一个值,x。然后将X分配给适当的点,以便整个数组处于数字,非递减顺序。然后输出数组。

代码构建正确且没有错误,但输出搞砸了。

#include <stdio.h>

int main (void) {

//Local Declarations
int size;
int ary[100];
int x;
int i;
int j;

//Statements
printf("Enter the size of the array: ");
scanf("%d", &size);

printf("\nEnter digits to fill the array, in numerical order: ");
for (i = 0; i < size; i++) {
    scanf("%d", &ary[i]);
}
size++;

printf("\nInput x, the value to add to the array: ");
scanf("%d", &x);

while(i=0 <= x && x > ary[i]){
i++;
j = size - 1;
    while(j >= i) {
        ary[j++] = ary[j];
        j--;
    }
}
for(i = 0; i < size; i++) {
 printf("%d,", ary[i]);
}

return 0;
} //main

示例输出:

Enter the size of the array: 5

Enter digits to fill the array, in numerical order: 1
2
3
4
5

Input x, the value to add to the array: 6
1,2,3,4,5,1630076519,
Process returned 0 (0x0)   execution time : 8.585 s
Press any key to continue.

它总是最后一个价值混乱的数字。我不能为我的生活找出原因。该项目将于美国东部时间午夜到期。

2 个答案:

答案 0 :(得分:0)

对于while循环,您可以尝试这样做吗,

i = 0;
while (i < x && x > ary[i]) {
    i++;
    j = size - 1;
    while (j >= i) {
        j++;
        ary[j] = ary[j];   // Equivalent to ary[j++] = ary[j];, yet easier to read
        j--;
    }
}

答案 1 :(得分:0)

试试这个:

#include <stdio.h>

int main (void) {

//Local Declarations
int size;
int ary[100];
int x;
int i;
int j;
int temp1,temp2;

//Statements
printf("Enter the size of the array: ");
scanf("%d", &size);

printf("\nEnter digits to fill the array, in numerical order: ");
for (i = 0; i < size; i++) {
scanf("%d", &ary[i]);
}


printf("\nInput x, the value to add to the array: ");
scanf("%d", &x);

for(i=0;i<size;i++)
{
   if(ary[i]>x)
   {
       temp1 = ary[i];
       ary[i] = x;
       break; 
   }
}
if(i==size)
{
    ary[i]= x;
}
else
{

    for(j=i+1;j<size+1;j++)
    {
       if(j==size) //Last element of the new array
       {
           ary[j] = temp1;
           break;
       }

       temp2 = ary[j];
       ary[j] =temp1;
       temp1 = temp2;


    } 
 }

for(i = 0; i < size+1; i++) {
 printf("%d,", ary[i]);
}

return 0;
} //main