1、国家二级( C语言)机试模拟试卷 39及答案与解析 一、选择题 1 下列叙述中正确的是 ( A)一个算法的空间复杂度大,则其时间复杂度也必定大 ( B)一个算法的空间复杂度大,则其时间复杂度必定小 ( C)一个算法的时间复杂度大,则其空间复杂度必定小 ( D)算法的时间复杂度与空间复杂度没有直接关系 2 下列叙述中正确的是 ( A)循环队列中的元素个数随队头指针与队尾指针的变化而动态变化 ( B)循环队列中的元素个数随队头指针的变化而动态变化 ( C)循环队列中的元素个数随队尾指针的变化而动态变化 ( D)以上说法都不对 3 一棵二叉树中共有 80个叶子结点与 70个度为 1的结点,则该二叉树
2、中的总结点数为 ( A) 219 ( B) 229 ( C) 230 ( D) 231 4 对长度为 10的线性表进行冒泡排序,最坏情况下需要比较的次数为 ( A) 9 ( B) 10 ( C) 45 ( D) 90 5 构成计算机软件的是 ( A)源代码 ( B)程序和数据 ( C)程序和文档 ( D)程序、数据及相关文档 6 软件生命周期可分为定义阶段、开发阶段和维护阶段,下面不属于开发阶段任务的是 ( A)测试 ( B)设计 ( C)可行性研究 ( D)实现 7 下面不能作为结构化方法软件需求分析工具的是 ( A)系统结构图 ( B)数据字典 (DD) ( C)数据流程图 (DFD图 )
3、 ( D)判定表 8 在关系模型中,每一个二维表称为一个 ( A)关系 ( B)属性 ( C)元组 ( D)主码(键) 9 若实体 A和 B是一对多的联系,实体 B和 C是一对一的联系,则实体 A和 C的联系是 ( A)一对一 ( B)一对多 ( C)多对一 ( D)多对多 10 有三个关系 R、 S和 T如下:则由关系 R和 S得到关系 T的操作是 ( A)选择 ( B)投影 ( C)交 ( D)并 11 我们所写的每条 C语句,经过编译最终都将转换成二进制的机器指令。关于转换以下说法错误的是 ( A)一条 C语句可能会被转换成零条机器指令 ( B)一条 C语句可能会被转换成多条机器指令 (
4、 C)一条 C语句对应转换成一条机器指令 ( D)某种类型和格式的 C语句被转换成机器指令的条数是固定的 12 关于 “while(条件表达式 )循环体 “,以下叙述正确的是 ( A)循环体的执行次数总是比条件表达式的执行次数多一次 ( B)条件表达式的执行次数总是比循环 体的执行次数多一次 ( C)条件表达式的执行次数与循环体的执行次数一样 ( D)条件表达式的执行次数与循环体的执行次数无关 13 关于 C语言的符号常量,以下叙述中正确的是 ( A)符号常量的符号名是标识符,但必须大写 ( B)符号常量是指在程序中通过宏定义用一个符号名来代表一个常量 ( C)符号常量在整个程序中其值都不能再
5、被重新定义 ( D)符号常量的符号名必须是常量 14 若有以下程序 #include stdio.h main() int b=10, a=-11; a %= b %= 4; printf(“%d %dn“, a, b); 则程序的输出结果是 ( A) 1 2 ( B) -1 2 ( C) -3 ( D) 2015/1/2 15 若有以下程序 #include stdio.h main() int a=0,b=0,c=0; c= (a -= +a), (a+=b, b+=4); printf(“%d,%d,%dn“,a,b,c); 则程序的输出结果是 ( A) 0,4,0 ( B) 0,4,4
6、 ( C) 1,4,1 ( D) 1,4,4 16 若有以下程序 #include stdio.h main() int a=0,b=0,c=0,d; c= (a+=b, b+=a); /*第 4行 */ d=c; /*第 5行 */ ; /*第 6行 */ ;printf(“%d,%d,%dn“,a,b,c); /*第 7行 */ 编译时出现错误,你认为出错的是 ( A)第 4行 ( B)第 5行 ( C)第 6行 ( D)第 7行 17 若有以下程序 #include stdio.h main() int a=1,b=2,c=3,d=4; if (a=2) | (b=1) c=2; if
7、(c=3) printf(“%d,%d,%d,%dn“, a,b,c,d); 则程序的输出结果是 ( A) 1,2,3,4 ( B) 2,1,2,-1 ( C) 5,1,2,-1 ( D) 2,2,2,4 18 若有以下程序 #include stdio.h main() int a=1,b=2,c=3,d=4, r=0; if (a!=1) ; else r=1; if (b=2) r+=2; else; if (c!=3) r+=3; else; if (d=4) r+=4; printf(“%dn“, r); 则程序的输出结果是 ( A) 10 ( B) 7 ( C) 6 ( D) 3
8、19 若有以下程序 #include stdio.h main() int s=0, n; for (n=0; n 4; n+) switch(n) default: s+=4; case 1: s+=1; case 2: s+=2; case 3: s+=3; printf(“%dn“, s); 则程序的输出结果是 ( A) 6 ( B) 18 ( C) 10 ( D) 24 20 若有以下程序 #include stdio.h main() int a=-2, b=0; while(a+) +b ; printf(“%d,%dn“, a, b); 则程序的输出结果是 ( A) 1,2 (
9、B) 0,2 ( C) 1,3 ( D) 2,3 21 若有以下程序 #include stdio.h main() int a=6, b=0, c=0; for ( ;a; ) b += a; a -= +c; printf(“%d,%d,%dn“, a,b,c); 则程序的输出结 果是 ( A) 1,14,3 ( B) 0,14,3 ( C) 0,18,3 ( D) 0,14,6 22 以下选项中非法的 C语言字符常量是 ( A) 007 ( B) b ( C) aa ( D) xaa 23 若有以下程序 #include stdio.h char f(char x) return x*x
10、+a; main() char a, b=0; for ( a=0; a 4; a+=1 ) b = f(a); putchar(b); 则程序的输出结果是 ( A) abcd ( B) ABEJ ( C) abej ( D) ABCD 24 若有以下程序 #include stdio.h void sp(int *a) int b=2; a= *a = *a * 2; printf(“%d,“, *a); main() int k=3, *p= sp(p); printf(“%d,%dn“, k, *p); 则程序的输出结果是 ( A) 4,3,3 ( B) 4,3,4 ( C) 6,3,6
11、 ( D) 6,6,6 25 若有以下程序 #include stdio.h int k=7; void f(int *s) int *t= *s=t; printf(“%d,%d,%d,“, k, *t, *s); main() int i=3,*p= f(r); printf(“%d,%d,%dn“, i, *p, *r); 则程序的输出结果是 ( A) 3,3,3,7,7,7 ( B) 3,7,7,7,7,7 ( C) 7,7,7,3,3,3 ( D) 7,7,7,3,7,7 26 若有以下程序 #include stdio.h int *f(int *s,int *t) int *k;
12、 if (*s *t) k = s; s=t; t=k; return s; main() int i=3, j=5, *p= r=f(p,q); printf(“%d,%d,%d,%d,%dn“, i, j, *p, *q, *r); 则程序的输出结果是 ( A) 3,5,5,3,5 ( B) 3,5,3,5,5 ( C) 5,3,5,3,5 ( D) 5,3,3,5,5 27 若有以下程序 #include stdio.h #define N 4 void fun(int aN, int b, int flag) int i,j; for(i=0; i N; i+) bi = ai0; f
13、or(j=1; j N; j+) if (flag ? (bi aij) : (bi aij) bi = aij; main( ) int xNN=1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16, yN,i; fun(x, y, 1); for ( i=0; i N; i+ ) printf(“%d,“, yi); fun(x, y, 0); for (i=0;i N; i+) printf(“%d,“, yi); printf(“n“); 则程序的输出结果是 ( A) 1,5,9,13,4,8,12,16, ( B) 4,8,12,16,1,5,
14、9,13, ( C) 1,2,3,4,13,14,15,16, ( D) 13,14,15,16,1,2,3,4, 28 若有以下程序 #include stdio.h void fun(int a , int n) int t,i,j; for (i=1; i n; i+=2) for (j=i+2; j n; j+=2) if (ai aj) t=ai; ai=aj;aj=t; main() int c10=10,9,8,7,6,5,4,3,2,1,i; fun(c, 10); for (i=0;i 10; i+) printf(“%d,“, ci); printf(“n“); 则程序的输
15、出结果是 ( A) 1,10,3,8,5,6,7,4,9,2, ( B) 10,9,8,7,6,5,4,3,2,1, ( C) 2,9,4,7,6,5,8,3,10,1, ( D) 10,1,8,3,6,5,4,7,2,9, 29 若有以下程序 #include stdio.h main() int i,j=0; char a=“How are you!“; for (i=0; ai; i+) if (ai != ) aj+=ai; aj=0; printf(“%sn“,a); 则程序的输出结果是 ( A) Hay! ( B) Howareyou ( C) Howareyou! ( D) Ho
16、w are you! 30 若有以下程序 #include stdio.h char *a=“you“; char b =“Welcome you to China!“; main() int i, j=0; char *p; for ( i=0; bi !=0; i+ ) if (*a = bi) p=a; for (j=i; *p!=0; j+) if (*p != bj) break; p+; if (*p=0) break; printf(“%s“, 则程序的输出结果是 ( A) China! ( B) to China! ( C) me you to China! ( D) you
17、to China! 31 若有以下程序 #include stdio.h main() char a20, b =“The sky is blue.“; int i; for (i=0; i 7; i+) scanf(“%c“, gets(a); printf(“%s%sn“, a,b); 执行时若输入 : (其中 Enter表示回车符 ) Fig flower is red. Enter 则输出结果是 ( A) wer is red.Fig flo is blue. ( B) wer is red.Fig flo ( C) wer is red.The sky is blue. ( D) F
18、ig flower is red.The sky is blue. 32 若有以下程序 #include stdio.h main() char w20, a510=“abcdef“, “ghijkl“, “mnopq“, “rstuv“, “wxyz“; int p62=0,1,1,5,0,0,0,2,1,4,4,4, i; for (i=0; i 6; i+) wi=a pi0 pi1 ; puts(w); 则程序的输出结果是 ( A) catis ( B) ababj ( C) ckbdl ( D) black 33 若有以下程序 #include stdio.h void f(int
19、x) if (x = 10) printf(“%d-“, x%10); f(x/10); else printf(“%d“, x); main() int z = 123456; f(z); 则程序的输出结果是 ( A) 6-5-4-3-2-1- ( B) 6-5-4-3-2-1 ( C) 1-2-3-4-5-6 ( D) 1-2-3-4-5-6- 34 若有以下程序 #include stdio.h int a=2; int f(int m) static int n; n=0; n+; a+; return n+m+a; main() int k; for (k=0; k 4; k+) p
20、rintf(“%d,“, f(k); 则程序的输出结果是 ( A) 4,5,6,7, ( B) 4,7,10,13, ( C) 4,6,8,10, ( D) 3,5,7,9, 35 若有以下程序 #include stdio.h #define S(x) x*x #define T(x) S(x)*S(x) main() int k=5, j=2; printf(“%d,%dn“, S(k+j),T(k+j); 则程序的输出结果是 ( A) 17,289 ( B) 492,401 ( C) 17,37 ( D) 49,289 36 若有以 下程序 #include stdio.h #inclu
21、de stdlib.h #include string.h struct stu char *name, gender; int score; ; main() struct stu a=NULL, m, 290, b; a.name=(char *)malloc(10); strcpy(a.name, “Zhao“); b = a; b.gender = f; b.score = 350; strcpy(b.name, “Qian“); printf( “%s,%c,%d,“, a.name, a.gender, a.score ); printf( “%s,%c,%dn“, b.name,
22、 b.gender, b.score ); 则程序的输出结果是 ( A) Zhao,m,290,Zhao,f,350 ( B) Zhao,m,290,Qian,f,350 ( C) Qian,f,350,Qian,f,350 ( D) Qian,m,290,Qian,f,350 37 若有以下程序 #include stdio.h #include stdlib.h #include string.h typedef struct stu char *name, gender; int score; STU; void f(char *p) p=(char *)malloc(10); strc
23、py(p, “Qian“); main() STU a=NULL, m, 290, b; a.name=(char *)malloc(10); strcpy( a.name, “Zhao“ ); b = a; f(b.name); b.gender = f; b.score = 350; printf(“%s,%c,%d,“, a.name, a.gender, a.score); printf(“%s,%c,%dn“, b.name, b.gender, b.score); 则程序的输出结果是 ( A) Zhao,m,290,Qian,f,350 ( B) Zhao,m,290,Zhao,f
24、,350 ( C) Qian,f,350,Qian,f,350 ( D) Qian,m,290,Qian,f,350 38 若有定义 typedef int* T; T a10; 则 a的定义与下面哪个语句等价 ( A) int (*a)10; ( B) int *a10; ( C) int *a; ( D) int a10; 39 若有以下程序 #include stdio.h main() int c; c= 105; printf(“%dn“, c); 则程序的输出结果是 ( A) 5 ( B) 15 ( C) 10000 ( D) 105 40 若有以下程序 #include stdi
25、o.h main() FILE *fp; int i, a6=1,2,3,4,5,6,k; fp = fopen(“data.dat“, “w+“); for (i=0; i 6; i+) fseek(fp, 0L, 0); fprintf(fp, “%dn“, ai); rewind(fp); fscanf(fp, “%d“, fclose(fp); printf(“%dn“, k); 则程序的输出结果是 ( A) 123456 ( B) 1 ( C) 6 ( D) 21 二、程序填空题 41 下列给定程序中,函数 fun的功能是:找出 100999(含 100和 999)所有整数中各位上数
26、字之和为 X(x为正整数 )的整数,并输出;符合条件的整数个数作为函数值返回。 例如,当 x值为 5时, 100999各位上数字之和为 5的整数有: 104, 113,122, 131, 140, 203, 212, 221, 230, 302, 311, 320, 401, 410, 500,共有 15个。当 x值为 27时,各位数字之和为 27的整数是: 999,只有 1个。 请在程序的下画线处填入 正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h int fun(int X
27、) 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(sl+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); 三、程序修改题 42 下列给定
28、程序中函数 fun的功能是:将字符串中的字符逆序输出,但不改变字符串中的内容。 例如,若字符串为 “abed”,则应输出: “deba”。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h /*found*/ void fun(char a) if(*a) fun(a+1); /*found*/ printf(“ c”*a); main() char s10=“abcd”; printf(“处理前字符串 = s n,处理后字 符串 =”, s); fun(s); printf(“ n
29、”); 四、程序设计题 43 编写函数 fun,其功能是:根据以下公式计算 s,并将计算结果作为函数值返回, n通过形参传入。 例如,若 n的值为 11时,函数的值为 1 833333。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include stdlib h #include conio h #include stdio h #include string h float fun(int n)void main() int n, float S; system(“CLS”); printf(“n
30、Please enter N: ”), scanf(“ d”, 语句,再执行第二个 if语句中的判断条件 ,成立 ,左移执行 r+=2,r的值为 3,再执行第三个 if的判断条件 ,不成立执行第 7行 else后面的空语句 “;“,再执行第四个 if的判断条件 d=4成立 ,执行 r+=4,r的值为 7,然后打印输出。 19 【正确答案】 D 【试题解析】 第一次 for循环 ,n的值为 0,所以从 default后面的语句开始执行 ,s+=4,s+=1,s+=2,s+=3,s的值为 10,在进入第二次 for循环 ,n的值为 1,所以执行s+=1,s+=2,s+=3,s的值为 16,在进入第
31、三次 for循环 ,n的值为 2,所以执行s+=2,s+=3,s的值为 21,在进入第四次 for循环 ,n的值为 3,所以执行 s+=3,s的值为24。 20 【正确答案】 A 【试题解析】 第一次 while判断条件中 a+,先用后加 ,为 -2不为 0条件为真 ,执行 a的自加与 +b操作 ,a的值变为 -1,b的值变为 1,第二次 while判断后 ,a的值变为 0,b的值变为 2,第三次 while判断条件为假 ,但是仍要执行自加操作 ,即值为 1,跳出循环,打印 1和 2。 21 【正确答案】 B 【试题解析】 本循环的条件判断时只要 a为 0就 退出循环体 ,初始值 a的值为 6
32、,满足条件执行完循环体 ,b的值为 6,a-=+ +c即 a=a-(+c),所以 a的值为 5,c的值为 1?第二次循环后 b的值为 11,a的值为 3,c的值为 2?第三次也是最后循环后 ,a的值为0,b的值 14,c的值为 3? 22 【正确答案】 C 【试题解析】 C选项中是字符串常量 ,应该用双引号表示即 “aa“,所以选择 C选项。 23 【正确答案】 C 【试题解析】 该题目首先初始化变量 a和 b,通过 for循环语句使 a取值为 0、1、 2、 3, f函数的功能是将 a*a+a的值返回 给 b,即 b为 a、 b、 e、 j。最后通过字符输出函数 putchar()将 b输出
33、。因此 C选项正确。 24 【正确答案】 A 【试题解析】 首先在主函数中给整型变量 k赋值为 3,将变量 k的地址赋给指针变量 p;调用 sp函数,将实参 p的值传给形参 a,在 sp函数中,指针变量 a又获得变量 b的地址,通过运算后,输出 a的值为 4;返回主函数,输出 k的值和 p的值为 3和 3。因此 A选项正确。 25 【正确答案】 D 【试题解析】 在主函数中分别给整型变量 i,指针型变量 p和指向指针的指针变量r赋初值 ;调用 f函数 ,并将实 参变量 r的值传递给形参变量 s,在 f函数中 ,通过printf(“%d,%d,%d,“, k, *t, *s);语句输出 7,7,
34、7;返回主函数 ,通过printf(“%d,%d,%dn“, i, *p, *r);输出 3,7,7,因此 D选项正确。 26 【正确答案】 B 【试题解析】 在主函数中分别给整型变量 i、 j和指针型变量 p、 q赋初值,并声明指针变量 r;调用 f函数,并将实参变量 p和 q的值传递给形参变量 s和 t,并且 f函数是指针型函数,即函数的返回值将是一个地址。在 f函数中,如果条件成立,则将指针变 量 s和 t互换,并且将指针 s的地址返回主函数。最后输出 i, j, *p, *q, *r的值,即 3,5,3,5,5。因此 B选项正确。 27 【正确答案】 A 【试题解析】 该题首先初始化二
35、维数组 ,if (flag : (bi aij) : (bi aij)条件语句的条件表达式使用了条件运算符构成的选择结构 ,即 flag为真时 ,以 (bi aij)作为条件表达式的值 ,否则以 (bi aij)作为条件表达式的值 ,fun函数功能是给一维数组赋值, fun(x, y, 1);该函数调用后 ,即当 flag为真时 ,使一维数组获得二维数组第 1列的数值 ;fun(x, y, 0);该函数调用后 ,即当 flag为假时 ,使一维数组获得二维数组第 4列的数值 ;因此 A选项正确。 28 【正确答案】 D 【试题解析】 该题首先对一维数组进行初始化, c0到 c9依次赋值为 10到
36、 1;fun(c, 10);语句调用 fun函数, fun函数的功能是将一维数组偶数位元素的数值由小到大排序;最后将排好序的新的一维数组进行输出。因此 D选项正确。 29 【正确答案】 C 【试题解析】 主函数中首先定义字符数组 a=“How are you!“;执行 for循环语句,语句 if (ai != ) aj+=ai; 其功能是将字符数组中的空格去掉。因此 C选项正确。 30 【正确答案】 D 【试题解析】 该程序首先定义 *a和 b ,并进行初始化。主函数中通过外层 for循环语句,遍历字符数组 b ,并且将符合 if条件语句的字符赋给数组 p; for内层循环语句,遍历字符数组
37、a 。再将符合 if条件语句的结果输出。因此 D选项正确。 31 【正确答案】 A 【试题解析】 程序首先初始化字符数组 b,执行 for循环语句 ,循环变量 i的取值范围从 0到 6?在 for循环语句中通过 scanf函数将从键盘上输入的数据输入到 b 中 ,即 b的值为 Fig flo is blue.?退出 for循环语句 ,执行语句 gets(a); ,gets()函数的调用形式为 :gets(str_adr),其中 str_adr是存放输入字符串的起始地址 ,可以是字符数组名 ?字符数组元素的地址或字符指针变量 ?gets函数用来从终端键盘读入字符串(包括空格符 ),直到读入一个换
38、行符为止 ,即 a的值 为 wer is red.?因此 A选项正确 ? 32 【正确答案】 D 【试题解析】 程序首先初始化字符数组 a510和二维数组 p62。执行 for循环语句,循环变量 i从 0取值到 5,得到字符数组 w 的值,并通过字符串输出函数 puts进行输出操作。 w0=a01、 w1=a15 、 w2=a00 、w3=a02 、 w4=a14 、 w5=a44;因此最后字符数组 w的结果为black。因此 D选项正确。 33 【正确答案】 B 【试题解析】 本题重点考察函数的递归调用,程序首先初始化整型变量 z为123456,调用函数 f。 f函数中首先通过 if条件语句
39、判断 x是否大于等于 10,如果条件成立,求 x除以 10的余数并输出,同时将变量 x进行 x/10运算,同时调用函数 f。如果条件不成立,直接输出变量 x。因此第 1次调用函数,变量 x为123456,条件成立,输出余数 6;第 2次调用函数,变量 x为 12345,条件成立,输出余数 5;第 3次调用函数,变量 x为 1234,条件成立,输出余数 4;第 4次调用函数,变量 x为 123,条件成立,输出余数 3;第 5次调用函数,变量 x为 12,条件成立,输出余数 2;第 6次调用函数,变量 x为 12345,条件不成立,输出1。因此 B选项正确。 34 【正确答案】 C 【试题解析】
40、主函数中变量 k作为 for语句的循环变量,取值 0、 1、 2、 3,同时也作为实参通过调用函数 f传递给形参变量 m。由于变量 a是全局变量,变量 n是static静态变量,因此 k=0时, f函数中,语句 return n+m+a;即 1+0+3=4; k=1时, f函数中,语句 return n+m+a;即 2+1+3=6; k=2时, f函数中,语句 return n+m+a;即 3+2+3=8; k=3时, f函数中,语句 return n+m+a;即 4+3+3=10。因此 C选项正确。 35 【正确答案】 C 【试题解析】 本题考查宏定义,宏定义只是做个简单的替换,执行S(k+
41、j)=k+j*k+j=17,T(k+j)=S(k+j)*S(k+j)=k+j*k+j*k+j*k+j=37,选项 C正确。 36 【正确答案】 D 【试题解析】 本题中考查结构体中变量的引用, a结构体中 name被修改为Qian,所以本题答案为 D。 37 【正确答案】 B 【 试题解析】 本题考查结构体变量中的引用,其中 a的 name为 Zhao, b执行函数 f(b.name)后 b的 name并没有改变,还是 Zhao,所以答案为 B选项。 38 【正确答案】 B 【试题解析】 本题考查 typedef的使用方法, typedef对已存在的类型使用一个新的名字,其中本题中 int*
42、用 T来代替,所以定义 T a10;就相当于是 int *a10;选项 B正确。 39 【正确答案】 B 【试题解析】 本题考查位运算中按位异或运算符,异或运算只有在两个比较的位不同时其结果是 1,否则结果为 0, 10用二进制表示为 00001010,5用二进制表示为 00000101,异或后 00001111,即 15,选项 B正确。 40 【正确答案】 C 【试题解析】 本题考查文件操作函数, fseek 用于二进制方式打开的文件 ,移动文件读写指针位置。将文件内部的位置指针重新指向一个流(数据流 /文件)的开头。所以最后只保留了 6,答案为 C。 二、程序填空题 41 【正确答案】 (
43、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。 三、程序修改题 42 【正确答案】 (1)void fun(char*a) (2)prinff(“ c”, *a); 【试题解析】 (1)定义函数时形参的类型要与凋用函数中实参的类型一致,主函数中 fun传递的是字符串 s的首地址,所以此处形参应为指针类
44、型。 (2)根据 prinff函数格式,很容易找到错误之处。 四、程序设计题 43 【正确答案】 float fun(int n) int i, s1=0; float s=0 0; for(i=1, i =n, i+) s1=s1+i; *求每一项的分母 * s=s+1 0 s1, *求多项式的值 * return s; 【试题解析】 此类计算表达式值的程序,首先需要根据题意分析表达式的规律,得出通项,然后 再完成程序语句。 本题中表达式的规律是 1+2+n 的倒数之和,那么可以通过 for循环语句来实现第 1项到第 n项的变化。其实就是累加算法,方法是先根据题目要求定义变鼍,注意该变量的数据类型,然后对其进行初始化操作,因为该变量的作用是累加器,所以初始值应为 0(或 0 0,根据变量数据类型来确定 ),再通过 for循环语句来完成累加过程。 本题中 s1用来表示每一项的分母,每一项的分母都是由前一项分母加项数。注意,由于 s1定义成一个整型,所以在 s=s+1 0 s1语句中不能把 1 0写成 1。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1