一、選擇題
1-10 ????CDABC ??DABDC
11-20 ???DDDBD ??B(AC)CDC ??17題有2個(gè)答案AC
?
二、寫出下列程序的運(yùn)行結(jié)果
1. ?64202. ?2 03. ?54. ??ACEG
5. ?###6. 2,4,6,8,107. 46.0
8. 8 5 29. asDhEF10. 12,72
三、編程題(參考答案)
1.利用近似公式求π的值,直到最后一項(xiàng)的絕對(duì)值小于10-6為止。
#include<stdio.h>
#include<math.h>
main()
{??double pi=0,i=1,j=1,k;
???do
{
????k=i/j;
?pi=pi+k;
?i=-i;
????j=j+2;
?}while (fabs(k)>1.0e-6);
???printf("pi is %lf",4*pi);
}
?
2.輸入一行字符,分別統(tǒng)計(jì)出其中英文字母、數(shù)字、空格的個(gè)數(shù)。
#include<stdio.h>
main()
{ ?char t;
int n1=0,n2=0,n3=0;
do
?{scanf("%c",&t);
?if(t=='\n')break;
?else
???{if((t>='A'&&t<='Z')||(t>='a'&&t<='z')) n1++;
????if(t==' ')n2++;
????if(t>='0'&&t<='9') n3++;
???}
??}while(1);
???printf("字符個(gè)數(shù)為:%d ,空格個(gè)數(shù)為:%d ,數(shù)字個(gè)數(shù)為:%d",n1,n2,n3);
?}
3.從3個(gè)紅球、5個(gè)白球、6個(gè)黑球中任意取出6個(gè)球,且其中必須有白球,編程輸出所有可能的組合。
?
#include<stdio.h>
main()
{
int i,j,k;
??printf("\n hong bai hei\n");
?for(i=0;i<=3;i++)
????for(j=1;j<=5;j++)
????{??k=6-i-j;
???????if(k>=0) printf(" %3d %3d %3d\n",i,j,k);
????}
}
?
4.如果一個(gè)數(shù)等于其所有真因子(不包括該數(shù)本身)之和,則該數(shù)為完數(shù)。例如:6的真因子有1、2、3,且6=1+2+3,故6為完數(shù)。求[2,1000]內(nèi)的:
(1)最大的完數(shù); ??(2)完數(shù)數(shù)目。
#include<stdio.h>
main()
{?int a,i,m,number=0,max=0;
?for(a=1;a<=1000;a++)
?{ ?m=0;
for(i=1;i<=a/2;i++)
????if(a%i==0) m=m+i;
?if(m==a) { number++,?max=m;}
??}
??printf("number is %d,?max is %d\n",?number,?max);
}
?
一、選擇題
1.D ????2.A?????3.A ?????4.C ????5.B ????6.B ????7.C
8.B ????9.B ???10.C ???11.B ???12.B ???13.A ???14.B
15.C ???16.C ???17.C ???18.D ???19.A ???20.B ???21.C
22.B ???23.C ???24.A ???25.C ???26.D ???27.C ???28.D
?
二、寫出下列程序的運(yùn)行結(jié)果
1.7 ?????????2.t=7531 ????????3.1 3 6 ?????4.8,17 ???????5.5 ?6
6.8,8 ??????7.3 ?6 ?9 ?12 ???8.10 ???????9.39,18 ??
10.64 ?54 ??11.-20 ???????????12.15 ??????13.2 ???????14.y=923
?
三、編程題(以下各題均用函數(shù)實(shí)現(xiàn))
1.超級(jí)素?cái)?shù):一個(gè)素?cái)?shù)依次從低位去掉一位、兩位……若所得的數(shù)依然是素?cái)?shù),如239就是超級(jí)素?cái)?shù)。試求100~9999之內(nèi):
(1)超級(jí)素?cái)?shù)的個(gè)數(shù);
(2)所有超級(jí)素?cái)?shù)之和;
(3)最大的超級(jí)素?cái)?shù)。
解:(1)spn=30????????(2)sps=75548??????(3)spm=7393
#include<stdio.h>
#include<math.h>
main()
{ int i,s=0,k=0,m,max=100;
??for(i=9999;i>=100;i--)
??{ ?m=i;
?while(m>1)
?if(fun(m))m=m/10;
?else break;
?if(m<=0)
?????{
?if(max<i) max=i;
?k++;
?s=s+i;
?}
??}
??printf("超級(jí)素?cái)?shù)的個(gè)數(shù)為:%5d,所有超級(jí)素?cái)?shù)之和為:%5d,最大的超級(jí)素?cái)?shù)為%5d\n",k,s,max);
}
int fun(int n)
{
??int k,i;
??k=sqrt(n);
??for(i=2;i<=k;i++)
????if(n%i==0)break;
??if(i>=k+1)return 1;
??else return 0;
?}
?
2.其平方等于某兩個(gè)整數(shù)平方和的正整數(shù)稱為弦數(shù),例如因52=32+42,故5是弦數(shù),求(121,130)這間的弦數(shù)個(gè)數(shù)以及最大和最小的弦數(shù)。
解:n=4 ?????????max=130 ???????min=122
參考程序1(用函數(shù)方法實(shí)現(xiàn)):
#include<stdio.h>
main()
{
??int k,maxnum,minnum;
??k=count(121,130);
??maxnum=max(121,130);
??minnum=min(121,130);
??printf("弦數(shù)的個(gè)數(shù)為:%d,最大的弦數(shù)為:%d,最小的弦數(shù)為:%d\n",k,maxnum,minnum);
}
?
int count(int m,int n)
{ int i,j,k,t=0,flag;
??for(i=m;i<=n;i++)
??{ ??flag=0;
??for(j=1;j<i;j++)
???????for(k=j;k<i;k++)
??if(i*i==j*j+k*k)
??{
flag=1;
printf("%4d,%4d,%4d\n",j,k,i);//顯示出不重復(fù)的弦數(shù)的組合情況
???????????}
??if(flag==1)t++;
}
??return t;
}
?
int min(int m,int n)
{ int i,j,k,t=0;
??for(i=m;i<=n;i++)
??for(j=1;j<i;j++)
??????for(k=j;k<i;k++)
??if(i*i==j*j+k*k)
??{
printf("最小的弦數(shù)為:%4d\n",i);
????????????return i;
??}
?}
int max(int m,int n)
{ int i,j,k,t=0;
??for(i=n;i>=m;i--)
??for(j=1;j<i;j++)
??????for(k=j;k<i;k++)
??if(i*i==j*j+k*k)
??{
printf("最大的弦數(shù)為:%4d\n",i);
????????????return i;
??}
}
?
3.有一個(gè)8層燈塔,每層所點(diǎn)燈數(shù)都等于該層上一層的兩倍,一共有765盞燈,求塔底的燈數(shù)。
解:384
#include <stdio.h>
main( )
{
??int i,t;
??t=fun(8);
??for(i=1;i<8;i++)
?t=t*2;
??printf("t=%d\n",t);
}
int fun(int m)
{
??int i,j,n=1,sum;
??for(i=1;i<=765;i++)
??{ ??sum=i;
??????n=i;
??for(j=1;j<m;j++)
??{ ?n=n*2;
????????sum=sum+n;
??}
??if(sum==765) ?break;
???}
??return i;
}
4.編寫程序,求的結(jié)果。
解:4037913
參考程序1:
#include <stdio.h>
main( )
{
??int i;
??long s=0;
??for(i=1;i<=10;i++)
??s=s+fun(i);
??printf("s=%ld\n",s);
}
?
long fun(int n)
{
??int j;
??long t=1;
??for(j=1;j<=n;j++)
??t=t*j;
??return t;
}
參考程序2(遞歸算法):
#include <stdio.h>
main( )
{
??int i;
??long s=0;
??for(i=1;i<=10;i++)
??s=s+fun(i);
??printf("s=%ld\n",s);
}
?
long fun(int n)
{
??long t;
??if(n==1)t=1;
??else t=n*fun(n-1);
??return t;
}
5.已知y?=,其中,f(x,?n) =?1?-?x2?/?2!?+?x4?/?4!?-?…(-1)nx2n?/??(2n)!(n≥0),當(dāng)x?=?5.6,n?=?7時(shí),求y的值。
解:0.007802
#include<stdio.h>
double fun(double x,int n)
{
??int i,t=1,m=1;
??double s=1.0,w=1.0;
??for(i=1;i<=2*n;i++)
??{ ???
??w=w*x;
??t=t*i;
??if(i%2==0)
??{ m=-m;s=s+m*w/t;}
??}
??return s;
}
main()
{
double x=5.6;
int n=7;
double p,q,t,s;
p=fun(x,n);
q=fun(x+2.3,n);
t=fun(x-3.2,n+3);
????s=p/(q+t);
printf("%lf\n",s);
}
6.編寫程序,求三個(gè)數(shù)的最小公倍數(shù)。
#include<stdio.h>
int fun(int x,int y,int z)
{ ??int j,t,m,n;
j=1;
t=j%x;
m=j%y;
n=j%z;
while(t!=0||m!=0||n!=0)
{ ??j=j+1;
????t=j%x;
m=j%y;
n=j%z;
}
return j;
}
main()
{
int x1,x2,x3,j;
printf("Input x1 ??x2 ??x3: ");
scanf("%d%d%d",&x1,&x2,&x3);
printf("x1=%d,x2=%d,x3=%d\n",x1,x2,x3);
j=fun(x1,x2,x3);
printf("The minimal common multiple is: %d\n",j);
}
?
7.已知:,編寫程序,求S的值。
例如,當(dāng)k為10時(shí),S的值應(yīng)為:1.533852。
#include<stdio.h>
double fun(int k)
{
int n;
double s,w,p,q;
n=1;
s=1.0;
while(n<=k)
{ ??w=2.0*n;
????p=w-1.0;
q=w+1.0;
s=s*w*w/p/q;
n++;
}
return s;
}
main()
{
printf("%f\n",fun(10));
}
?