知ing

最新计算机二级C语言上机试题汇编100套

NCRE研究组 编 / 高等教育出版社

゛Zirro、Y 上传

查看本书

77套: 

给定程序中,函数fun的功能是:将形参n中,各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新的数,并作为函数值返回。 

例如,输入一个整数:27638496,函数返回值为:64862。 

请在程序的下划线处填入正确的内容并把下划线删除使程序得出正确的结果。 

注意:源程序存放在考生文件夹下的BLANK1.C中。 

不得增行或删行,也不得更改程序的结构! 

给定源程序: 

#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)); 

解题思路: 

第一处:判断t是否是偶数,所以应填:0。 

第二处:每操作一次,x必须乘以10,再加t,所以应填:10*x。 

第三处:每循环一次n的值缩小10倍,所以应填:n/10。 

*************************************************** 

给定程序MODI1.C中函数fun的功能是:将长整型数中每一位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。 

例如,当s中的数为:87653142时,t中的数为:7531。 

请改正程序中的错误,使它能得出正确的结果。 

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 

给定源程序: 

#include <stdio.h> 

void fun (long s, long *t) 

{ int d; 

long sl=1; 

/ ************found************/ 

t = 0; 

while ( s > 0) 

{ d = s%10; 

/ ************found************/ 

if (d%2 == 0) 

{ *t = d * sl + *t; 

\TAB sl *= 10; 

s /= 10; 

main() 

{ long s, t; 

clrscr(); 

printf("\nPlease enter s:"); scanf("%ld", &s); 

fun(s, &t); 

printf("The result is: %ld\n", t); 

解题思路: 

第一处:由于t是一个指针变量,赋初值的方式应为:*t=0;。 

第二处:d%2条件判断时应为不是0,所以应改为:if(d%2!=0)。 

*************************************************** 

编写一个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat), 即把p2所指的字符串连接到p1所指的字符串后。 

例如,分别输入下面两个字符串: 

FirstString-- 

SecondString 

程序输出: FirstString--SecondString 

注意部分源程序在文件PROG1.C文件中。 

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 

给定源程序: 

#include <stdio.h> 

void fun(char p1[], char p2[]) 

main() 

{ char s1[80], s2[40] ; 

printf("Enter s1 and s2:\n") ; 

scanf("%s%s", s1, s2) ; 

printf("s1=%s\n", s1) ; 

printf("s2=%s\n", s2) ; 

printf("Invoke fun(s1,s2):\n") ; 

fun(s1, s2) ; 

printf("After invoking:\n") ; 

printf("%s\n", s1) ; 

NONO() ; 

解题思路: 

本题是不使用字符串库函数来实现两个字符串的连接。 

参考答案: 

void fun(char p1[], char p2[]) 

char *p=p1; 

while(*p)p++; 

while(*p2) *p++=*p2++; 

*p=0; 

※※※※※※※※※※※※※※※※※※※※※※※※※ 


查看更多