二级C语言 两个填空题【2010-12-02】
1.填空题
请补充函数fun(),该函数的功能是判断一个数的个位数字和百位数字之和是否等于其十位上的数字,是则返回“yes!”,否则返回“no!”。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:
代码
#include <stdio.h>
#include <conio.h>
char *fun(int n)
{
int g,s,b;
g=n%10;
s=n/10%10;
b=【1】;
if((g+b)==s)
return【2】;
else
return【3】;
}
main()
{
int num=0;
clrscr();
printf("******Input data *******\n");
scanf("%d",&num);
printf("\n\n\n");
printf("****** The result *******\n");
printf("\n\n\n%s",fun(num));
}
答案及评析:
【1】n/100%10 【2】″yes!″ 【3】″no!″
【解析】填空1:由程序可以知道,变量g保存了整数的个位数,变量s保存了整数的十位数,所以变量b应该保存整数的百位数。将整数除以100再对10取余,则得到这个整数的百位数。填空2:当个位数字和百位数字之和等于十位数字时,则返回″yes!″。填空3:当个位数字和百位数字之和不等于十位数字时,则返回″no!″。
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
请补充函数fun(),该函数的功能是:交换数组aa中最大和最小两个元素的位置,结果依然保存在原数组中,其他元素位置不变。注意数组aa中没有相同元素。
例如,输入“33、67、42、58、25、76、85、16、41、56”,则输出“33、67、42、58、25、76、16、85、41、56”。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
代码
#include <stdio.h>
#include <windows.h>
#define N 10
void fun(int aa[])
{
int i,j,t;
int max=0,min=0;
for(i=0;i<N;i++)
{
/**********found**********/
if( 1 )
max=i;
/**********found**********/
if( 2 )
min=i;
}
t=aa[max];
/**********found**********/
3 ;
aa[min]=t;
}
main()
{
int i;
int aa[N]={33,67,42,58,25,76,85,
16,41,56};
system("cls");
printf("\n***original list***\n");
for(i=0;i<N;i++)
printf("%4d",aa[i]);
fun(aa);
printf("\n***new list***\n");
for(i=0;i<N;i++) printf("%4d",aa[i]);
}
【解析】
找最大最小值就是先假设第1个数值就是最大(或最小)的,利用循环逐个向后比较,若遇见比它更大(或更小)的数值时,就将它们交换。理解这个算法此题就变得很容易了。
【答案】
(1)aa[max]<aa[i]
(2)aa[min]>aa[i]
(3)aa[max]=aa[min]

浙公网安备 33010602011771号