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]