最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

計算機二級C語言上機題庫(三)

2021-02-28 08:56 作者:朝顏晚扶桑  | 我要投稿

填空題:

數(shù)字題

1、?用函數(shù)指針指向要調(diào)用的函數(shù),規(guī)定在2處指向函數(shù)f1,在3處使f指向函數(shù)f2,當調(diào)用正確時,程序輸出:

?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用函數(shù)指針指向要調(diào)用的函數(shù),規(guī)定在2處指向函數(shù)f1,在3處使f指向函數(shù)f2,當調(diào)用正確時,程序輸出:

?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所指變量中各位上為偶數(shù)的數(shù)去除,剩余的數(shù)按原來從高位到低位的順序組成一個新的數(shù),并通過形參指針n傳回所指變量,例如,輸入一個數(shù):27638496,新的數(shù):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所指變量中各位上為偶數(shù)的數(shù)取出,并按原來從高位到低位相反的順序組成一個新的數(shù),并作為函數(shù)值返回。例如,輸入一個數(shù):27638496,新的數(shù):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所指變量中各位上為偶數(shù)的數(shù)取出,并按原來從高位到低位的順序組成一個新的數(shù),并作為函數(shù)值返回。例如,輸入一個數(shù):27638496,新的數(shù):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); x1=(-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的一組正整數(shù)解。結(jié)果是: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的兩個實數(shù)根。例如,當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\ninput 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,x1,x2);}

9、?判斷一個數(shù)的個位數(shù)字和百位數(shù)字之和是否等于其十位上的數(shù)字,是則返回“yes!”,否則返回“no!”

Char *fun(int n)

{int g,s,b;g=n%10;s=n/10%10;b=n/100%10;if(g+b= =s)retrun?yes!;else return no!;}

10、輸入一個長整數(shù),如果這個數(shù)是負數(shù),則取它的絕對數(shù),并顯示出來。例如:輸入:-3847652,結(jié)果為3847652

main()

{long int n;clrscr();pritntf(enter the data;\n);scanf(%ld,&n);printf(***the absolute value***\n);

if(n<0)n= -n;printf(\n\n);printf(%d,n);}

11、計算如下公式的值。A1=1,A2=1/(1+A1),A3=1/(1+A2)-------AN=1/(1+AN+1)若n=10,則應輸出:0.618056

?float fun(int n)

?{float A=1;int i;for(i=1;i<=n;i++)A=1.0/(1+A);return A;}

12、計算并輸出下列數(shù)的前N項之和SN,直到SN+1大于q為止。SN=2/1+3/2+4/3+------N+1/N例如,q的值為50.0,則函數(shù)的值為50.416687。

?double fun(double q)

{int n;double s;n=2;s=2.0;while(s<=q){s=s+(double)(n+1)/n;n++}printf(n=%d\n,n);return s;}

13、計算s=f(-n)+f(-n+1)+------+f(0)+f(1)+f(2)+------+f(n)的值,當n為5時,S的值為:10.407143(函數(shù)省略)。

float fun(double x)

{if(x= =0.0 || x= =2.0)return 0.0;else if(x<0.0) return (x-1)/(x-2);else return (x+1)/(x+2);}

double fun(int n)

{int i;double s=0.0,y;for(i=-n;i<=n;i++){y=f(1.0*i);s+=y;}return s;}

14、求1!+2!+3!+-------N!的和,若N=6則和為873。

main()

{int j,n;long s=0,t=1;

clrscr();

printf(\n input n:\n);scanf(%d,&n);

for(i=1;i<=n;i++){t=t*i;s=s+t;}printf(1!+2!+3!+-------+%d!=%ld\n,n,s);}

15、計算Sn=1/1-1/3+1/5-1/7+-------1/(2n+1)的值,當n的值為15時,輸出的結(jié)果是:s=0.769788,N=15。

Void fun(float *sn,int n )

{int i,j=1;float s=0.0;for(i=0;i<=n;i++){s=s+j*1.0/(2*i+1);j*=-1;} *sn =s;}

main()

{int n=15;float s;fun(&s,n);}

16、計算SN的值:SN=1/1+3/1+5/4+------+(2N-1)/(SN-1),當N=50時,SN=71.433699

double fun(int n)

{double s=1.0,s1=0.0;int k;for(k=2;k<=n;k++){s1=s;s+=(2*k-1)/s1;}return?s;}

17、計算SN的值:s=13/31*35/53*57/75*-----*(2k-1)(2k+1)/ (2k+1) (2k-1)?當k=5時,S=338.215158

double fun(int n)

{ double s=1.0;double f=0.0; double p=0.0;int i=0;int k;for(k=1;k<=n;k++){f=2*k-1;p=2*k+1;

for(i=1;i<2*k+1;i++)f*=2*k-1; for(i=1;i<=2*k-1;i++)p*=2*k+1;s*=f/p;}return s;}

18、計算下式:s=3/23-5/42+7/62+-----+(-1)n-1*(2*n+1)/(2n)2,直到(2*n+1)/(2n)2的絕對值小于等于10-3,并把計算的結(jié)果作為函數(shù)值返回。例如:若E的值為1E-3,函數(shù)值為0.551690.

double fun(double e)

{int i,k;double s,t,x;s=0;k=1;i=2;x=3/4;while(x>e){s=s+k*x;k=k*(-1);t=2*i;x=(2*i+1)/(t*t);i++}return s;}

19、求P的值p=m!/(n!*(m-n)!),例如:m=11,m=4時,運算結(jié)果為330.000000.

long jc(int m)

{long s=1;int i;for(i=1;i<=m;i++)s=s*i;return s;}

Float fun(int m,int n)

{float p;p=1.0*jc(m)/jc(n)/jc(m-n);return p;}

20、計算S的值:s=(1*3)/22+(3*5)/42+ (5*7)/62+-----(2*n-1)/(2*n+1)2,當形參N的值為10時,函數(shù)的返回值9.612558

double fun(int n)

{int i;double s,t;s=0;for(i=1;i<=n;i++){t=2.0*i;s=s+(2.0*i-1)* (2.0*i+1)/(t*t); }return s;}

21、計算S的值:s=(1*3)/22-(3*5)/42+ (5*7)/62------(2*n-1)/(2*n+1)2,當形參N的值為10時,函數(shù)的返回值-0.204491

double fun(int n)

{int i,k;double s,t;s=0;k=1;for(i=1;i<=n;i++){t=2*i;s=s+k*(2*i-1)* (2*i+1)/(t*t);k=k*(-1);}return s;}

22、計算下式:s=1/22+3/42+5/62+------(2N-1)/(2N)2

double fun(double e)

{int i;double s,x;s=0;i=0;x=1.0;while(x>e){i++;x=(2.0*i)/ ((2.0*i)* (2.0*i));s=s+x;}return s;}

23、判斷某一個年份是否為閏年,例如,1900年不是閏年,2004是閏年。

int fun(int n)

{int flag=0;if(n%4= =0){if(n%100!=0)flag=1;}

if(n%400= =0)flag=1;return flag;}

24、從鍵盤輸入3個整數(shù),然后找出最大的數(shù)并輸出。例如,輸入12,45,43最大值為45

main()

{int a,b,c,max;clrscr();

printf(\ninput three numbers:\n);scanf(%d,%d,%d,&a,&b,&c);printf(%d,%d,%d,a,b,c);

if(a>b)max=a;else max=b;if(max<c)max=c; printf(max=%d\n,max);}

25、從鍵盤輸入一個整數(shù)n,輸出n對應的裴波那契數(shù)列。

main()

{inti,n=0;scanf(%d,&n);

for(i=0;i<=n;i++)printf(%d,fun(i));}

Int fun(int n)

{if(n= =0) return 0;else if(n= =1)return 1;

else return fun(n-1)+fun(n-2);}

26、找出100至x(x<999)之間各位上的數(shù)字之和為15的所有整數(shù),然后輸出;符合條件的整數(shù)個數(shù)作為函數(shù)值返回。

當n值為500時,各位數(shù)字之和為15的整數(shù)有:159,168,177----共有26個。

fun(int x)

{intn,s1,s2,s3,t;n=0;t=100while(t<=x){s1=t%10;s2=(t/10)%10;s3=t/100;if(s1+s2+s3= =15){printf(%d,t);n++;}++t;}return n;}

27、找出100—999之間(含100和999)各位上的數(shù)字之和為X(X為一個正整數(shù))的整數(shù),然后輸出。符合條件的整數(shù)個數(shù)作為函數(shù)值返回。當x值為5時,滿足條件的數(shù)為:104,113,122,131,140,203,212,221,230,302,311,320,401,410,500----共有15個。

int fun(int x)

{int n,s1,s2,s3,t;n=0;t=100; while(t<=999){s1=t%10; s2=(t/10)%10;s3=t/100;if(s1+s2+s3= =x){printf(%d,t);n++;}t++;}

return n;}

28、打印出1~1000中滿足:個位數(shù)字的立方等于其本身所有數(shù)。本題結(jié)果為:1,64,125,216,729

main()

{int i,g,clrscr();for(i=1;i<1000;i++){g=i%10;if(g*g*g= = i)printf(%4d,i);}}

29、打印出滿足個位的數(shù)字,十位上的數(shù)字和百位上的數(shù)字都相等的所有三位數(shù)。本題的打印結(jié)果為:111,222,333,444

555,666,777,888,999

main()

{int g,s,b; clrscr();for(g=1;g<10;g++)for(s=1;s<10;s++) for(b=1;b<10;b++){if(g= =s&&s= =b)printf(%5d,g+s*10+b*100);}}

30、求兩個正整數(shù)m和n的最大公約和最小公倍數(shù)

main()

{int a,b,n,m,t; clrscr();printf(\n input two numbers:\n);scanf(%d,%d,&n,&m);if(n<m){a=m;b=n;}else{a=n;b=m;}

While(b!=0){t=a%b;a=b;b=t}printf(greatest common divisor:%d\n,a);printf(leas common multiple:%d\n,n*m/a);}

31、從鍵盤輸入只有兩個整數(shù)參與運算的一個四則運算式,然后計算出它的值。注意數(shù)字全部為正整數(shù)。例如:輸入

308*28,結(jié)果為8624.000000

main()

{int a=0,b=0,flag=1,fg=1;

float result;char *p,ch;

char str[10];clrscr();

printf(\n input a string \n);gets(str);p=str;

while(*p){if(*p>=0&&*p<=9&&flag= = 1)a=a*10+*p –‘0;else if(fg){ch=*p ;flag=2;fg=0;}

if(*p>=0&&*p<=9&&flag= = 2) b=b*10+*p –‘0;p++;}

switch(ch)

{case +:result=a+b;break; ?case-: result=a-b;break; ?case*: result=a*b;break; ?case/: result=(float)(a/b);break;}

Print (\n result=%f,result);}

32、計算兩個自然數(shù)n和m(m<10000)之間所有數(shù)的和(n和m從鍵盤輸入),例如:n=1,m=100時,sum=5050

main()

{int n,m;long sum;sum=0;printf(\n input n,m\n);

scanf(%d,%d,&n,&m);

while(n<=m){sum+=n;n++;}printf(sum=%ld\n,sum);}

33、求k!(k<13)并通過函數(shù)名傳回主函數(shù)。例如:若k=0,輸出3628800.

long fun(int k)

{if(k>0)return(k*fun(k-1));else if(k= =0)return 1L;}

34、求n!,例如:7!=5040

main()

{int i,n;long f=1;printf(input n:);scanf(%d,&n);

for(i=1;i<=n;i++)f*=i;printf(%d!=%ld\n,n,f);}

35、把從鍵盤輸入的3個整數(shù)按從小到大輸出,若輸入33,78,25則輸出25,33,78

main()

{int x,y,z,t;clrscr();

printf(input x,y,z\n);

scanf(%d%d%d,&x,&y,&z);if(x>y){t=x;x=y;y=t;} if(x>z){t=z;z=x;x=t;}

if(y>z){t=y;y=z;z=t;}printf(******the result******\n);printf(from small to big:%d%d%d\n,x,y,z);}

36、將十進制正整數(shù)m轉(zhuǎn)換成k進制(2k9)數(shù)的數(shù)字輸出,例如:若輸入8和2,則應輸出1000

Void fun(int m,int k)

{int aa[20],i;for(i=0; m;i++){aa[i]=m%k;m/=k;}for(;i;i--;i++)printf(%d,aa[i-1]);}

37、求二分之一圓的面積,若圓的半徑為19.527,則輸出為:s=598.950017。

float fun(float?r)

{return 3.14159*r*r/2.0;}

main()

{float x;printf(enter x:);scanf(%f,&x);printf(s=%f\n,fun(x));}

38、讀入一個整數(shù)k(2k10000)打印它們所有質(zhì)因子,若輸入的整數(shù)3410,則應輸出:2,5,11,31

Isprime(int n)

{int i,m;m=1;for(i=0;

i<n;i++)if(!(n%i))

{m=0;break;}return m;}

main()

{int j,k;printf(------);

scanf(%d,&k);printf(-----);for(j=2;j<=k;j++)if(!(k%j))&&(isprime(j))printf(\n%4d,j);printf(\n);}

39、計算并輸出n(包括n)以內(nèi)能被3或7整除的所有自然數(shù)的倒數(shù)之和,例如當n為32后,輸出為s=1.226323

double fun(int n)

{int i;double sum=0.0;if(n>0&&n<=100){for(i=1;i<=n;i++)if(i%3= = 0|| i%7= = 0)sum+=1.0/i;}return sum;}

40、求出1到1000之內(nèi)能被7或11整除但不能同時被7和11整除的所有整數(shù)放在數(shù)組a中,通過n返回這些數(shù)的個數(shù)

Void fun(int *a,int *n)

{int i,j=0;for(i=1;i<=1000;i++)if(((i%7= =0)||(i%11= =0))&&i%77!=0)a[j++]=i;*n=j;}

Main()

{int aa[1000],n,k;fun(aa,&n);for(k=0;k<n;k++)if((k+1)%10= =0)printf(\n);else printf(%5d,aa[k]);}

41、統(tǒng)計長整數(shù)n的各個位上出現(xiàn)數(shù)字1,2,3,的次數(shù),并通過外部(全局)變量c1,c2,c3返回主函數(shù),當n=123114350,結(jié)果應該:c1=3,c2=1,c3=2。

Void fun(long n)

{ c1=c2=c3=0;while(n)

{switch(n%10)

{case 1:c1++;break; case 2:c2++;break; case 3:c3++;}n/=10;}}

42、計算并輸出high以內(nèi)最大的10個素數(shù)之和,若high的值為100,則函數(shù)的值為732。

int fun(int high)

{int sum=0,n=0,j,yes;

while((high>=2)&&(n<10)){yes=1;for(j=2;j<=high/2;j++)if(high%j= =0){yes=0;break;}

if(yes){sum+=high;n++}high--;}return sum;}

43、統(tǒng)計所有小于等于n(n>2)的素數(shù)的個數(shù),素數(shù)的個數(shù)作為函數(shù)值返回。

int fun(int n)

{int i,j,count=0;printf(----);for(i=3;i<=n;i++)

{for(j=2;j<i;j++)if(i%j= = 0)break;

If(j>=i){count++;printf(-----);}}return count;}

44、求1~100(不包含100)以內(nèi)所有素數(shù)的平均數(shù)。最后結(jié)果為42.40.

Main()

{int i,j,n=0,flag,float aver=0;j=2;

for(j=;j<100;j++){flag=1;for(i=2;i<j;i++)if(j%i= =0){flag=0;break;}

If(flag= =1){n++;aver+=

j;}}printf(\n\n average=%4.2f,aver/n);}

45 、用篩選法可得到2~n(n<10000)之間所有素數(shù),方法是:首先從素數(shù)2開始,將所有2的倍數(shù)的數(shù)從數(shù)表中刪去

( 把數(shù)表中相應位置的值置成0);接著從數(shù)表中找下一個非0數(shù),并從數(shù)表中刪去該數(shù)的所有倍數(shù),以此類推,直到所找的下一個數(shù)等于n為止,這樣會得到一個序列:2,3,5,7,11,13,17,19,23-----

Int fun(int n)

{int a[10000],i,j,count=0;

for(i=2;i<=n;i++)a[i]=i;i=2;

While(i<n){for(j=a[i]*2;j<=n;j+=a[i])a[j]=0;i++;while(a[i]= =0)i++;}printf(“”);

For(i=2;i<=n;i++)if(a[i]!=0){count++;printf(---);}

46、判斷一個數(shù)是否為素數(shù),該數(shù)是素數(shù)時,函數(shù)返回字符串:yes!,否則返回no!

Char *fun(int n)

{int i,m;m=1;

for(i=2;i<=n;i++)if(n%i= =0){m=0;break;}if(m= =1&&n>1)1)return (yes!);else return (no!);}

47、尋找兩個整數(shù)之間的所有素數(shù)(包括這兩個整數(shù)),把結(jié)果保存在數(shù)組bb中,函數(shù)返回素數(shù)的個數(shù)。例如,輸入6和21,則輸出為:7,11,13,17,19,21.

Int fun(int n,int m,int bb[N])

(int i ,j,k=0,flag; for(j=n;j<=m;j++){flag=1;for(i=2;i<j;i++)if(j%i= =0){flag=0;break;}if(flag= =1)bb[k++]=j;}return k;)

48、甲乙丙丁四人同時開始放鞭炮,甲每隔t1秒放一次,乙每隔t2秒放一次,丙每隔t3秒放一次,丁每隔t4秒放一次,每人各放n次。函數(shù)fun的功能根據(jù)形參提供的值,求出總共聽到多少次鞭炮聲作為函數(shù)值返回。注意,當幾個鞭炮同時炸響只算一次響聲,第一次響聲是在第0秒。例如,若t1=7,t2=5,t3=6,t4=4,n=10,則總共可聽到28次鞭炮聲。

#difine ok(i,t,n) ((i%t= =0)&&(i/t<n))

Int fun(int t1,int t2,int t3,int t4,int n)

{int count ,t,maxt=t1;if(maxt<t2)maxt=t2; if(maxt<t3)maxt=t3; if(maxt<t4)maxt=t4;count=1;

for(t=1;t<maxt*(n-1);t++){if(ok(t,t1,n))|| if(ok(t,t2,n))|| if(ok(t,t3,n))|| if(ok(t,t4,n))count++;}return count;}

49、從三個形參a,b,c中找出中間的那個數(shù),作為函數(shù)值返回。例如,當a=3,b=5,c=4時中數(shù)為4.

int fun(int a,int b,int c)

{int t;t=(a>b)?(b>c)?b:a>c?c:a))((a>c?a:((b>c?c:b));return t;}


計算機二級C語言上機題庫(三)的評論 (共 條)

分享到微博請遵守國家法律
陵川县| 普安县| 翁牛特旗| 博兴县| 德化县| 盈江县| 革吉县| 项城市| 寿阳县| 巩义市| 民勤县| 灵宝市| 喀什市| 江津市| 东海县| 丰原市| 武山县| 天峻县| 兴义市| 安多县| 中江县| 朝阳县| 闵行区| 呈贡县| 万盛区| 安乡县| 台中县| 资中县| 东丰县| 萨迦县| 南投市| 慈利县| 河津市| 吉隆县| 通州市| 德格县| 定远县| 鹤山市| 兴和县| 滁州市| 南召县|