二级C语言上机考题二级C语言上机考题
填空题:
一、数字题:
1用函数指针指向要调用的函数,规定在_2_处使f指向函数f1,在_3_处使f指向函数f2。当调用正确时,程序输出:x1=5.000000,x2=3.000000,x1*x1+x1*x2=40.000000
double fun(double a, double b)
{double (*f)();double r1,r2;
f=f1;r1=f(a);f=f2;r2 = (*f)(a,b);
return r1+r2;}
2用函数指针指向要调用的函数,规定在_2_处使f指向函数f1,在_3_处使f指向函数f2。当调用正确时,程序输出:x1=5.000000,x2=3.000000,x1*x1+x1*x2=40.000000
double fun(double x, double y)
{if(i==1)return f1(x);
else return f2(x,y); }
3将形参n所指变量中各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。例如,输入一个数新的数:为739。
void fun(unsigned long *n)
{unsigned long x=0,i;int t;i=1;
while(*n){t=*n%10;
if(t%2!=0){x=x+t*i;i=i*10;}
*n=*n/10;}*n=x;}
4将形参n所指变量中各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新的数,并作为函数值返回。例如,输入一个数新的数为64862。
unsigned long fun(unsigned long n)
{unsigned long x=0;int t;
while(n)
{t=t%10;
if(i%2==0)x=10*x+t;
n=n/10;}return x;}
5将形参n所指变量中各位上为偶数的数取出,并按原来从高位到低位的顺序组成一个新的数,并作为函数值返回。例如,输入一个数新的数为26846。
unsigned long fun(unsigned long n)
{unsigned long x=0,s,i;int t;
s=n;i=1;
while(s)
{t=s%10;
if(i%2==0)x=x+t*i;i=i*10;}
s=s/10;}return x;}
6求方程ax2+bx+c=0的根。例如,当a=1,b=2,c=1时,方程的两个根分别是:x1=-1.00,x2=-1.00。
main()
{float a,b,c,disc,x1,x2,p,q;
scanf("%f,%f,%f",&a,&b,&c);
disc=b*b-4*a*c;clrscr();
printf("*******the result *******\n");
if(disc>=0)
{x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
printf("x1=%6.2f,x2=%6.2f\n",x1,x2);}
else{p=-b/(2*a);
q=sqrt(fabs(disc))/(2*a);
printf("x1=%6.2f+%6.2f i\n",p,q);
printf("x2=%6.2f-%6.2f i\n",p,q);}}
7输出方程组A+B=56,A+2B=72的一组正整数解。结果是:A=40,B=16。
main()
{int i,j;clrscr();
for(i=0;i<100; i++)
for(j=0;j<100; j++)
if(i+j==56&&i+2*j==72)
printf("A=%2d,B=%2d",i,j);}
8求方程ax2+bx+c=0的两个实数根。例如,当a=1,b=2,c=1时,方程的两个根分别是x1=-1.00, x2=-1.00。
main()
{float a,b,c,disc,x1,x2;clrscr();
do{printf("Input a,b,c:");
scanf("%f,%f,%f",&a,&b,&c);
disc=b*b-4*a*c;
if(disc<0)
printf("disc=%f\n Input again!\n",disc);
}while(disc<0);
printf("*******the result*******\n");
x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
printf("\nx1=%6.2f\nx2=%6.2f\n",x1,x2);}
9判断一个数的个位数字和百位数字之和是否等