for循环的问题~

来源:百度知道 编辑:UC知道 时间:2024/05/14 22:39:53
/*求相乘为四位数的个位数的任意两个数*/
main()
{
void fun1(int a[],int n);
int a[4],n,i,m=1,j;
clrscr();
printf("input n\n\n");
scanf("%d",&n);
for(i=3;i>=0;i--) /*输入的千位数的各位数输入到数组a中 */
{
for(j=0;j<i;j++)
m=10*m;
a[i]=n/m;
n=n%m;
m=1;
}
fun1(a,n);
}
void fun1(int a[],int n)
{
int i,j,x,y,z;
int b,c,d[2];
for(i=0;i<3;i++) /*寻找四个数中相乘如果个位数等于四位数中的个位数,那么将这两个数放入变量B,C中*/
{
for(j=i+1;j<4;j++)
if((a[i]*a[j])%10==a[0]||(a[i]*a[j])==a[0]) /*判断两个数相乘是否等于个位数,一种情况为两个数相乘为个位数,另一种是两个数相乘为十位数,其中个位数等于千位数的个位数*/
{
b=a[i];
c=a[j];
printf("\nb=%d,c=%d\n\n",a[i],a[j]);
x=i;
y=j;

for(i=0;i<4;i++) /*将另外两个数放入数组d中*/
if(i!=x&&i!=y)
{
d[0]=a[i];

你的fun1中的循环变量i在重复使用哦,你把第一重循环中的循环变量的值而在for(i=0;i<4;i++) /*将另外两个数放入数组d中*/中又改变了其的值,到最后i当然就变为了4, for(i=0;i<3;i++) /*寻找四个数中相乘如果个位数等于四位数中的个位数,那么将这两个数放入变量B,C中*/ 这个第一重循环的值i也变成了4,就直接退出了大循环,程序结束,所以你把后面的两个循环的循环变量改下就好了,呵。。。以后要注意不要看到for就直接想到后面用i了哦~
呵。。。怕我上面说的不清楚,把我改的贴上来吧~
#include"stdio.h"
void main()
{
void fun1(int a[],int n);
int a[4],n,i,m=1,j;
//clrscr();
printf("input n\n\n");
scanf("%d",&n);
for(i=3;i>=0;i--) //输入的千位数的各位数输入到数组a中
{
for(j=0;j<i;j++)
m=10*m;
a[i]=n/m;
n=n%m;
m=1;
}

fun1(a,n);
}
void fun1(int a[],int n)
{
int i,j,x,y,z,m,s;//增加了两个循环变量
int b,c,d[2];
for(i=0;i<3;i++) //寻找四个数中相乘如果个位数等于四位数中的个位数,那么将这两个数放入变量B,C中
{
for(j=i+1;j<4;j++){
if((a[i]*a[j])%10==a[0]||(a[i]*a[j])==a[0]) //判断两个数相乘是否等于个位数,一种情况为两个数相