使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。此处有一个很奇怪的车牌号,它是一个4位十进制数,是某一个数的平方数,且这4个数字从右至左一个比一个大。程序的功能是把这个车牌号找出来,部分程序已

admin2018-03-27  36

问题 使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。此处有一个很奇怪的车牌号,它是一个4位十进制数,是某一个数的平方数,且这4个数字从右至左一个比一个大。程序的功能是把这个车牌号找出来,部分程序已给出。
    请编写函数fun,其功能是:将一个4位数的每一位数分离出来,并依次存放在结构体变量成员中,通过函数值返回给主函数。
    例如,一个4位数n为2579,则应把2放在res.m3中,把5放在res.m2中,把7放在res.m1中,把9放在res.m0中。
    程序正确运行后的输出结果是:No.is 1369
    注意:部分源程序存在文件PROG1.C中。
    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
    #include<stdio.h>
    #include<stdlib.h>
    #pragma warning(disable:4996)
    struct BITS{int m3,m2,m1,m0;};
    struct BITS fun(int n)
{
    struct BITS res;
/*在这里将函数代码补充完整*/

}
main()
{struct BITS a;
  void NONO();
  int i=0,n=0;
  for(i=32;i<100;i++)
  {  n=i*i:
    a=fun(n);
    if(a.m3<a.m2 && a.m2<a.m1 && a.m1<a.m0)
    printf(’’No.is %1\n’’,n);
  }
    NONO();
}
void NONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/
    struct BITS a;
    FILE * fp;
    int i=0,n=0;
    fp=fopen(’’out.dat’’,’’w’’);
    for(i=32;i<100;i++)
    {  n=i*i;
    a=fun(n);
    if(a.m3<a.m2 && a.m2<a.m1 && a.m1<a.m0)
    fprintf(fp,’’No.is%d\n’’,n);
    }
    fclose(fp);
}

选项

答案res.m0=n%10: res.m1=n/10%10; res.m2=n/100%10; res.m3=n/1000; return res;

解析 根据题目要求将一个四位数的个、十、百、千位数提取出来,分别放入res.m0、res.m1、res.m2、res.m3中,首先提取个位数,将该数对10取余,所得的结果即为个位数字,将其赋值给res.m0;然后取十位,将该数除以10,因为是int型,进行强制转换,小数点后的数字舍去,则该数的个位数舍去,变为一个三位数(例如2563除以10为256.3,经类型强制转换后变为256),再进行对10取余,得到十位数字,将其赋值给res.m1;然后取百位,将该数除以100,因为是int型,进行强制转换,小数点后的数字舍去,则该数的个位、十位数舍去,变为一一个两位数(例如2563除以100为25.63,经类型强制转换后变为25),再进行对10取余,得到百位数字,将其赋值给res.m2;最后取千位,将该数直接除以1000,再进行强制转换后(例如2563除以1000为2.563,经类型强制转换后变为2),所得到的数即为千位数字。将其赋值给res.m3,最后返回该结构体即可。
转载请注明原文地址:https://kaotiyun.com/show/DqID777K
0

相关试题推荐
最新回复(0)