下列给定程序中,函数fun()的功能是找出100~n(n不大于1000)之间百位数字加十位数字等于个位数字的所有整数,把这些整数放在s所指的数组中,个数作为函数值返回。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main函数,不得

admin2009-02-15  33

问题 下列给定程序中,函数fun()的功能是找出100~n(n不大于1000)之间百位数字加十位数字等于个位数字的所有整数,把这些整数放在s所指的数组中,个数作为函数值返回。
   请改正程序中的错误,使它能得到正确结果。
   注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
   试题程序:
   #include<stdio.h>
   #define N 100
   int  fun(int *s,int n)
   {
   int i,j,k,a,b,c;
     j=0;
     for(i=100;i<n;i++)
      {
   /*************found***********/
       k=n;
       a=k%10;
       k/=10;
       b=k%10;
       c=k/10;
       if(a==b+c)
   /************found**************/
         s[j]=i;
       }
     return  j;
    }
    main()
      {
      int a[N],n,num=0,i;
      do
      {
       printf("\nEnter n(<=1000):”);
       scanf("%d",&n);
      }
      while(n>1000);
      num=fun(a,n);
      printf("\n\nThe result:\n”);
      for(i=0;i<num;i++)
       printf("%5d",a);
      printf("\n\n");
      }

选项

答案(1) 错误:k=n; 正确:k=i; (2) 错误:s[j]=i; 正确:s[j++]=i;

解析 错误1:k就是当前要被判断的数,是随着i值的变化而变化的。错误2:在循环中,j是数组的下标要递增。
转载请注明原文地址:https://kaotiyun.com/show/6HID777K
0

最新回复(0)