【真题1】 下列给定程序中,函数fun()的功能是:将长整型数中每一位上为偶数的 数依次取出,构成一个新数放在t 中。高位仍在高位,低位仍在低位。例如,当s 中 的数为87653142 时,t 中的数为8642。 试题程序: #include < conio.h > #include < stdio.h > void fun(long s,long *t) { __1___; long s1=1; *t=0; while(s >0) { d=s%10; if(___2___) {*t=d*s1+*t; s1*=10; } __3___; } } main() { long s,t; printf("\nPlease enter s: "); scanf("%ld",&s); fun(s,&t); printf("The result is :%ld\n",t); } (2011年2月) 解析: 填空1:这里缺少一句话,我们在程序中可以看到变量d是没有被定义 的,这时我们可以想到这里肯定要对变量d进行声明,但是d是什么类型的变 量就要根据它在程序中的使用情况了,这里d是长整型的。 填空2:这一行上一句指令的作用是将十进制数的每一位依次取出,然后考查这 一位是不是偶数,如果是的话就将它放在新的数中,这里要注意的是逻辑判断 符号"=="不要写成"="。 填空3:在if语句结束之后,我们从给定的数字中取出了一位数字,下面要取 下一位了,我们的方法是将个位去掉。 答案:【1】long d 【2】d%2==0 【3】s/=10 【真题2】 给定程序modi.c 中函数fun的功能是:根据输入的三个边长(整型 值),判断能否构成三角形: 构成的是等边三角形,还是等腰三角形。若能构成等 边三角形函数返回3,若能构成等腰三角形函数返回2,若能构成一般三角形函数返 回1,若不能构成三角形函数返回0。 请改正函数fun 中指定部位的错误,使它能 得出正确的结果。 注意:不要改动main 函数, #include < math.h > int fun(int a,int b,int c) { if(a+b >c && b+c >a && a+c >b) { if(a==b && b==c) /**************found**************/ return 1; else if(a==b||b==c||a==c) return 2; /**************found**************/ else return 3; } else return 0; } main() { int a,b,c,shape; printf("\nInput a,b,c: "); scanf("%d%d%d",&a,&b,&c); printf("\na=%d, b=%d, c=%d\n",a,b,c); shape =fun(a,b,c); printf("\n\nThe shape : %d\n",shape); } 解析: 本题的考核点是逻辑运算、函数的返回值和if语句的使用。 提示思路:根据平面几何知识,如果任意两边之和大于第三边,则可以构成三 角形。在给出的程序中,先判断输入的三个边长是否能够构成三角形,若不 能,则返回0;反之,若判断其中的任意两条边相等,即逻辑或的关系,则能够 构成等腰三角形,返回2;若三条边均相等,即a==b && b==c,则构成等边 三角形,返回3;若不存在边相等的情况,仅仅两边之和大于第三边,则构成一 般的三角形,返回1。 本题中的第一个错误:如果if(a==b && b==c)为真,即三条边均相等,则是 等腰三角形,所以程序中语句" return 1;"应改为" return 3;"或相同作用的语 句。 本题中的第二个错误:else语句的条件是三条边不存在相等的情况,所以构成 的应该是一般三角形,应该将"return 3;"改为"return 1;"或相同作用的语句。 【真题3】 函数fun 的功能是:实现两个整数的交换。 例如给a 和b 分别输入: 60 和65,输出为:a=65 b=60 #include < stdio.h > #include < conio.h > void fun(int *a,int *b) {……} main() {int a,b; clrscr(); printf("Enter a,b:");scanf("%d%d",&a,&b); fun(&a,&b); printf("a=%d b=%d\n",a,b); } (2011年2月) 解析: void fun(int *a,int *b) {int t; t=*b;*b=*a;*a=t; } |