全国计算机二级C语言 # (17)程序填空题:算术表达式(1-14)

全国计算机二级C语言 # 程序填空题:算术表达式(1-14)


41)
给定程序中,函数 fun 的功能是:找出 100~999 之间(含 100 和 999) 所有整数中各位上数字之和为 x (x 为一正整数)的整数,然后输出;符合条件的整数个数作为函数值返回。
例如,当 x 值为 5 时,100~999 之间各位上数字之和为 5 的整数有:104、113、122、131、140、203、212、221、230、302、311、320、401、410、500。共有 15 个。当 x 值为 27 时,各位数字之和为 27 的整数是:999。只有 1 个。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的 BLANK1. C 中,并且,要先打开 BLANK1. SLN 文件再操作。
不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
int fun(int x)
{ int n, s1, s2, s3, t;
n=0;
t=100;
/**********found**********/
while(t<=__1__){
/**********found**********/
s1=t%10; s2=(__2__)%10; s3=t/100;
/**********found**********/
if(s1+s2+s3==__3__)
{ printf(“%d “,t);
n++;
}
t++;
}
return n;
}
main()
{ int x=-1;
while(x<0)
{ printf(“Please input(x>0): “); scanf(“%d”,&x); }
printf(“\nThe result is: %d\n”,fun(x));
}
[codesyntax lang=”c”]

【微答案】
(1) 999  (2) t/10  (3) x
【微分析】
填空1:题目要求找出100~999之间符合要求的数,所以while语句的循环条件是t<=999。
填空2:变量s2存放三位数的十位,取出三位数十位数值的方法为s2=(t/10)%10。
填空3:题目需要判断各位上数字之和是否为x,所以if语句条件表达式是s1+s2+s3==x。
#include
int fun(int  x)
{ int  n, s1, s2, s3, t;
  n=0;
  t=100;
/**********found**********/
  while(t<=999){
/**********found**********/
    s1=t%10;  s2=(t/10)%10;  s3=t/100;
/**********found**********/
    if(s1+s2+s3==x)
    {  printf("%d ",t);
       n++;
    }
    t++;
  }
  return  n;
}
main()
{ int x=-1;
  while(x<0)
  { printf("Please input(x>0): ");  scanf("%d",&x);  }
  printf("\nThe result is: %d\n",fun(x));
}

[/codesyntax]


41
给定程序中,函数 fun 的功能是:将形参 n 中,各位。上为偶数的数取出,并按原来从高位到低位的顺序组成一-个新的数,并作为函数值返回。
例如,从主函数输入一-个整数:27638496,函数返回值为:26846。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的 BLANK1. C 中,并且,要先打开 BLANK1. SLN 文件再操作。
不得增行或删行,也不得更改程序的结构!
 
#include <stdio.h>
unsigned long fun(unsigned long n)
{ unsigned long x=0, s, i; int t;
s=n;
/**********found**********/
i=__1__;
/**********found**********/
while(__2__)
{ t=s%10;
if(t%2==0){
/**********found**********/
x=x+t*i; i=__3__;
}
s=s/10;
}
return x;
}
main()
{ unsigned long n=-1;
while(n>99999999||n<0)
{ printf(“Please input(0<n<100000000): “); scanf(“%ld”,&n); }
printf(“\nThe result is: %ld\n”,fun(n));
}
 
[codesyntax lang=”c”]

【微答案】
(1) 1  (2) s>0  (3) i*10
【微分析】
填空1:变量i用来控制被取出的偶数在新数中的位置,应赋初值1。
填空2:while语句的循环条件是s>0。
填空3:变量i用来标识个位、百位和千位等。
#include
unsigned long fun(unsigned long  n)
{  unsigned long  x=0, s, i;   int  t;
   s=n;
/**********found**********/
   i=1;
/**********found**********/
   while(s>0)
   {  t=s%10;
      if(t%2==0){
/**********found**********/
         x=x+t*i;  i=i*10;
      }
       s=s/10;
   }
   return  x;
}
main()
{  unsigned long  n=-1;
   while(n>99999999||n<0)
  { printf("Please input(0<n<100000000): ");="" scanf("%ld",&n);="" }="" printf("\nthe="" result="" is:="" %ld\n",fun(n));="" <="" pre="">[/codesyntax]</n<100000000):>


41)
给定程序中,函数 fun 的功能是:将形参 n 中,各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一-个新的数,并作为函数值返回。
例如,输入一-个整数:27638496,函数返回值为:64862。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的 BLANK1. C 中,并且,要先打开 BLANK1. SLN 文件再操作。
不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
unsigned long fun(unsigned long n)
{ unsigned long x=0; int t;
while(n)
{ t=n%10;
/**********found**********/
if(t%2==__1__)
/**********found**********/
x=__2__+t;
/**********found**********/
n=__3__;
}
return x;
}
main()
{ unsigned long n=-1;
while(n>99999999||n<0)
{ printf(“Please input(0<n<100000000): “); scanf(“%ld”,&n); }
printf(“\nThe result is: %ld\n”,fun(n));
}
[codesyntax lang=”c”]

【微答案】 (1)0  (2) 10*x  (3) n/10
【微分析】
填空 1: 定义变里 t 拥来存放某数的各个位数值,此处判断 t 是否为偶数,即对 2 求余结果是否为 0。填空 2: 将 t 作为 x 的个位数,原来 x 的各个位上升十位,即 x = 10*x+t。填空 3: 每循环- -次,通过除法运算,去掉数值最后一位。
#include
unsigned long fun(unsigned long  n)
{ unsigned long  x=0;    int  t;
  while(n)
  { t=n%10;
/**********found**********/
    if(t%2==0)
/**********found**********/
       x=10*x+t;
/**********found**********/
    n=n/10;
  }
  return  x;
}
main()
{ unsigned long  n=-1;
  while(n>99999999||n<0)
  { printf("Please input(0<n<100000000): ");="" scanf("%ld",&n);="" }="" printf("\nthe="" result="" is:="" %ld\n",fun(n));="" <="" pre="">[/codesyntax]
</n<100000000):>


41
给定程序中,函数 fun 的功能是:将形参 n 所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成- -个新的数,并通过形参指针 n 传回所指变量。
例如,输入一个数:27638496,新的数:为 739。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的 BLANK1. C 中,并且,要先打开 BLANK1. SLN 文件再操作。
不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
void fun(unsigned long *n)
{ unsigned long x=0, i; int t;
i=1;
while(*n)
/**********found**********/
{ t=*n % __1__;
/**********found**********/
if(t%2!= __2__)
{ x=x+t*i; i=i*10; }
*n =*n /10;
}
/**********found**********/
*n=__3__;
}
main()
{ unsigned long n=-1;
while(n>99999999||n<0)
{ printf(“Please input(0<n<100000000): “); scanf(“%ld”,&n); }
fun(&n);
printf(“\nThe result is: %ld\n”,n);
}
 


41
给定程序中,函数 fun 的功能是:计算下式前 n 项的和作为函数值返回。

例如,当形参 n 的值为 10 时,函数返回:9. 612558。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的 BLANK1. C 中,并且,要先打开 BLANK1. SLN 文件再操作。
不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
double fun(int n)
{ int i; double s, t;
/**********found**********/
s=__1__;
/**********found**********/
for(i=1; i<=__2__; i++)
{ t=2.0*i;
/**********found**********/
s=s+(2.0*i-1)*(2.0*i+1)/__3__;
}
return s;
}
main()
{ int n=-1;
while(n<0)
{ printf(“Please input(n>0): “); scanf(“%d”,&n); }
printf(“\nThe result is: %f\n”,fun(n));
}
[codesyntax lang=”php”]

【微答案】
 (1) 0  (2) n  (3)  (t*t)
【微分析】
填空 1: 程序开始定义了变里 s,但没有对其进行初始化,根据公式及后面的程序可知变里 s 用来存储公式的前项和,因此该变量应初始化为 0。
填空 2: 通过 for 循环语句将表达式各项进行累加,结果存于变里 s 中,循环变里的取值范围为 1
填空 3: 根据题目要求确定表达式通项,前面已定义 t=2. 0*i,因此此空应填(t*t)。
#include
double fun(int  n)
{ int  i;    double  s, t;
/**********found**********/
  s=0;
/**********found**********/
  for(i=1; i<=n; i++)
  { t=2.0*i;
/**********found**********/
    s=s+(2.0*i-1)*(2.0*i+1)/(t*t);
  }
  return  s;
}
main()
{ int  n=-1;
  while(n<0)
  { printf("Please input(n>0): "); scanf("%d",&n);  }
  printf("\nThe result is: %f\n",fun(n));
}

[/codesyntax]
 


41)
给定程序中,函数 fun 的功能是:计算下式前 n 项的和作为函数值返回。

例如,当形参 n 的值为 10 时,函数返回:-0. 204491。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的 BLANK1. C 中,并且,要先打开 BLANK1. SLN 文件再操作。不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
double fun(int n)
{ int i, k; double s, t;
s=0;
/**********found**********/
k=__1__;
for(i=1; i<=n; i++) {
/**********found**********/
t=__2__;
s=s+k*(2*i-1)*(2*i+1)/(t*t);
/**********found**********/
k=k*__3__;
}
return s;
}
main()
{ int n=-1;
while(n<0)
{ printf(“Please input(n>0): “); scanf(“%d”,&n); }
printf(“\nThe result is: %f\n”,fun(n));
}
[codesyntax lang=”php”]

【微答案】
 (1) 1  (2) 2*i  (3)  (-1)【微分析】
填空 1: 由 fun 函数整体结构可以看出 k 的作用是赋值,并累加各项前边的正负号,由于第一项是正的,因此赋给 1 的值为 1。
填空 2: 此空下- -行的表达式 k*  (2*i-1) *  (2*i +1) / (t*t)累加的通向,k 为正负号,由题目中公式可知
t=2*i。
填空 3: 由于通向前边的正负号每次都要发生变化,因此 k=k* <-1)。
#include
double fun(int  n)
{ int  i, k;    double  s, t;
  s=0;
/**********found**********/
  k=1;
  for(i=1; i<=n; i++) {
/**********found**********/
    t=2*i;
    s=s+k*(2*i-1)*(2*i+1)/(t*t);
/**********found**********/
    k=k*(-1);
  }
  return  s;
}
main()
{ int  n=-1;
  while(n<0)
  { printf("Please input(n>0): ");  scanf("%d",&n);  }
  printf("\nThe result is: %f\n",fun(n));
}

[/codesyntax]


41)
给定程序中,函数 fun 的功能是计算下式

例如:若形参 e 的值为 1 e-3, 函数的返回值为 0.551690。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的 BLANK1. C 中,并且,要先打开 BLANK1. SLN 文件再操作。
不得增行或删行,也不得更改程序的结构!,
#include <stdio.h>
double fun(double e)
{ int i, k; double s, t, x;
s=0; k=1; i=2;
/**********found**********/
x=__1__/4;
/**********found**********/
while(x __2__ e)
{ s=s+k*x;
k=k* (-1);
t=2*i;
/**********found**********/
x=__3__/(t*t);
i++;
}
return s;
}
main()
{ double e=1e-3;
printf(“\nThe result is: %f\n”,fun(e));
}
[codesyntax lang=”php”]

【微答案】
 (1)3. 或(double)3  (2)>  (3)  (t+1)
【微分析】
填空1:变里x定义为double类型,而运算符'/后面是整型数,所以给x赋值时,需要注意数据类型,此处不能将 3.0 写成 3。
填空 2: while 循环语句的循环条件,根据题意确定循环变里应大于 1 e- 3, 因此此处应填”》”。填空 3: 表达式的通项是(2*i+1) / (2*i)2,由于程序中已定义 t=2*i,所以此处应该填写(t+1)。
#include
double fun(double  e)
{ int  i, k;    double  s, t, x;
  s=0;  k=1;  i=2;
/**********found**********/
  x=3.0/4;
/**********found**********/
  while(x < e)
  { s=s+k*x;
    k=k* (-1);
    t=2*i;
/**********found**********/
    x=(t+1)/(t*t);
    i++;
  }
  return  s;
}
main()
{ double  e=1e-3;
  printf("\nThe result is: %f\n",fun(e));
}

[/codesyntax]
 


 

216 Views
分享你的喜爱
linwute
linwute

我要像梦一样自由,像大地一样宽容;
在艰辛放逐的路上,点亮生命的光芒;
我要像梦一样自由,像天空一样坚强;
在曲折蜿蜒的路上,体验生命的意义;

留下评论

您的电子邮箱地址不会被公开。 必填项已用*标注