编写函数fun,其功能是将所有满足如下条件的四位整数存放到形参数组a中:

问题描述:

编写函数fun,其功能是将所有满足如下条件的四位整数存放到形参数组a中:
将四位整数的千位和十位构成一个两位数s,将百位和个位构成另一个两位数t,注意,这里不考虑两位数十位为0的特殊情况,即不将01,02,03等视为两位数.如果s是t的5倍,则将此四位数存放到形参数组a中.
例如:对于整数6102,按照上述要求组成的两个两位数分别为60和12,而60=12*5,因此6102满足条件,将其存放到数组a中,存放到数组a中的整数的个数作为函数值返回.
(2)编写函数main,在main函数中调用fun函数,并将数组a中存放的整数按一行5个输出到屏幕上.


# include
int fun(int *a)
{
int i,j=0,qw,bw,sw,gw,s,t;
for(i=1000;i

# include <stdio.h>
int fun(int *a)
{
  int i,j=0,qw,bw,sw,gw,s,t;
  for(i=1000;i<=9999;i++)//遍历所有四位数
  {
    qw=i/1000;
    bw=i/100%10;
    sw=i/10%10;
    gw=i%10;
    //求个位、十位、百位、千位
    /*做法:6125为例
        6125/1000=6.125,转化为int只取整数6,
        6125/100=61.25,61.25%10=1.25,只取1
        其余同上
    */
    s=qw*10+sw;
    t=bw*10+gw;
    //千位和十位构成(千位*10+十位)一个两位数s,将百位和个位构成另一个两位数t
    if( (s==5*t) //s是t的5倍
      &&(bw!=0)  //排除两位数十位为0的特殊情况
      )
    {
      a[j]=i;
      j++;
      //把i存放到数组a中
    }
  }
  return j;//返回个数
}
void main()
{
  int a[100],i,j;
  j=fun(a);//计算
  for(i=0;i<j;i++)
  {
    printf("%6d",a[i]);//%6d(长度为六的整数)包括了两个空格
    if((i+1)%5==0)//五个分一行(输出\n) 
      printf("\n");
  } 
}if((i+1)%5==0).这里的i为什么要加1呢

列举说明:(序号表示输出第几个数)

  1. i是0,输出,(i+1)%5不等于0

  2. i是1,输出,(i+1)%5不等于0

  3. i是2,输出,(i+1)%5不等于0

  4. i是3,输出,(i+1)%5不等于0

  5. i是4,输出,(i+1)%5等于0,换行(此时是第五个数了)

    ……