C语言程序设计第三版谭浩强课后习题答案完整版

更新时间:2024-01-13 00:59:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1.5C ************************** Very Good! **************************

mian()

{printf(“**************************”); printf(“\\n”);

printf(“Very Good!\\n”); printf(“\\n”);

printf(“**************************”); } 1.6 a、b、c

mian()

{int a,b,c,max;

printf(“请输入三个数a,b,c:\\n”); scanf(“%d,%d,%d”,&a,&b,&c); max=a; if(max

第三章

3.6写出以下程序运行的结果。 main()

{char c1=’a’,c2=’b’,c3=’c’,c4=’\\101’,c5=’\\116’; printf(“a?%c\\tc%c\\tabc\\n”,c1,c2,c3); printf(“\\t\\b%c %c”,c4,c5); }

aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabc AㄩN 3.7 要将\4例

\后面第4个字母是\\代替\\应译为\。请编一程

cl、c2、c3、c4、c5C’、’h’、’i’、’n’、’

a

c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e

#include www.docin.commain()

{ char c1=’C’,c2=’h’,c3=’i’,c4=’n’,c5=’a’; c1+=4; c2+=4; c3+=4; c4+=4; c5+=4;

printf(\密码是%c%c%c%c%c\\n\}

密码是Glmre

3.9求下面算术表达式的值。 1x+a%3*(int)(x+y)%2/4 设x=2.5,a=7,y=4.7

2(float)(a+b)/2+(int)x%(int)y 设a=2,b=3,x=3.5,y=2.5 12.5 23.5

3.10写出程序运行的结果。 main()

{int i,j,m,n; i=8; j=10; m=++i; n=j++;

printf(“%d,%d,%d,%d”,i,j,m,n); }

911910

3.12 写出下面表达式运算后aa=12。设a和n都已定义为整型变量。 1a+=a 2 a-=2 3 a*=2+3 4a/=a+a 5 a%=(n%=2)n的值等于5 6a+=a-=a*=a

(1) 24 (2) 10 (3) 60 (4) 0 (5) 0 (6) 0

第四章

44若a=3b=4c=5x=1.2y=2.4z=-3.6u=51274n=128765c1=’a’c2=’b’。

a=_3_ _b=_4_ _c=_5

x=1.200000,y=2.400000,z=-3.600000

x+y=_3.600_ _y+z=-1.20_ _z+x=-2.40

c1=ˊaˊ_or_97(ASCII) www.docin.comc2=ˊbˊ_or_98(ASCII) main()

{int a=3,b=4,c=5;

long int u=51274,n=128765; float x=1.2,y=2.4,z=3.6; char c1=’a’,c2=’b’;

printf(\printf(\

printf(\printf(\

printf(\’a’\printf(\’a’\} 47用scanfa=3b=7x=8.5y=71.82ˊa

main() {

int abfloat xychar c1c2 scanf\&a&b scanf\&y scanf\&c1&c2 }

a=3_b=7

_x=8.5_y=71.82 _c1=A_c2=a 48设圆半径r=1.5h=3积。 用scanf

main()

{float r,h,C1,Sa,Sb,Va,Vb; scanf(\C1=2*3.14*r; Sa=3.14*r*r; Sb=4*Sa;

Va=4*3.14*r*r*r/3; Vb=Sa*h;

printf(\

printf(\}

c1=ˊAc2=

49

c=5(F-32)/9

2小数。 www.docin.commain()

{float F,c; scanf(\c=5*(F-32)/9;

printf(\} 410getchar函数读入两个字符给c1、c2个

c1、c2

求输出c1和c2值的ASCIIputchar函数还是printf

char c1c2 与

int c1c2

#include\main()

{char c1,c2;

c1=getchar();c2=getchar();

putchar(c1);putchar(’\\n’);putchar(c2);putchar(’\\n’); }

#include\main()

{char c1,c2;

c1=getchar();c2=getchar(); printf(\printf(\}

第五章 5.1

5.2 C

10表

示。

00代表“假”。例如3&&5的值为“真”

系统给出3&&5的值为1。

5.3 写出下面各逻辑表达式的值。设a=3b=4c=5。 (1) a+b>c&&b==c

(2) a||b+c&&b-c www.docin.com(3) !(a>b)&&!c||1 (4) !(x=a)&&(y=b)&&0 (5) !(a+b)+c-1&&b+c/2 解 (1) 0 (2) 1 (3) 1 (4) 0 (5) 1

5.4 有3个整数a、b、c

方法一

#include main()

{ int a,b,c; printf(\请输入3\scanf(\if(a

if(b

else if(a

#include main()

{ int a,b,c,temp,max; printf(\请输入3\scanf(\

temp=(a>b)?a:b; /* 将a和b中的大者存人temp中 */ max=(temp>c)?temp:c; /* 将a和b中的大者与c*/ printf(\个整数的最大数是%d\\n”,max); }

5.5

www.docin.com

xy值。

#include main() {int x,y;

printf(\输入x\scanf(\

if(x<1) /* x<1 */ { y=x;

printf(\}

else if (x<10) /* 1≤x-10 */ { y=2*x-1;

printf(\}

else /* x≥10 */ { y=3*x-11;

printf(\} } 5.6 要求输出等级’A’、’B’、’C’、’D’、’E’。90分以上为’A80~90分为’B70~79分为’C60分以下为’D’。

#include main()

{ float score; char grade; printf(\\scanf(\

while(score>100||(score<0) { printf(\输入有误,\scanf(\}

switch((int)(score/10))

{ case 10:

case 9: grade=’A’;break;

case 8: grade=’B’;break; www.docin.comcase 7: grade=’C’;break; case 6: grade=’D’;break; case 5: case 4: case 3: case 2: case 1:

case 0: grade=’E’; }

printf(\成绩是%5.1f%c。\\n\}

0或大于100(int)(score/10)的作

是将 (score/10)

5.7 给定一个不多于5 求它是 ③ 按逆序打印出各位数字。例如原数为321123。

#include main()

{ long int num;

int indiv,ten,hundred,thousand,ten_thousand,place;

/*分别代表个位、十位、百位、千位、万位和位数*/ printf(\0~99999\ scanf(\

if (num>9999) place=5; else if(num>999) place=4; else if(num>99) place=3; else if(num>9) place=2; else place=1;

printf(\ ten_thousand=num/10000; thousand=num/1000; hundred=num/100; ten=num0/10; indiv=num; switch(place)

{ case 5: printf(\ printf(\\

printf(\

break;

case 4: printf(\ printf(\\ www.docin.com printf(\ break;

case 3: printf(\ printf(\\

printf(\ break;

case 2: printf(\ printf(\\ printf(\ break;

case 1: printf(\ printf(\\ printf(\ break; } }

5.8 企业发放的奖金根据利润提成。利润I低于或等于1010% 高于1020100000

7.5% 200000

高于20万元的部分按5@0000

〈I≤100000060万的部分按1.5%I>1000000100万元的部分按1% 提成。从键盘输入当月利润I(1)用if(2)用switch

语句编程序。

1510

万元按10%5万元则按7.5%提成。 (1) 用if语句编程序。

#include main() { long i;

float bonus,bon1,bon2,bon4,bon6,bon10;

bon1=100000*0.1; /*利润为10万元时的奖金*/ bon2=bon1+100000*0.075; /*利润为20万元时的奖金*/ bon4=bon2+200000*0.05; /*利润为40万元时的奖金*/ bon6=bon4+200000*0.03; /*利润为60万元时的奖金*/ bon10=bon6+400000*0.015; /*利润为100万元时的奖金*/

printf(\请输入利润i\scanf(\if(i<=100000)

bonus=i*0.1; /*利润在10万元以内按0.1提成奖金*/ else if(i<=200000)

bonus=bon1+(i-100000)*0.075; /*利润在10万至20万元时的奖金*/ www.docin.comelse if(i<=400000)

bonus=bon2+(i-200000)*0.05; /*利润在20万至40万元时的奖金*/ else if(i<=600000)

bonus=bon4+(i-400000)*0.03; /*利润在40万至60万元时的奖金*/ else if(i<=1000000)

bonus=bon6+(i-600000)*0.015; /*利润在60万至100万元时的奖金*/ else

bonus=bon10+(i-1000000)*0.01; /*利润在100万元以上时的奖金*/ printf(”奖金是.2f\\n\}

此题的关键在于正确写出每一区间的奖金计算公式。例如利润在10万元至20

10万元时应得的奖金。即100000ⅹ0.110万元以上部分应得

的奖金。即(num-100000)ⅹ0.0752040 ①利润为20100000ⅹ0.1ⅹ10万ⅹ0.07520万元以上部分应得的

(num-200000)ⅹ0.05。程序中先把10万、20万、40万、60万、100万各关键点的

bon1、bon2、bon4、bon6、hon10

(2) 用switch语句编程序。 输入利润ibranch 根据branch确定奖金值 0 奖金=i*0.1

1 奖金=bon1+(i-105)*0.075 2 奖金=bon2+(i-2*105)*0.05 3

4 奖金=bon4+(i-4*105)*0.03 5

6 奖金=bon6+(i-6*105)*0.015 7 8 9

10 奖金=bon10+(i-106)*0.01 输出奖金

#include main() { long i;

float bonus, bon1, bon2, bon4, bon6, bon10; int c;

bon1=100000*0.1;

bon2=bon1+100000*0.075; bon4=bon2+200000*0.05;

bon6=bon4+200000*0.03; www.docin.combon10=bon6+400000*0.015; printf(\请输入利润i\scanf(\c=i/100000; if(c>10) c=10; switch(c)

{ case 0: bonus=1*0.1;break;

case 1: bonus=bon1+(i-100000)*0.075;break; case 2 :

case 3: bonus=bon2+(i-200000)*0.05; break; case 4:

case 5: bonus=bon4+(i-400000)*0.03;break; case 6: case 7: case 8:

case 9: bonus=bon6+(i-600000)*0.015;break; case 10: bonus=bon10+(i-1000000)*0.01; }

printf(\奖金是.2f\}

5.9 输入4

序方法。

#include main()

{ int t,a,b,c,d; printf(\请输入4\

scanf(\

printf(\if(a>b) {t=a; a=b; b=t;} if(a>c) {t=a; a=c; c=t;} if(a>d) {t=a; a=d; d=t;} if(b>c) {t=a; b=c; c=t;} if(b>d) {t=b; b=d; d=t;} if(c>d) {t=c; c=d; d=t;} printf(\\\n\

printf(\}

5.10 有4(22)、(-22)、(2-2)、(-2-2)1。这4个塔

的高度分别为10m(塔外的高www.docin.com度为零)。

#include main()

{ int h=10;

float x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=-2,y4=-2,x,y,d1,d2,d3,d4; printf(\请输入一个点(x,y)\scanf(\

d1=(x-x1)*(x-x1)+(y-y1)*(y-y1); /*求该点到各中心点的距离*/ d2=(x-x2)*(x-x2)+(y+y2)*(y+y2); d3=(x+x3)*(x+x3)+(y-y3)*(y-y3); d4=(x+x4)*(x-x4)*(y+y4)*(y+y4);

if(d1>1&&d2>1&&d3>1&&d4>1) h=0; /*判断该点是否在塔外*/ printf(\该点高度为%d\\n\}

第六章

第六章 循环控制

6.1输入两个正整数m和n main()

{long m,n,i=1,j,s;

scanf(\for(;i<=m&&i<=n;i++)

{if(m%i==0&&n%i==0) s=i;} if(m>=n) j=m; else j=n;

for(;!(j%m==0&&j%n==0);j++); www.docin.comprintf(\} 6.2#include\main()

{char c;int i=0,j=0,k=0,l=0; while((c=getchar())!=’\\n’)

{if(c>=65&&c<=90||c>=97&&c<=122) i++; else if(c>=48&&c<=57) j++; else if(c==32) k++; else l++;}

printf(\}

6.3求Sn=a+aa+aaa+?+aa?aaan个a2+22+222+2222+22222n=5n由键盘输入。#include\main()

{int n,sum=0,i=1,s=2; scanf(\while(i<=n)

{sum=sum+s;s=s+2*pow(10,i); i++;}

printf(\}

6.4 求 1!+2!+3!+4!+5!+?+20! main()

{int n,i=1;long sum=0,s=1; scanf(\

while(i<=n) {s=s*i;sum=sum+s;i++;} printf(\}

6.5 求 main()

{double i=1,j=1,k=1,s1=0,s2=0,s3=0,sum; for(;i<=100;i++) s1=s1+i;

a for(;j<=50;j++) s2=s2+j*j; for(;k<=10;k++) s3=s3+1/k; sum=s1+s2+s3;

printf(\} www.docin.com

6.6打印出所有\水仙花数\\水仙花数\

153153=1^3+5^3+3^3。

#include\main()

{int x=100,a,b,c;

while(x>=100&&x<1000) {a=0.01*x;b=10*(0.01*x-a);c=x-100*a-10*b; if(x==(pow(a,3)+pow(b,3)+pow(c,3))) printf(\} 6.7\完数\6的因子为1、2、3

而6=1+2+36是\完数\。编程序找出1000

6 its factors are 1、2、3 main()

{int m,i,j,s;

for(m=6;m<10000;m++) {s=1;

for(i=2;i

{printf(\printf(\} } 或 main()

{int m,i,j,s;

for(m=6;m<1000;m++) {s=m-1;

for(i=2;i

{printf(\printf(\} } 6.8

求出这个数列的前20项之和。 main()

{int i=1,n;double t,x=1,y=2,s,sum=0;

scanf(\printf(\}

6.9一球从10010次落

10

main()

{int i,n;double h=100,s=100; scanf(\for(i=1;i<=n;i++)

{h*=0.5;if(i==1) continue;s=2*h+s;} printf(\} 6.10

零一个。到第10 main()

{int i=1,sum=0;

for(;i<=10;sum=2*sum+1,i++); printf(\}

6.11用迭代法求

要求前后两次求出的得差的绝对值少于0.00001。 #include\main()

{float x0,x1,a; scanf(\x1=a/2; do

{x0=x1;x1=(x0+a/x0)/2;}

while(fabs(x0-x1)>=0.00001); printf(\}

6.12 用牛顿迭代法求方程在1.5附近的根。

main()

{double x,y;x=1.5;

do{y=2*x*x*x-4*x*x+3*x-6; x=x-y/(6*x*x-8*x+3);}

while(y!=0); www.docin.comprintf(\}

6.13用二分法求方程在(-1010)之间的根

main()

{double x1,x2,y1,y2;x1=-10;x2=10; do{y1=2*x1*x1*x1-4*x1*x1+3*x1-6; x1=x1-y1/(6*x1*x1-8*x1+3);} while(y1!=0); do

{y2=2*x2*x2*x2-4*x2*x2+3*x2-6; x2=x2-y2/(6*x2*x2-8*x2+3);} while(y2!=0);

printf(\}

6.14打印以下图案 *

* * *

* * * * *

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

#include\main()

{int i,j,k;

for(i=0;i<=3;i++) {for(j=0;j<=2-i;j++) printf(\

for(k=0;k<=2*i;k++) printf(\ printf(\ }

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

printf(\ printf(\ printf(\ } }

第七章

第七章 数组

7.1 用筛法求之内的素数。 main()

{ int i,j,a[100]; for(i=2;i<100;i++) { a[i]=i;

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

if(a[i]%j==0) break;

if(a[i]-j==0)

printf(\} }

printf(\} 或

#include\main()

{static int i,j,k,a[98]; for(i=2;i<100;i++) {a[i]=i;k=sqrt(i); for(j=2;j<=a[i];j++) if(j

if(j>=k+1)

printf(\}

printf(\}

7.2用选择法对10个整数从小到大排序。 main()

{ int i,j,a[10],t;

for(i=0;i<10;i++)

scanf(\for(i=0;i<=9-j;i++) if(a[i]>a[i+1])

{t=a[i+1];a[i+1]=a[i];a[i]=t;} for(i=0;i<10;i++) printf(\} 或 main()

{static int a[10],i,j,k,t; for(i=1;i<11;i++) scanf(\for(j=1;j<10;j++) for(i=1;i<=10-j;j++) if (a[i]>a[i+1])

{t=a[i+1];a[i+1]=a[i];a[i]=t;} for(i=1;i<11;i++) printf(\printf(\}

7.3求一个3×3矩阵对角线元素之和。 main()

{int i=0,j=0,a[3][3],s1,s2; for(i=0;i<3;i++) for(j=0;j<3;j++)

scanf(\

s1=a[0][0]+a[1][1]+a[2][2]; s2=a[0][2]+a[1][1]+a[2][0]; printf(\} 或 main() {

static int i,j,s1,s2,a[3][3]; for(i=1;i<=3;i++) for(j=1;j<=3;j++) scanf(\

s1=a[1][1]+a[2][2]+a[3][3]; s2=a[1][3]+a[2][2]+a[3][1]; printf(\}

7.4已有一个已排好的数组今输入一个数要求按原来排序的规律将它插入数组中。 www.docin.commain()

{ static int a[10]={1,7,8,17,23,24,59,62,101};int i,j,t; scanf(\for(i=9;i>0;i--) if(a[i]

{t=a[i-1];a[i-1]=a[i];a[i]=t;} for(i=0;i<10;i++)

printf(\} 或 main() {

static int a[5]={1,4,5,6,7}; int i,t,b;

scanf(\for(i=0;i<5;i++) {if(b<=a[i])

{t=a[i];a[i]=b;b=t;} printf(\printf(\} 7.514

568。 main()

{ int i,b[10]; for(i=0;i<10;i++) scanf(\for(i=9;i>-1;i--) printf(\printf(\ 7.610 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 ∶ ∶ main()

86541{ static int m,n,k,b[15][15];

b[0][1]=1; www.docin.comfor(m=1;m<15;m++) {for(n=1;n<=m;n++)

{ b[m][n]=b[m-1][n-1]+b[m-1][n];

printf(\} } } 或 main()

{ int i,j,n,k,a[10][10];

static a[][1]={{1},{1},{1},{1},{1},{1},{1},{1},{1},{1}}; a[1][1]=1;

for(k=2,k<11;k++) for(i=2;i<=k;i++) for(j=2;j<=i;j++)

a[i][j]=a[i-1][j-1]+a[i-1][j]; for(k=1;k<11;k++) for(i=1;i<=k;i++) for(j=1;j<=i;j++) printf(\} 7.7

8 1 6 3 5 7 4 9 2

要求打印出由1n2的自然数构成的魔方阵。

#include main()

{ int a[16][16],i,i,k,p,m,n; p=1;

while(p==1) /*要求阶数为115的商数*/ { printf(\15)\ scanf(\

if((n!=0)&&(n<=15)&&(n%2!=0)) p=0; }

for(i=1;i<=n;i++) /*初始化*/ for(j=1;j<=n;j++) a[i][j]=0;

j=n/2+1; /*建立魔方阵*/ a[1][j]=1;

for(k=2;k<=n*n;k++) { i=i-1;

j=j+1; www.docin.com if((i<1)&&(j>n)) { i=i+2; j=j-1; } else

{ if(i<1) i=n; if(j>n) j=1; }

if(a[i][j]==0) a[i][j]=k; else { i=i+2; j=j-1; a[i][j]=k; } }

for(i=1;i<=n;i++) /*输出魔方阵*/ { for(j=1;j<=n;j++)

printf(\ printf(\ } } 7.8

没有鞍点。 main()

{int a[5][5],b[5],c[5],d[5][5],k=0,l=0;int i,j; for(i=0;i<5;i++) for(j=0;j<5;j++)

scanf(\for(i=0;i<5;i++)

for(j=0;j<5;j++,a[i][j]=d[i][j]); for(i=0,k=0;i<5;i++,k++) for(j=0;j<4;j++)

{if(a[i][j]>=a[i][j+1]) b[k]=a[i][j+1]=a[i][j]; else

b[k]=a[i][j+1]; }

for(j=0,l=0;j<5;j++,l++) for(i=0;i<4;i++)

{if(a[i][j]<=a[i+1][j]) c[l]=a[i+1][j]=a[i][j]; else

c[l]=a[i+1][j]; www.docin.com}

for(i=0,k=0;i<5;i++,k++) for(j=0,l=0;j<5;j++,l++) if(d[i][j]-b[k]==0) {if(d[i][j]-c[l]==0)

printf(\else

printf(\} }

7.9有个15

\无此数\

#include\main()

{static int i,j,m,a[15]={1,4,9,13,21,34,55,89,144,233,377,570,671,703,812}; scanf(\for(j=0;j<15;j++) printf(\printf(\i=7;

while(fabs(i-7)<8) {if(m

{printf(\else if(m>a[7]) {if(a[i]-m==0)

{printf(\else

printf(\}

if(fabs(i-7)-8==0)

printf(\} 7.10380字符。要求分别统计出其中英文大写字母、 小写字母、空格以及其它字符的个数。 main()

{int i,j=0,k=0,l=0,m=0,n=0;char str0[301],str1[100],str2[100],str3[100]; gets(str1);gets(str2);gets(str3);

strcat(str0,str1);strcat(str0,str2);strcat(str0,str3); for(i=0;str0[i]!=’\\0’;i++)

{if(str0[i]>=65&&str0[i]<=90) j++; else if(str0[i]>=97&&str0[i]<=122) k++; www.docin.comelse if(str0[i]>=48&&str0[i]<=57) l++;

else if(str0[i]==32) m++; else n++;}

printf(\printf(\}

7.11打印以下图案 main()

{int i,j,k;char a[5][5]; for(i=0;i<5;i++) {for(j=0;j<5;j++)

{a[i][j]=’*’;printf(\printf(\

for(k=1;k<=i+1;k++) printf(\printf(\} 7.12 A->Z a->z B->Y b->y C->X c->x ?

即第一个字母变成第26i26-i+1要

main()

{ int i;char str1[100],str2[100]; gets(str1);

for(i=0;str1[i]!=’\\0’;i++) if(str1[i]>=65&&str1[i]<=90) str2[i]=155-str1[i];

else if(str1[i]>=97&&str1[i]<=122) str2[i]=219-str1[i]; else

str2[i]=str1[i];

printf(\}

www.docin.com7.13strcat函数。

main()

{ int i,j;char str1[100],str2[100],str3[201]; gets(str1); gets(str2);

for(i=0;str1[i]!=’\\0’;i++) str3[i]=str1[i];

for(j=0;str2[j]!=’\\0’;j++) str3[j+i]=str2[j];

printf(\} 7.14S1和S2S1>S2S1=S2 0S1

或负数的绝对值应是相比较的两个字符串相对应字符的ASCIIA’与’C’

A’<’CA’与’C’的码差值为2\。 \和\2n’比’i’大5\。 #include #include main()

{ int i,resu;

char s1[100],s2[100];

printf(\\ gets(s1);

printf(\\ gets(s2); i=0;

while(s1[i]==s2[i]&&s1[i]!=’\\0’) i++; if(s1[i]==’\\0’&&s2[i]==’0’) resu=0; else resu=s1[i]-s2[i];

printf(\%d\\n\}

7.15 编写一个程序,将字符数组s2中的全部字符拷贝到字符数组s1中,不用strcpy函数。拷

\\0\\0’后面的字符不拷贝。

#include \main()

{ char s1[80],s2[80]; int i;

printf(\\ scanf(\

for(i=0;i

第八章

第八章 函数 1.1 并输出结果两个整数由键盘输入。 maxyueshu(m,n) int m,n;

{ int i=1,t;

for(;i<=m&&i<=n;i++) {if(m%i==0&&n%i==0) t=i; }

return(t); }

minbeishu(m,n) int m,n; {int j;

if(m>=n) j=m; else j=n;

for(;!(j%m==0&&j%n==0);j++); return j; }

main()

{int a,b,max,min;

printf(\scanf(\max=maxyueshu(a,b); min=minbeishu(a,b);

printf(\}

8.2求方程 b2-4ac大于0、等于0、和小于0 果。从主函数输入a、b、c的值。 #include\

float yishigen(m,n,k) float m,n,k; {float x1,x2;

x1=(-n+sqrt(k))/(2*m);

x2=(-n-sqrt(k))/(2*m); www.docin.comprintf(\shigen is x1=%.3f and

x2=%.3f\\n\}

float denggen(m,n) float m,n; {float x; x=-n/(2*m);

printf(\}

float xugen(m,n,k) float m,n,k; {float x,y; x=-n/(2*m);

y=sqrt(-k)/(2*m);

printf(\}

main()

{float a,b,c,q;

printf(\scanf(\printf(\q=b*b-4*a*c;

if(q>0) yishigen(a,b,q); else if(q==0) denggen(a,b); else xugen(a,b,q); } 8.2 psushu(m) int m;

{int i=2,t; for(;i<=m;i++)

if(m%i==0&&i

main() {int a,s;

printf(\scanf(\s=psushu(a);

if(s==1) printf(\else printf(\} www.docin.com

8.4

int zhuangzhi(b) int b[3][3]; {int i,j,t;

for(i=0;i<3;i++)

for(j=0;j>=i&&j<3-i;j++)

{t=b[i][j];b[i][j]=b[j][i];b[j][i]=t;} }

main()

{int a[3][3];int i,j; for(i=0;i<3;i++) for(j=0;j<3;j++)

scanf(\for(i=0;i<3;i++) {for(j=0;j<3;j++)

printf(\printf(\zhuangzhi(a); for(i=0;i<3;i++) {for(j=0;j<3;j++)

printf(\printf(\} 8.5

main()

{char str0[100]; gets(str0); fanxu(str0); puts(str0); }

fanxu(str1) char str1[100]; {int i,t,j;

char str2[100];strcpy(str2,str1); t=strlen(str1);

for(i=0,j=t-1;j>-1;i++,j--) str1[i]=str2[j]; } 8.6 lianjie(a,b)

char a[100],b[100]; www.docin.com{strcat(a,b); }

main()

{char str1[100],str2[100]; gets(str1);gets(str2); lianjie(str1,str2); puts(str1); } 8.7 fuzhi(a,b)

char a[100],b[100]; {int i,j=0;

for(i=0;a[i]!=’\\0’;i++)

if(a[i]==97||a[i]==101||a[i]==105||a[i]==111||a[i]==117||a[i]==65|| a[i]==69||a[i]==73||a[i]==85) {b[j]=a[i];j++;} }

main()

{char str1[100],str2[100]; gets(str1);

fuzhi(str1,str2); puts(str2); }

8.8写一函数入1990\。 char f(b) char b[4]; {int i=0; for(;i<4;i++) {printf(\

printf(\printf(\}

main()

{int a,u,v,w,t;char c[4]; scanf(\

u=a*0.001;v=0.01*(a-1000*u);w=(a-1000*u-100*v)*0.1;t=a-1000*u-100*v-10*w; c[0]=u+48; c[1]=v+48; c[2]=w+48; c[3]=t+48; f(c);

} www.docin.com 8.9

char tongji(str0,b) char str0[100]; int b[4]; {int i;

for(i=0;str0[i]!=’\\0’;i++)

{if(str0[i]>=65&&str0[i]<=90||str0[i]>=97&&str0[i]<=122) b[0]++; else if(str0[i]>=48&&str0[i]<=57) b[1]++; else if(str0[i]==32) b[2]++; else b[3]++;} }

main()

{char str1[100];static int i,a[4]; gets(str1); tongji(str1,a);

printf(\for(i=0;i<4;i++)

printf(\} 8.10出。 cechang(str1,word0)

char str1[100],word0[15]; {int i=0,j=0,t=0;

static char word1[15]; for(;str1[i]!=’\\0’;i++)

{if(!(str1[i]>=97&&str1[i]<=122||str1[i]>=65&&str1[i]<=90)) {t=j;j=0;continue;} word1[j]=str1[i];j++;

if(j>=t) strcpy(word0,word1);} }

main()

{char str0[100],longword[15]; gets(str0);

cechang(str0,longword); puts(longword); }

8.11写一函数用起泡法对输入的个字符按由小到大的顺序排列。 int paixu(x) int x[];

{int i,j,t; www.docin.comfor(j=1;j<10;j++) for(i=0;i<=9-j;i++)

if(x[i]>x[i+1]) {t=x[i+1];x[i+1]=x[i];x[i]=t;} }

main()

{int y[10];int i; for(i=0;i<10;i++) scanf(\paixu(y);

for(i=0;i<10;i++) printf(\printf(\} 8.12 abc一

个实根。求出后由主函数输出。 double qigen(s,t,u,v) int s,t,u,v; {double x,y;x=1;

do{y=s*x*x*x+t*x*x+u*x+v; x=x-y/(3*s*x*x+2*t*x+u);} while(y!=0); return x; }

main()

{int a,b,c,d;double x;

scanf(\x=qigen(a,b,c,d); printf(\}

8.13用递归方法求n阶勒让德多项式的值递归公式为

float p(x0,n) int n;float x0; {float y;

if(n==0||n==1) if(n==1) y=x0;else y=1;

else y=((2*n-1)*x0*p(x0,n-1)-(n-1)*p(x0,n-2))/n; return(y);

} www.docin.commain() {float x,y0;int a,i; scanf(\y0=p(x,a);

d由主函数输入。求X在1附近的printf(\}

8.14输入10个学生5

www.docin.com

本文来源:https://www.bwwdw.com/article/66qo.html

Top