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++题估题