注册 登录
编程论坛 C++教室

新手求教?请问while放置的位置对吗?为什么输入负数程序不停止?

wu2782641803 发布于 2013-11-21 22:08, 717 次点击
编程实现:从键盘输入若干个学生的成绩,以负数作为结束标志,比较学生成绩求出最高分和最低分,并且输出最高分和最低分。
提示:
①定义一个相对而言足够大的数组来存放学生成绩。例如,可以定义数组长度为100。
②建议使用while循环语句。
#include <stdio.h>
int main()
{
   int i,a[100],t,max,min;
   printf("请输入一百个数:");
       for(i=0;;i++)
           scanf("%d",&a[i]);
       while(a[i]<0)
         break;
       max=a[0];
       min=a[0];
      t=i;
       for(i=0;i<t;i++)
       {if(max<a[i])
               max=a[i];
        if(min>a[i])
               min=a[i];
       }
    printf("%d,%d",max,min);
 return 0;
}
7 回复
#2
peach54602013-11-22 06:50
放错了,所以不停止
#3
wu27826418032013-11-22 17:56
我问过老师了   她说是对的啊 !  请问我该放在那里?
#4
积木100862013-11-22 20:54
while应该放在for循环里边,菜鸟一枚,仅代表个人观点,
#5
peach54602013-11-23 07:41
以下是引用wu2782641803在2013-11-22 17:56:29的发言:

我问过老师了   她说是对的啊 !  请问我该放在那里?

那你们老师还真是粗心啊...
#6
蓝色的blue2013-11-23 14:01
你的第一个for循环是个死循环;;
你可以把while循环用大括号括起来,比如
for(int i=0;;i++)
{
   scanf("%d",&a[i]);
   while(a[i]<0)//把while改成if就行
   break;
}
这样修改当输入负数也不能跳出for循环,,,你把while改成if就行了,,,break语句只能跳出当前的循环;
不能同时跳出两个循环,,你自己好好看看break语句方面的知识,你可能对它了解还不够
#7
kevin_012013-11-23 16:30
这样改,当输入负数后,再回车就好:
#include <stdio.h>
int main()
{
   int i,a[100],t,max,min;
   int k=1;
   printf("请输入一百个数:");

    while(k>0)
    {
        for(i=0;;i++)
        {
            scanf("%d",&a[i]);
            if(a[i]<0)
                break;
        }
        k=a[i];

    }

    max=a[0];
    min=a[0];
    t=i;

    for(i=0;i<t;i++)
    {
        if(max<a[i])
               max=a[i];
        if(min>a[i])
               min=a[i];
     }

    printf("%d,%d",max,min);

    return 0;
}
#8
bigstupidboy2013-11-23 17:04
#include <stdio.h>
int main()
{
   int i,t,max,min;
int a[100]= { 0 };
   printf("请输入一百个数:");
       for(i=0;i<100;i++)
         scanf("%d",a[i]);
              
       while(a[i]<0)
         break;
       max=a[0];
       min=a[0];
      t=i;
       for(i=0;i<t;i++)
       {if(max<a[i])
               max=a[i];
        if(min>a[i])
               min=a[i];
       }
    printf("%d,%d",max,min);
return 0;
}   


我试了一下  在我的vc6.0上没报错    你是一下吧  加油
1