C高手帮我看一下初学不懂

来源:百度知道 编辑:UC知道 时间:2024/06/07 15:27:56
已知数据文件IN.dat中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请编写函数spellNum(),其功能是:把个位数字和千位数字重新组成一个新的二位数(新二位数的十位数字是原四位数的个位数字,新二位数的个位数字是原四位数的千位数字),以及把百位数字和十位数字组成另一个新的二位数字(新二位数的十位数字是原四位数的百位数字,新二位数的个位数字是原四位数的十位数字),如果新组成的两个二位数均是偶数并且两个二位数中至少有一个数能被9整除,同时两个新数的十位数字均不为0,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt。

红体字是我编的。因初学,下面程序我编的程序有好多错,望帮忙指出 万分感谢!

#include <stdio.h>
#define MAX 200
int a[MAX], b[MAX], cnt = 0;
void spellNum()
{
int i=0,j=0,k=0,e=0,d=0;
int l=0,b=0,p=0,t=0,y=0;
int w=1,q=0;
for(i=0;i<MAX;i++)
{
p=a[i];
k=a[i]%10; /*ge*/
a[i]=a[i]/10;
j=a[i]%10; /*shi*/
a[i]=a[i]/10;
e=a[i]%10; /*bai*/
a[i]=a[i]/10;
d=a[i]; /*qian*/

l=k*10+d;
b=e*10+j;

if(l%2==0&&b%2==0&&(l%9==0||b%9==0)&&k!=0&&e!=0)
{

b[cnt]=p;
cnt++
}

}
for(y=0;y<cnt-1;y++

if(l%2==0&&b%2==0&&(l%9==0||b%9==0)&&k!=0&&e!=0)
{

b[cnt]=p;
cnt++ //这里少了分号.
}

b[cnt]=p;
int a[MAX], b[MAX], cnt = 0; 这里定义了全局数组变量。
int l=0,b=0,p=0,t=0,y=0;这里定义了函数内部变量。那么在函数内只有这个内部变量是有效的。所以你这个赋值b[cnt]=p;是错误的。因为对函数来说,b只是一个整型而不是数组。
应使两个变量名不相同。

#include <stdio.h>
#define MAX 200
int a[MAX], b[MAX], cnt = 0;
void spellNum()
{
int i=0,j=0,k=0,e=0,d=0;
int l=0,b=0,p=0,t=0,y=0;
int w=1,q=0;
for(i=0;i<MAX;i++)
{
p=a[i];
k=a[i]%10; /*ge*/
a[i]=a[i]/10;
j=a[i]%10; /*shi*/
a[i]=a[i]/10;
e=a[i]%10; /*bai*/
a[i]=a[i]/10;
d=a[i]; /*qian*/

l=k*10+d;
b=e*10+j;

if(l%2==0&&b%2==0&&(l%9==0||b%9==0)&&k!=0&&e!=0)
{

b[cnt]=p;
cnt++
}

}
for(y=0;y<cnt-1;y++)
for(w=1;w<cnt;w++)
if(b[y]>b[y+w])
{
q=b[y];
b[y]=b[y+w];