for循环的问题~

[复制链接]
查看11 | 回复2 | 2016-9-17 00:44:09 | 显示全部楼层 |阅读模式
/*求相乘为四位数的个位数的任意两个数*/
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=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*a[j])%10==a[0]||(a*a[j])==a[0])/*判断两个数相乘是否等于个位数,一种情况为两个数相乘为个位数,另一种是两个数相乘为十位数,其中个位数等于千位数的个位数*/

{

b=a;

c=a[j];

printf("\nb=%d,c=%d\n\n",a,a[j]);

x=i;

y=j;

for(i=0;i<4;i++)
/*将另外两个数放入数组d中*/

if(i!=x&&i!=y)

{

d[0]=a;

z=i;

}

for(i=0;i<4;i++)

if(i!=x&&i!=y&&i!=z)

{

d[1]=a;

}
printf("d[0]=%d,d[1]=%d\n",d[1],d[0]);
}
}
}
例如1395
应该要显示出三组
b=5,c=9
b=5,c=3
b=5,c=1
但是只出现第一组
到底是为什么?

回复

使用道具 举报

千问 | 2016-9-17 00:44:09 | 显示全部楼层
你的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);
回复

使用道具 举报

千问 | 2016-9-17 00:44:09 | 显示全部楼层
题目都没有写清楚,一下很难明白,你要做什么
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行