当前位置:编程学习 > C/C++ >>

c语言在线改错

#include<stdiou.h> void main() { int i,j,n,x,a[n]; printf("输入数据的个数 n: "); scanf("%d",&n); printf("输入%d个整数: "); scanf("%d",&a[i]); for(i=0;i<n;i++) printf("输入要插入的整数: "); scanf("%d",&x); for(i=0;i<n;i++) { if(x>a[i])continue; j=n-1; while(j>=i) { a[j]=a[j+1]; j++; } a[i]=x; break; } if(i==n) a[n]=x; for(i=0;i<n+1;i++) printf("%d",a[i]); putchar("\n"); } 急求。。。谢谢。。~~!!
答案:#include<stdiou.h>——首先<stdio.h>就错了。。。
int i,j,n,x,a[n];——不能这样定义数组,可以定义为int i,j,n,x,a[99];
printf("输入%d个整数: ");
scanf("%d",&a[i]);——哪有这样的?应该是
                                    printf("输入%d个整数: ",n);for(i=0;i<n;i++)scanf("%d",&a[i]);
j=n-1;
		while(j>=i)
		{
			a[j]=a[j+1];——赋值错误,应该是a【j+1】=a【j】
			j++;
		}——死循环。。。改成j--
改好的代码如下:
#include<stdio.h>
void main()
{
	int i,j,n,x,a[99];
	printf("输入数据的个数 n: ");
	scanf("%d",&n);
	printf("输入%d个整数: ",n);
	for(i=0;i<n;i++)
	scanf("%d",&a[i]);
	printf("输入要插入的整数: ");
	scanf("%d",&x);
	for(i=0;i<n;i++)
	{
		if(x>a[i])continue;
		else j=n-1;
		while(j>=i)
		{
			a[j+1]=a[j];
			j--;
		}
		a[i]=x;
		break;
	}
	if(i==n)
		a[n]=x;
	for(i=0;i<n+1;i++)
		printf("%d\n",a[i]);
	
}
在VC下编译通过。
其他:你不能在定义数组的时候取大小为变量的!a[n]是不合法的。 int a[n];
数组下标必须是常量表达试,怎么能是变量啊!
如果要用动态内存分布,要用到malloc calloc函数,用指针分配!
不知道有没有学啊? #include<stdiou.h>
改成 
#include<stdio.h> 第一、#include<stdiou.h>写错了#include<stdio.h>
第二、printf("输入%d个整数: ");没有n ,应为printf("输入%d个整数: ",n);
第三、n为变量,不能用来定义数组大小,可以这样#define n 10 大哥,错太多了!!!1,第一行就有错误:#include<stdiou.h>  ---> #include <stdio.h>
2,int i,j,n,x,a[n]; 这行又错了!!!
3, scanf("%d",&a[i]);
    for(i=0;i<n;i++) 次序又错了!!

给你个新版本吧:实在太多错误
#include <stdio.h>

void main()
{
    int i, j, n, x, *a;

    printf("输入数据的个数 n: ");
    scanf("%d", &n);
    a = malloc(sizeof(int) * (n + 1));

    for (i = 0; i < n; i++)
    {
        printf("输入%d个整数: ", i);
        scanf("%d", &a[i]);
    }

    printf("输入要插入的整数: ");
    scanf("%d", &x);

    for ( i = 0; i < n; i++)
    {
        if ( x > a[i] ) continue;

        for (j = n; j > i; j--)
            a[j] = a[j -1];

        a[i] = x;
        break;
    }

    if(i == n)
        a[n] = x;

    for(i = 0; i< n + 1; i++)
        printf("%d",a[i]);

    free(a);
    putchar("\n");

}

上一个:几道简单的C语言选择题?
下一个:请问2011年5月软件设计师C语言题和C++题估题

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,