c语言程序警告问题。请帮忙查看程序到底哪里出错了。我崩溃了 警告内容:

#include<stdio.h>
#include<math.h>

int main(void)
{
/*
编写一程序P5346.C实现以下功能
  ①程序运行时先显示Please input numbers:,再从键盘上读入一组整数(只考虑int型),数与数之间只使用空格或回车作分隔。
数可正可负,最多10000个,但若读入的数为-222时,则表示输入结束且-222不算在该组数内。
  ②对这一组数按从小到大的顺序进行排序。
  ③将排序后的这一组数输出到屏幕上,输出格式为每行6个数,数与数之间使用逗号(,)分隔,两个逗号之间的宽度(不算逗号)为6且使用左对齐格式。
注意,行尾没有逗号。
  编程可用素材:printf("Please input numbers:")...、printf("\nOutput:\n")...。
  程序的运行效果应类似地如图1所示,其中的100 120 89 72 -19 200 500 210 235 6 24 1234 78 234 -234 -2342 346 23524 7823 -3411 23423 -222是从键盘输入的内容。
*/

int ch, i,j, num[10000], tmp,ct = 0;

printf("Please input numbers:");
for (i = 0; i < 10000; i++)
{
scanf("%d", &ch);
if (ch != -222)
{
num[i] = ch;
ct++;
}

else
{
break;
}
}

for (j = 1; j < ct; j++)
{

for (i = 1; i <= ct - j; i++)
{
if (num[i] < num[i - 1])
{
tmp = num[i];
num[i] = num[i - 1];
num[i - 1] = tmp;
}
}

}

printf("\nOutput:\n");
for (i = 0; i < ct; i++)
{
printf("%-6d",num[i]);
if (((i % 6) != 5) && (i != (num-1)))
{
printf(",");
}
else
{
printf("\n");
}
}

return 0;

}

为了让大家更明白些,我想再补充一下老师给的答案。我不知道这和我所编的有什么区别。望高手指教!
#include<stdio.h>
#include<math.h>

int main(void)
{
/*
编写一程序P5346.C实现以下功能
  ①程序运行时先显示Please input numbers:,再从键盘上读入一组整数(只考虑int型),数与数之间只使用空格或回车作分隔。
数可正可负,最多10000个,但若读入的数为-222时,则表示输入结束且-222不算在该组数内。
  ②对这一组数按从小到大的顺序进行排序。
  ③将排序后的这一组数输出到屏幕上,输出格式为每行6个数,数与数之间使用逗号(,)分隔,两个逗号之间的宽度(不算逗号)为6且使用左对齐格式。
注意,行尾没有逗号。
  编程可用素材:printf("Please input numbers:")...、printf("\nOutput:\n")...。
  程序的运行效果应类似地如图1所示,其中的100 120 89 72 -19 200 500 210 235 6 24 1234 78 234 -234 -2342 346 23524 7823 -3411 23423 -222是从键盘输入的内容。
*/

int i,j, data[10000], tmp,num = 0;

printf("Please input numbers:");
for (i = 0; i < 10000; i++)
{
scanf("%d", &tmp);
if (tmp != -222)
{
data[i] = tmp;
num++;
}

else
{
break;
}
}

for (j = 1; j <= num - 1; j++)
{

for (i = 1; i <= num - j; i++)
{
if (data[i] < data[i + 1])
{
tmp = data[i];
data[i] = data[i - 1];
data[i - 1] = tmp;
}
}

}

printf("\nOutput:\n");
for (i = 0; i < num; i++)
{
printf("%-6d",data[i]);
if (((i % 6) != 5) && (i != (num-1)))
{
printf(",");
}
else
{
printf("\n");
}
}

return 0;

}
警告内容:c:\documents and settings\administrator\桌面\666\1231.c(56) : warning C4047: '!=' : 'int ' differs in levels of indirection from 'int *'

#include<stdio.h>
#include<math.h>

int main(void)
{
/*
编写一程序P5346.C实现以下功能
  ①程序运行时先显示Please input numbers:,再从键盘上读入一组整数(只考虑int型),数与数之间只使用空格或回车作分隔。
数可正可负,最多10000个,但若读入的数为-222时,则表示输入结束且-222不算在该组数内。
  ②对这一组数按从小到大的顺序进行排序。
  ③将排序后的这一组数输出到屏幕上,输出格式为每行6个数,数与数之间使用逗号(,)分隔,两个逗号之间的宽度(不算逗号)为6且使用左对齐格式。
注意,行尾没有逗号。
  编程可用素材:printf("Please input numbers:")...、printf("\nOutput:\n")...。
  程序的运行效果应类似地如图1所示,其中的100 120 89 72 -19 200 500 210 235 6 24 1234 78 234 -234 -2342 346 23524 7823 -3411 23423 -222是从键盘输入的内容。
*/

int ch, i,j, num[10000], tmp,ct = 0;

printf("Please input numbers:");
for (i = 0; i < 10000; i++)
{
scanf("%d", &ch);
if (ch != -222)
{
num[i] = ch;
ct++;
}

else
{
break;
}
}

for (j = 1; j < ct; j++)
{

for (i = 1; i <= ct - j; i++)
{
if (num[i] < num[i - 1])
{
tmp = num[i];
num[i] = num[i - 1];
num[i - 1] = tmp;
}
}

}

printf("\nOutput:\n");
for (i = 0; i < ct; i++)
{
printf("%-6d",num[i]);
if (((i % 6) != 5) && (i != (ct-1))) //
{
printf(",");
}
else
{
printf("\n");
}
}

return 0;

}

//你用了ct去计数,num[]去存数,所以后面输出output的时候应将num改成ct就行了,上面的程序改好了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-05
你的程序中num是个数组啊!!!你的老师的程序中是个整形变量。你的能编译通过么?追问

数组和整型变量的区别是什么啊?能不能详细说说,我是菜鸟啊

追答

整型变量是一个变量,数组是一组变量,就这个差别

第2个回答  2011-12-05
警告是什么,又不贴出来!追问

c:\documents and settings\administrator\桌面\666\1231.c(56) : warning C4047: '!=' : 'int ' differs in levels of indirection from 'int *'

相似回答