简单c问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 01:32:57
#include <stdio.h>
#define MAX 200
int a[MAX], b[MAX], cnt = 0;
void jsVal()
{
int I,j,flag=0;
for(I=0;I<MAX-5;I++)
{
for(j=I+1;j<=I+5;j++)
{
if(a[I]<a[j])
flag=1;
else
flag=0;
if(a[I]%2!=0)
flag=0;
if (flag==0)
break;
}
while(flag) //*两个程序不同的地方*//
{
b[cnt]=a[I];
cnt++;
}
}
for(I=0;I<cnt-1;I++)
for(j=I+1;j<cnt;j++)
if(b[I]>b[j])
{
flag=b[I];
b[I]=b[j];
b[j]=flag;
}
}
void readDat()
{
int i;
FILE *fp;
fp = fopen("IN.DAT", "r");
for (i=0; i<MAX; i++)
fscanf(fp, "%d,", &a[i]);
fclose(fp);
}
void writeDat()
{
FILE *fp;
int

while是一循环,而if是一选择。
你和第一个程序用了while,当条件为真就执行循环体,直到条件为假时结束循环。你写的while的条件是flag为真就执行循环体,而循环体中并没为语句改变flag的值,所以,一但进入循环体,就会陷入死循环。此处的while循环要么不执行,要么就是死循环。
第二个是if选择,只有当条件为真的时候才执行一次后面的语句,否则不会执行。此处if要么执行一次,要么一次都不执行。

while一般在不确定循环次数的时候使用,for一般都是有确定的循环次数,而if只能判断一次

while 是一个循环语句。而if只是一个选择语句,根本起不到循环的作用。

有倒立