c语言高手来看下

来源:百度知道 编辑:UC知道 时间:2024/05/25 06:32:31
这是一个用来比较数字大小的程序.下面是完整的程序,现在只有一个问题,就是输入数字少于10个会出错,注释里写的很明白了,请高手看一下,最好是能在VC里运行一下.然后告诉我怎么修改,谢谢!!!加10分~~
#include<stdio.h>
void main()
{
int a[10]; //
printf("enter number less than 11,end of 'ok'\n"); //
printf("Please enter some numbers for comparison:\n"); //操作提示,输入少于11个数字,以"ok"结尾

int i,j,k,t,n,temp;

n=0; //我的本意是用n来对输入的数字个数进行计数,最后通过n的值来显示数字个数
for(i=0;i<10;i++) //但是执行结果却没有我想得到的效果
{ //结果显示n的值是10,而不是我输入数字的个数
scanf("%d",&temp);
if(temp=='ok') break;
else a[i]=temp;n++;
} //这段是输入数字,可以是少于或等于10个数字

printf("the input numbers are:"); //
for(i

int型的temp怎么能等于‘ok’?再说应该是"ok"吧?

你的想法很好,不过你忘了一件事吧!
scanf("%d",&temp);//获得了的数据到整型变量temp中
if(temp=='ok') break;//可为什么整型的和字符(同意楼上说的)又搭在一起?

所以这一块的处理是挺麻烦的。
我建议任何数都当做字符串输入,然后经过处理,当ok时就结束,不是的话就用将字符串合并成数字。

如果需要帮助,找我。(有QQ的话,QQ找我,569672537)

当然会出错了,数组定义的是10个元素,比较的时候也是按照10个元素比较的,如果没有输入10个数字,就会造成后面的数组元素没被初始化,所以就出错了

scanf("%d",&temp);
if(temp=='ok') break;
else a[i]=temp;n++;

这里循环了10次,所以n是10对的,但是 temp这个整形变量永远不可能等于你所判断的,所以上面一个语句等于无效,你可以自己定义一个结束的判断.