a全国计算机二级C语言 # 程序填空题:赋值语句
给定程序中,函数f血m的功能是:找出100至x(x≤999)之间各位上的数字之和为15的所有整 数,然后输岀;符合条件的整数个数作为函数值返回。
例如,当n值为500时,各位数字之和为15的整数有:159、168、177、186、195、249、258、
267、276、285、294、339、348、357、366、375、384、393、429、438、447、456、465、474、 483、492。共有26个。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得岀正确的结果。
注意:源程序存放在考生文件夹下的BLAK1.C中,并且,要先打开 BLANK1.SLN文件再操作。
不得增行或刪行,也不得更改程序的结构!
#include <stdio.h>
int fun(int x)
{ int n, s1, s2, s3, t;
/**********found**********/
n=__1__;
t=100;
/**********found**********/
while(t<=__2__)
{ s1=t%10; s2=(t/10)%10; s3=t/100;
if(s1+s2+s3==15)
{ printf(“%d “,t);
n++;
}
/**********found**********/
__3__;
}
return n;
}
main()
{ int x=-1;
while(x>999||x<0)
{ printf(“Please input(0<x<=999): “); scanf(“%d”,&x); }
printf(“\nThe result is: %d\n”,fun(x));
}
[codesyntax lang=”php”]
[微答案]
(1) 0 (2)X(3)t++
[微分析]
填空1:变量x用于存放符合条件的整数的个数,应赋初值为0。填空2:根据题目要求,确定循环变里t的取值范围t<= xo
填空3:循环变里t自增1操作。
#include
int fun(int x)
{ int n, s1, s2, s3, t;
/**********found**********/
n=0;
t=100;
/**********found**********/
while(t<=x)
{ s1=t%10; s2=(t/10)%10; s3=t/100;
if(s1+s2+s3==15)
{ printf("%d ",t);
n++;
}
/**********found**********/
t++;
}
return n;
}
main()
{ int x=-1;
while(x>999||x<0)
{ printf("Please input(0<x<=999): ");="" scanf("%d",&x);="" }="" printf("\nthe="" result="" is:="" %d\n",fun(x));="" <="" pre="">[/codesyntax]</x<=999):>
41)
给定程序中,函数fm的功能是:将形参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=”php” strict=”no”]
[微答案]
(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)
给定程序中,函数fm的功能是:计算下式前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” strict=”yes”]
【微答案】
(1) 0 (2) n (3) (t*t)
【微分析】
填空1:程序开始定义了变量s,但没有对其进行初始化,根据公式及后面的程序可知变量s用来存储公式的前n项和,因此该变量应初始化为0。
填空2:通过for循环语句将表达式各项进行累加,结果存于变量s中,循环变量i的取值范围为1~n。
填空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]