C语言答案解析 下载本文

#include main( ) { int i; float x,max,min; printf(\ scanf(\ max=min=x; for(i=1;i<8;i++) { scanf(\ if(x>max) max=x; else if (x

34、编写程序输出如下字符图形:

@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ … @ @ @

#include main( ) { int i,j; for(i=11;i>=1;i--) { for(j=1;j<=i;j++) printf(\ printf(\ } }

35、计算:s=f(-30)+f(-29)+......+f(-1)+f(0)+f(1)+......+f(30)的值。其中函数定义如下:f(x)=(x+1)/(x-2) 如果 x>=1; f(x)=0 如果 x=0 或 x=2 ;f(x)=(x-1)/(x-2) 如果 x<0。(按四舍五入保留6位小数) 答案:65.223018 #include float f(float x) { float result; if (x==0 || x==2)

result=0; else if (x>=1) result=(x+1)/(x-2); else if (x<0) result=(x-1)/(x-2); return result; }

void main() { float i,s=0; for(i=-30;i<=30;i++) s=s+f(i); printf(\}

36、编写程序输出如下字符图形(最后一行19颗星):

* * * * * * * * * * * * * * *

* * * … * * * *

#include void main() { int i,j,k; for(i=1;i<=9;i++) { for(j=1;j<=10-i;j++) printf(\ for(k=1;k<=2*i+1;k++) printf(\ printf(\ } }

37、企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高 于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提 成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?

#include main() {

double i; double bonus1,bonus2,bonus4,bonus6,bonus10,bonus; scanf(\

bonus1=10*0.1;bonus2=bonus1+100000*0.075; bonus4=bonus2+200000*0.05; bonus6=bonus4+200000*0.03; bonus10=bonus6+400000*0.015; if(i<=100000) bonus=i*0.1; else if(i<=200000) bonus=bonus1+(i-100000)*0.075; else if(i<=400000) bonus=bonus2+(i-200000)*0.05; else if(i<=600000) bonus=bonus4+(i-400000)*0.03; else if(i<=1000000) bonus=bonus6+(i-600000)*0.015; else bonus=bonus10+(i-1000000)*0.01; printf(\}

38、计算下面公式的值。 T=1+1/(2*3)+1/(3*4)+……+1/(m*(m+1)),当m=50时的结果(按四舍五入保留6位小数)。(注:所有变量用double数据类型定义!) 答案:1.480392 #include main() { double m,t=1; for(m=2;m<=50;m++) t=t+1/(m*(m+1)); printf(\}

39、程序填空:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

程序分析:利用while语句,条件为输入的字符不为'\\n'. #include \#include \main() {

char c;

int letters=0,space=0,digit=0,others=0; printf(\ while((c=getchar())!='\\n') {

if(c>='a'&&c<='z'||c>='A'&&c<='Z') _letters++;_ else if(c==' ') _space++;_

else if(c>='0'&&c<='9') _digit++;_ else

_others++;_ }

printf(\ getch(); }

40、打印出如下图案(菱形) * *** ***** ******* ***** *** *

#include void main() { int i,j,k,t; for(i=0;i<=3;i++) { for(j=0;j<=10-i;j++) printf(\ for(k=0;k<=2*i;k++) printf(\ printf(\ } t=j; for(i=0;i<=2;i++) { for(j=0;j<=t+i;j++) printf(\ for(k=0;k<=4-2*i;k++) printf(\ printf(\ }

}

41、求出[2,478]以内的:

(1)最大的素数。 *467 (2)素数数目。 *91 (3)所有素数之和。 *19580 #include #include int prime(int x) {

int k;

for(k=2;k

if(x%k==0) break; if(k==x) return 1; else return 0; }

void main() { int prime(int x);

int i,max=0,sum=0,num=0; for(i=2;i<=478;i++) if(prime(i)) { sum=sum+i; num++; if(i>max) max=i; } printf(\}

42、已知: (i为奇数)2 y??N(ai?b2?ii) ai?1i????i?(i为偶数) bi????i2??i3 (1)若N=10,求Y 。 *1304735

(2)若N=15,求Y。 *1.184172E+07 #include double a( int x) { double result; if(x%2!=0) result=x; else

(i为奇数)(i为偶数)