帮忙看看我编写的这个简单的C程序为什么有错误?

来源:百度知道 编辑:UC知道 时间:2024/05/07 09:13:50
#include <stdio.h>
#define MAX 200
int a[MAX], b[MAX], cnt = 0;
void jsVal()
{
int thou,hun,ten,data,i,j;
for(i=0;i<MAX;i++)
{thou=a[i]/1000;
hun=a[i]%1000/100;
ten=a[i]%100/10;
data=a[i]%10;
}
if (thou%2==0&&hun%2==0&&ten%2==0&&data&2==0)
{b[cnt]=a[i];
cnt++;
}
for(i=0;i<cnt-1;i++)
for(j=i+1;j<cnt;j++)
if( b[i]<b[j]);
{data=b[i];
b[i]=b[j];
b[j]=b[i];
}

}
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 i;
fp = fopen("OUT.DAT", "w");
fprintf(fp, "%d\n", cnt);
for (i=0; i<cnt; i++)
fprintf(fp, "%d\n", b[i]);
fclose(fp);
}
void main()
{

老大,你太牛逼了!
首先,一个致命的错误,题目要求的是4位数,你给的thou,hun,ten,data。data是什么?看后面应该是个位,又做中间变量?

第二,又一个致命的错误。
for(i=0;i<MAX;i++)
{thou=a[i]/1000;
hun=a[i]%1000/100;
ten=a[i]%100/10;
data=a[i]%10;
}/*这个}应该删掉*/
if(thou2==0&&hun2==0&&ten2==0&&data&2==0)
{b[cnt]=a[i];
cnt++;
}
无语,循环到最后一个数,再做判断是不是符合题干……if判断应该在循环里面。

再者,小的错误也不断。不是编译不报错,这些小的错误就没有了。
1.if (thou%2==0&&hun%2==0&&ten%2==0&&data&2==0) 其中data&2==0应该是data%2==0

2.for(i=0;i<cnt-1;i++)
for(j=i+1;j<cnt;j++)
if( b[i]<b[j]);/*多了个分号*/
{data=b[i];
b[i]=b[j];
b[j]=b[i];
}
这里根本就是交换而无排序,应该把分号去掉。还有,交换错了哦~
应该为{temp=b[i];
b[i]=b[j];
b[j]=temp;
}

大概错误就这么多(呵呵,已经惨不忍睹了)
下面是我改的,你再看看可不可以。
#include <stdio.h>
#define MAX 200
int a[MAX], b[MAX], cnt = 0;
void jsVal()
{
int i,j;
int a1,a2,a3,a4;
int temp;
for(i=0;i<MAX;i++)
{