河南理工大學c語言課後題答案,河南工程學院c語言的期末考試題

本文目錄一覽:

c語言程序設計能力教程答案

1 【C語言】《C語言程序設計教程(第二版)》習題答案

說 明

1. 本文所指的《C語言程序設計教程(第二版)》是李鳳霞主編、北京理

工大學出版社出版的,綠皮。

2 第1章 程序設計基礎知識

一、單項選擇題(第23頁)

1-4.CBBC 5-8.DACA

二、填空題(第24頁)

1.判斷條件 2.面向過程編程 3.結構化 4.程序 5.面向對象的程序設計語言 7.有窮性 8.直到型循環 9.算法 10.可讀性 11.模塊化 12.對問題的分析和模塊的劃分

三、應用題(第24頁)

2.源程序:

main()

{int i,j,k; /* i:公雞數,j:母雞數,k:小雞數的1/3 */ brprintf(“cock hen chick\n”); brfor(i=1;i=20;i++) brfor(j=1;j=33;j++) brfor(k=1;k=33;k++) brif (i+j+k*3==100i*5+j*3+k==100) brprintf(” %d %d %d\n”,i,j,k*3);}

執行結果:

cock hen chick

4 18 78

8 11 81

12 4 84

3.現計算斐波那契數列的前20項。

遞推法 源程序:

main()

{long a,b;int i; bra=b=1; brfor(i=1;i=10;i++) /*要計算前30項,把10改為15。*/ br{printf(“%8ld%8ld”,a,b); bra=a+b;b=b+a;}}

遞歸法 源程序:

main()

{int i; brfor(i=0;i=19;i++) brprintf(“%8d”,fib(i));}

fib(int i)

{return(i=1?1:fib(i-1)+fib(i-2));}

執行結果:

1 1 2 3 5 8 13 21 34 55

89 144 233 377 610 987 1597 2584 4181 6765

4.源程序:

#include “math.h”;

main()

{double x,x0,deltax; brx=1.5; brdo {x0=pow(x+1,1./3); brdeltax=fabs(x0-x); brx=x0; br}while(deltax1e-12);

printf(“%.10f\n”,x);}

執行結果:

1.3247179572

5.源程序略。(分子、分母均構成斐波那契數列)

結果是32.66026079864

6.源程序:

main()

{int a,b,c,m; brprintf(“Please input a,b and c:”); brscanf(“%d %d %d”,a,b,c); brif(ab){m=a;a=b;b=m;}

if(ac){m=a;a=c;c=m;}

if(bc){m=b;b=c;c=m;}

printf(“%d %d %d\n”,a,b,c);}

執行結果:

Please input a,b and c:123 456 789

789 456 123

7.源程序:

main()

{int a; brscanf(“%d”,a); brprintf(a%21==0?”Yes”:”No”);}

執行結果:

42

Yes

3 第2章 C語言概述

一、單項選擇題(第34頁)

1-4.BDCB 5-8.AABC

二、填空題(第35頁)

1.主 2.C編譯系統 3.函數 函數 4.輸入輸出 5.頭 6. .OBJ 7.庫函數 8.文本

三、應用題(第36頁)

5.sizeof是關鍵字,stru、_aoto、file、m_i_n、hello、ABC、SIN90、x1234、until、cos2x、s_3是標識符。

8.源程序:

main()

{int a,b,c; brscanf(“%d %d”,a,b); brc=a;a=b;b=c; brprintf(“%d %d”,a,b);}

執行結果:

12 34

34 12

4 第3章 數據類型與運算規則

一、單項選擇題(第75頁)

1-5.DBACC 6-10.DBDBC 11-15.ADCCC 16-20.CBCCD 21-25.ADDBC 26-27.AB

二、填空題(第77頁)

1.補碼 2.±(10^-308~10^308) 3.int(整數) 4.單目 自右相左 5.函數調用 6.a或b 7.1 8.65,89

三、應用題(第78頁)

1.10 9

2.執行結果:

11

12

1

5 第4章 順序結構程序設計

一、單項選擇題(第90頁)

1-5.DCDAD 6-10.BACBB

二、填空題(第91頁)

1.一 ;2. 5.169000 3.(1)-2002500 (2)I=-200,j=2500 (3)i=-200

j=2500 4.a=98,b=765.000000,c=4321.000000 5.略 6.0,0,3 7.3 8.scanf(“%lf%lf%lf”,a,b,c); 9. 13 13.000000,13.000000 10.a=a^c;c=c^a;a=a^c;(這種算法不破壞b的值,也不用定義中間變量。)

三、編程題(第92頁)

1.仿照教材第27頁例2-1。

2.源程序:

main()

{int h,m; brscanf(“%d:%d”,h,m); brprintf(“%d\n”,h*60+m);}

執行結果:

9:23

563

3.源程序:

main()

{int a[]={-10,0,15,34},i;

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

printf(“%d\370C=%g\370F\t”,a[i],a[i]*1.8+32);}

執行結果:

-10℃=14°F 0℃=32°F 15℃=59°F 34℃=93.2°F

4.源程序:

main()

{double pi=3.14159265358979,r=5; brprintf(“r=%lg A=%.10lf S=%.10lf\n”,r,2*pi*r,pi*pi*r);}

執行結果:

r=5 A=31.4159265359 S=49.3480220054

5.源程序:

#include “math.h”;

main()

{double a,b,c; brscanf(“%lf%lf%lf”,a,b,c); brif (a+bca+cbb+ca) br{double s=(a+b+c)/2; brprintf(“SS=%.10lf\n”,sqrt(s*(s-a)*(s-b)*(s-c)));}

else printf(“Data error!”);}

執行結果:

4 5 6

SS=9.9215674165

6.源程序:

main()

{int a=3,b=4,c=5;float d=1.2,e=2.23,f=-43.56; brprintf(“a=%3d,b=%-4d,c=**%d\nd=%g\ne=%6.2f\nf=%-10.4f**\n”,a,b,c,d,e,f);}

7.源程序:

main()

{int a,b,c,m; brscanf(“%d %d %d”,a,b,c); brm=a;a=b;b=c;c=m; brprintf(“%d %d %d\n”,a,b,c);}

執行結果:

5 6 7

6 7 5

8.源程序:

main()

{int a,b,c; brscanf(“%d %d %d”,a,b,c); brprintf(“average of %d,%d and %d is %.2f\n”,a,b,c,(a+b+c)/3.); br執行結果: br6 7 9 braverage of 6,7 and 9 is 7.33 br9.不能。修改後的源程序如下: brmain() br{int a,b,c,x,y; brscanf(“%d %d %d”,a,b,c); brx=a*b;y=x*c; brprintf(“a=%d,b=%d,c=%d\n”,a,b,c); brprintf(“x=%d,y=%d\n”,x,y);}

6 第5章 選擇結構程序設計

一、單項選擇題(第113頁)

1-4.DCBB 5-8.DABD

二、填空題(第115頁)

1.非0 0 2.k==0

3.if (abs(x)4) printf(“%d”,x);else printf(“error!”);

4.if((x=1x=10||x=200x=210)x1)printf(“%d”,x);

5.k=1 (原題最後一行漏了個d,如果認為原題正確,則輸出k=%。)

6. 8! Right!11 7.$$$a=0 8.a=2,b=1

三、編程題(第116頁)

1.有錯。正確的程序如下:

main()

{int a,b,c; brscanf(“%d,%d,%d”,a,b,c); brprintf(“min=%d\n”,ab?bc?c:b:ac?c:a);}

2.源程序:

main()

{unsigned long a; brscanf(“%ld”,a); brfor(;a;printf(“%d”,a%10),a/=10);}

執行結果:

12345

54321

3.(1)源程序:

main()

{int x,y; brscanf(“%d”,x); brif (x-5×0)y=x; brif (x=0x5)y=x-1; brif (x=5×10)y=x+1; brprintf(“%d\n”,y);}

(2)源程序:

main()

{int x,y; brscanf(“%d”,x); brif(x10) if(x-5) if(x=0) if(x=5)y=x+1; brelse y=x-1; else y=x; brprintf(“%d\n”,y);}

(3)源程序:

main()

{int x,y; brscanf(“%d”,x); brif(x10) if(x=5)y=x+1; brelse if(x=0)y=x-1; brelse if(x-5)y=x; brprintf(“%d\n”,y);}

(4)源程序:

main()

{int x,y; brscanf(“%d”,x); brswitch(x/5) br{case -1:if(x!=-5)y=x;break; brcase 0:y=x-1;break; brcase 1:y=x+1;}

printf(“%d\n”,y);}

4.本題為了避免考慮每月的天數及閏年等問題,故採用面向對象的程序設計。

現給出Delphi源程序和C++ Builder源程序。

Delphi源程序:

procedure TForm1.Button1Click(Sender: TObject);

begin

edit3.Text:=format(‘%.0f天’,[strtodate(edit2.text) -strtodate(edit1.text)]);

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

Edit2.Text:=datetostr(now);

button1click(form1)

end;

C++ Builder源程序:

void __fastcall TForm1::Button1Click(TObject *Sender)

{

Edit3-Text=IntToStr(StrToDate(Edit2-Text)-StrToDate(Edit1-Text))+”天”;

}

void __fastcall TForm1::FormCreate(TObject *Sender)

{

Edit2-Text=DateToStr(Now());

Button1Click(Form1);

}

執行結果:(運行於Windows下)

5.源程序:

main()

{unsigned a,b,c; brprintf(“請輸入三個整數:”); brscanf(“%d %d %d”,a,b,c); brif(abca==ba==c)printf(“構成等邊三角形\n”); brelse if(a+bca+cbb+ca) brif(a==b||a==c||b==c)printf(“構成等腰三角形\n”); brelse printf(“構成一般三角形\n”); brelse printf(“不能構成三角形\n”);}

執行結果:

請輸入三個整數:5 6 5

構成等腰三角形

6.源程序:

main()

{int x,y; brscanf(“%d”,x); brif(x20)y=1; brelse switch(x/60) br{case 0:y=x/10;break; brdefault:y=6;}

printf(“x=%d,y=%d\n”,x,y);}

7.源程序:

main()

{unsigned m;float n; brscanf(“%d”,m); brif(m100)n=0; brelse if(m600)n=0.06; brelse n=(m/100+0.5)/100; brprintf(“%d %.2f %.2f\n”,m,m*(1-n),m*n);}

執行結果:

450

450 429.75 20.25

8. 2171天(起始日期和終止日期均算在內)

本題可利用第4小題編好的程序進行計算。把起始日期和終止日期分別打入“生日”和“今日”欄內,單擊“實足年齡”按鈕,將所得到的天數再加上1天即可。

9.源程序:

#include “math.h”;

main()

{unsigned long i; brscanf(“%ld”,i); brprintf(“%ld %d\n”,i%10,(int)log10(i)+1);}

執行結果:

99887

7 5

10.源程序:

main()

{unsigned long i;unsigned j[10],m=0; brscanf(“%ld”,i); brfor(;i;){j[m++]=(i+2)%10;i/=10;}

for(;m;m–)i=i*10+j[m-1];

printf(“%ld\n”,i);}

執行結果:

6987

8109

(註:要加密的數值不能是0或以0開頭。如果要以0開頭需用字符串而不能是整數。)

7 第6章 循環結構程序設計

一、單項選擇題(第142頁)

1-4.BCCB 5-8.CBCA

二、填空題(第143頁)

1.原題可能有誤。如無誤,是死循環 2.原題有誤。如果把b=1後面的逗號改為分號,則結果是8。 3.20 4.11 5. 2.400000 6.*#*#*#$ 7.8 5 2 8.①d=1.0 ②++k ③k=n 9.①x=0 ②xamin

三、編程題(第145頁)

1. 源程序:

main()

{int i=1,sum=i; brwhile(i101){sum+=i=-i-2;sum+=i=-i+2;}

printf(“%d\n”,sum);}

執行結果:

51

2.源程序:

main()

{double p=0,n=0,f;int i; brfor(i=1;i=10;i++) br{scanf(“%lf”,f); brif (f0)p+=f; else n+=f;}

printf(“%lf %lf %lf\n”,p,n,p+n);}

3.源程序:

main()

{unsigned a; brscanf(“%ld”,a); brfor (;a;printf(“%d,”,a%10),a/=10); brprintf(“\b \n”);}

執行結果:

23456

6,5,4,3,2

4.源程序:

main()

{unsigned long a,b,c,i; brscanf(“%ld%ld”,a,b); brc=a%1000; brfor(i=1;ib;i++)c=c*a%1000; brif(c100)printf(“0”); brif(c10)printf(“0”); brprintf(“%ld\n”,c);}

執行結果:

129 57

009

5.略

6.原題提供的計算e的公式有誤(前面漏了一項1)。正確的公式是e= 1 + 1 + 1/2! + 1/3! + … + 1/n! + …

(1)源程序:

main()

{double e=1,f=1;int n; brfor(n=1;n=20;n++){f/=n;e+=f;}

printf(“e=%.14lf\n”,e);}

執行結果:

e=2.71828182845905

(2)源程序:

main()

{double e=1,f=1;int n; brfor(n=1;f1e-4;n++){f/=n;e+=f;}

printf(“e=%.4f\n”,e);}

執行結果:

e=2.7183

7.源程序:

main()

{unsigned long a=0,b=1,c=0;int i,d; brscanf(“%d”,d); brfor (i=1;i=(d+2)/3;i++) brprintf(“%10ld%10ld%10ld”,a,b,(a+=b+c,b+=c+a,c+=a+b));}

本題還可以用遞歸算法(效率很低),源程序如下:

unsigned long fun(int i)

{return i=3?i:fun(i-1)+fun(i-2)+fun(i-3);}

main()

{int i,d; scanf(“%d”,d); brfor(i=1;i=d;i++) brprintf(“%10ld”,fun(i));}

執行結果:

15

1 2 3 6 11 20 37 68

125 230 423 778 1431 2632 4841

8.源程序:

main()

{int i; brfor(i=1010;i=9876;i+=2) brif(i/100%11i%100%11i/10%100%11i/1000!=i%10i/1000!=i/10%10i/100%10!=i%10)printf(” %d”,i);}

執行結果:

1024 1026 1028 1032 1034 1036 …… …… 9874 9876

9.源程序:

main()

{int i,j,k; brprintf(“apple watermelon pear\n”); brfor(i=1;i=100;i++) brfor(j=1;j=10;j++) brif((k=100-i-j)*2==400-i*4-j*40) brprintf(“%4d%7d%9d\n”,i,j,k);}

執行結果:

apple watermelon pear

5 5 90

24 4 72

43 3 54

62 2 36

81 1 18

10.源程序:

#include “stdio.h”;

#define N 4 /* N為階數,可以改為其他正整數 */

main()

{int m=N*2,i,j; brfor(i=1;im;printf(“\n”),i++) brfor(j=1;jm; brputchar(N-abs(i-N)=abs(j++-N)?’ ‘:’*’));}

如果把N值改為5,則執行結果如下:

*

***

*****

*******

*********

*******

*****

***

*

求C語言程序設計習題集與上機指導-第三版 (及答案)……

C語言程序設計第三版譚浩強課後習題答案完整版

第一章

1.5請參照本章例題,編寫一個C程序,輸出以下信息:

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

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(maxb)

max=b;

if(maxc)

max=c;

printf(“最大數為:“%d”,max);

}

第三章

3.6寫出以下程序運行的結果。

main()

{char c1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’;

printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3);

printf(“\t\b%c %c”,c4,c5);

}

解:

aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabc

AㄩN

3.7 要將”China”譯成密碼,譯碼規律是:用原來字母后面的第4個字母代替原來的字母.例如,字母”A”後面第4個字母是”E”.”E”代替”A”。因此,”China”應譯為”Glmre”。請編一程序,用賦初值的方法使cl、c2、c3、c4、c5五個變量的值分別為,’C’、’h’、’i’、’n’、’a’,經過運算,使c1、c2、c3、c4、c5分別變為’G’、’l’、’m’、’r’、’e’,並輸出。

解:

#include stdio.h

main()

{ 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”,c1,c2,c3,c4,c5);

}

運行結果:

密碼是Glmre

3.9求下面算術表達式的值。

(1)x+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

(1)2.5

(2)3.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);

}

解:

9,11,9,10

3.12 寫出下面表達式運算後a的值,設原來a=12。設a和n都已定義為整型變量。

(1)a+=a (2) a-=2 (3) a*=2+3 (4)a/=a+a

(5) a%=(n%=2),n的值等於5

(6)a+=a-=a*=a

解:

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

第四章

4.4若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=’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)

c2=ˊ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(“a=%2d b=%2d c=%2d\n”,a,b,c);

printf(“x=%f,y=%f,z=%f\n”,x,y,z);

printf(“x+y=%5.2f y+z=%5.2f z+x=%5.2f\n”,x+y,y+z,z+x);

printf(“u=%6ld n=%9ld\n”,u,n);

printf(“%s %s %d%s\n”,”c1=’a’”,”or”,c1,”(ASCII)”);

printf(“%s %s %d%s\n”,”c2=’a’”,”or”,c2,”(ASCII)”);

}

4.7用scanf下面的函數輸入數據,使a=3,b=7,x=8.5,y=71.82,c1=ˊAˊ,c2=ˊaˊ,問在鍵盤上如何輸入?

main()

{

int a,b;float x,y;char c1c2;

scanf(”a=%d_b=%d”,a,b);

scanf(”_x=%f_y=%e”,x,y);

scanf(”_c1=%c_c2=%c”,c1,c2);

}

a=3_b=7

_x=8.5_y=71.82

_c1=A_c2=a

4.8設圓半徑r=1.5,圓柱高h=3,求圓周長、圓面積、圓球表面積、圓球體積、圓柱體積。用scanf輸入數據,輸出計算結果,輸出時要求文字說明,取小數點後兩位數字。請編程序。

main()

{float r,h,C1,Sa,Sb,Va,Vb;

scanf(“%f,%f”,r,h);

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(“C1=%.2f\n”,C1);

printf(“Sa=%.2f\nSb=%.2f\nVa=%.2f\nVb=%.2f\n”,Sa,Sb,Va,Vb);

}

4.9輸入一個華氏溫度,要求輸出攝氏溫度。公式為

c=5(F-32)/9

輸出要求有文字說明,取位2小數。

main()

{float F,c;

scanf(“%f”,F);

c=5*(F-32)/9;

printf(“c=%.2f”,c);

}

4.10編程序,用getchar函數讀入兩個字符給c1、c2,然後分別用函數和函數輸出這兩個字符。並思考以下問題:(1)變量c1、c2應定義為字符型或整形?抑二者皆可?(2)要求輸出c1和c2值的ASCII碼,應如何處理?用putchar函數還是printf函數?(3)整形變量與字符變量是否在任何情況下都可以互相代替?如:

char c1,c2;

int c1,c2;

是否無條件的等價?

#include”stdio.h”

main()

{char c1,c2;

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

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

and Settings/Administrator/桌面/C語言程序設計第三版譚浩強課後習題答案完整版.txt(第 1/19 頁)[2010-5-10 9:14:34]

and Settings/Administrator/桌面/C語言程序設計第三版譚浩強課後習題答案完整版.txt

1.5請參照本章例題,編寫一個C程序,輸出以下信息:

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

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(maxb)

max=b;

if(maxc)

max=c;

printf(“最大數為:“%d”,max);

}

第三章

3.6寫出以下程序運行的結果。

main()

{char c1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’;

printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3);

printf(“\t\b%c %c”,c4,c5);

}

解:

aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabc

AㄩN

3.7 要將”China”譯成密碼,譯碼規律是:用原來字母后面的第4個字母代替原來的字母.例如,字母”A”後面第4個字母是”E”.”E”代替”A”。因此,”China”應譯為”Glmre”。請編一程序,用賦初值的方法使cl、c2、c3、c4、c5五個變量的值分別為,’C’、’h’、’i’、’n’、’a’,經過運算,使c1、c2、c3、c4、c5分別變為’G’、’l’、’m’、’r’、’e’,並輸出。

解:

#include stdio.h

main()

{ 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”,c1,c2,c3,c4,c5);

}

運行結果:

密碼是Glmre

3.9求下面算術表達式的值。

(1)x+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

(1)2.5

(2)3.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);

}

解:

9,11,9,10

3.12 寫出下面表達式運算後a的值,設原來a=12。設a和n都已定義為整型變量。

(1)a+=a (2) a-=2 (3) a*=2+3 (4)a/=a+a

(5) a%=(n%=2),n的值等於5

(6)a+=a-=a*=a

解:

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

第四章

4.4若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=’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)

c2=ˊ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(“a=%2d b=%2d c=%2d\n”,a,b,c);

printf(“x=%f,y=%f,z=%f\n”,x,y,z);

printf(“x+y=%5.2f y+z=%5.2f z+x=%5.2f\n”,x+y,y+z,z+x);

printf(“u=%6ld n=%9ld\n”,u,n);

printf(“%s %s %d%s\n”,”c1=’a’”,”or”,c1,”(ASCII)”);

printf(“%s %s %d%s\n”,”c2=’a’”,”or”,c2,”(ASCII)”);

}

4.7用scanf下面的函數輸入數據,使a=3,b=7,x=8.5,y=71.82,c1=ˊAˊ,c2=ˊaˊ,問在鍵盤上如何輸入?

main()

{

int a,b;float x,y;char c1c2;

scanf(”a=%d_b=%d”,a,b);

scanf(”_x=%f_y=%e”,x,y);

scanf(”_c1=%c_c2=%c”,c1,c2);

}

a=3_b=7

_x=8.5_y=71.82

_c1=A_c2=a

4.8設圓半徑r=1.5,圓柱高h=3,求圓周長、圓面積、圓球表面積、圓球體積、圓柱體積。用scanf輸入數據,輸出計算結果,輸出時要求文字說明,取小數點後兩位數字。請編程序。

main()

{float r,h,C1,Sa,Sb,Va,Vb;

scanf(“%f,%f”,r,h);

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(“C1=%.2f\n”,C1);

printf(“Sa=%.2f\nSb=%.2f\nVa=%.2f\nVb=%.2f\n”,Sa,Sb,Va,Vb);

}

4.9輸入一個華氏溫度,要求輸出攝氏溫度。公式為

c=5(F-32)/9

輸出要求有文字說明,取位2小數。

main()

{float F,c;

scanf(“%f”,F);

c=5*(F-32)/9;

printf(“c=%.2f”,c);

}

4.10編程序,用getchar函數讀入兩個字符給c1、c2,然後分別用函數和函數輸出這兩個字符。並思考以下問題:(1)變量c1、c2應定義為字符型或整形?抑二者皆可?(2)要求輸出c1和c2值的ASCII碼,應如何處理?用putchar函數還是printf函數?(3)整形變量與字符變量是否在任何情況下都可以互相代替?如:

char c1,c2;

int c1,c2;

是否無條件的等價?

#include”stdio.h”

main()

{char c1,c2;

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

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

switch(place)

{ case 5: printf(“%d,%d,%d,%d,%d”,ten_thousand,thousand,hundred,ten,indiv);

printf(“\n反序數字為;”);

printf(“%d%d%d%d%d\n”,indiv,ten,hundred,thousand,ten_thousand);

break;

case 4: printf(“%d,%d,%d,%d”,thousand,hundred,ten,indiv);

printf(“\n反序數字為:”);

printf(“%d%d%d%d\n”,indiv,ten,hundred,thousand);

break;

case 3: printf(“%d,%d,%d”,hundred,ten,indiv);

printf(“\n反序數字為:”);

printf(“%d%d%d\n”,indiv,ten,hundred);

break;

case 2: printf(“%d,%d”,ten,indiv);

printf(“\n反序數字為:”);

printf(“%d%d\n”,indiv,ten);

break;

case 1: printf(“%d”,indiv);

printf(“\n反序數字為:”);

printf(“%d\n”,indiv);

break;

}

}

第五章

5.8 企業發放的獎金根據利潤提成。利潤I低於或等於10萬元時,獎金可提成10% ;利潤高於10萬元,低於20萬元(100000I≤200000)時,其中10萬元按10%提成,高於10萬元的部分,可提成7.5% ;200000I≤400000時,其中20萬元仍按上述辦法提成(下同),高於20萬元的部分按5%提成;400000I≤600000時,高於40萬元的部分按3%提成;600000〈I≤1000000時,高於60萬的部分按1.5%提成;I1000000時,超過100萬元的部分按1%提成。從鍵盤輸入當月利潤I,求應發放獎金總數。要求:(1)用if語句編程序;(2)用switch語句編程序。

解:計算利潤時,要特別注意不同利潤的不同提成比例。例如,利潤為15萬元,其中有10萬元按10%的比例提成,另外5萬元則按7.5%提成。

(1) 用if語句編程序。

#include stdio.h

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(“%ld”,i);

if(i=100000)

bonus=i*0.1; /*利潤在10萬元以內按0.1提成獎金*/

else if(i=200000)

bonus=bon1+(i-100000)*0.075; /*利潤在10萬至20萬元時的獎金*/

else 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(”獎金是%10.2f\n”,bonus);

}

此題的關鍵在於正確寫出每一區間的獎金計算公式。例如利潤在10萬元至20萬時,獎金應由兩部分組成:①利潤為10萬元時應得的獎金。即100000ⅹ0.1;②10萬元以上部分應得的獎金。即(num-100000)ⅹ0.075。同理,20萬~40萬這個區間的獎金也應由兩部分組成:①利潤為20萬元時應得的獎金,即100000ⅹ0.1ⅹ10萬ⅹ0.075;②20萬元以上部分應得的獎金,即(num-200000)ⅹ0.05。程序中先把10萬、20萬、40萬、60萬、100萬各關鍵點的獎金計算出來,即bon1、bon2、bon4、bon6、hon10;然後再加上各區間附加部分的獎金。

(2) 用switch語句編程序。

輸入利潤i,確定相應的提成等級branch

根據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 stdio.h

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;

bon10=bon6+400000*0.015;

printf(“請輸入利潤i:”);

scanf(“%ld”,i);

c=i/100000;

if(c10) 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(“獎金是%10.2f”,bonus);

}

5.9 輸入4個整數,要求按由大到小的順序輸出。

解:此題採用依次比較的方法排出其大小順序。在學習了循環和數組以後,可以有更多的排序方法。

#include stdio.h

main()

{ int t,a,b,c,d;

printf(“請輸入4個整數:”);

scanf(“%d,%d,%d,%d”,a,b,c,d);

printf(“\n a=%d,b=%d,c=%d,d=%d\n”,a,b,c,d);

if(ab) {t=a; a=b; b=t;}

if(ac) {t=a; a=c; c=t;}

if(ad) {t=a; a=d; d=t;}

if(bc) {t=a; b=c; c=t;}

if(bd) {t=b; b=d; d=t;}

if(cd) {t=c; c=d; d=t;}

printf(“排序結果如下:\n”);

C語言程序設計課後答案(何欽銘)

C語言版:

#include stdio.h

#include stdlib.h

int main(int argc, char *argv[])

{

int i, j, k, n, m;

for (i=1; i10; i++)

for (j=0; j10; j++)

for (k=0; k10; k++){

n = i*i*i + j*j*j + k*k*k;

m = i*100 + j*10 + k;

if (n == m) printf(“%d\n”, m);

}

system(“PAUSE”);

return 0;

}

—————————————————–

python 版:

for i in range(1, 10):

for j in range(10):

for k in range(10):

if i**3+j**3+k**3 == i*100+j*10+k:

print i*100+j*10+k

輸出結果:

153

370

371

407

c語言程序設計(何欽銘 顏暉 第三版)課後習題答案

習  題  1

1.1  填空題

1.函數

2.主函數main();主函數main()

3.主函數main()

4.函數首部;函數體

5.{;}

6.順序結構;選擇結構;循環結構

7..c;.obj;.exe

1.2  思考題

1.答:結構化程序設計是指,為使程序具有一個合理的結構以保證程序正確性而規定的一套如何進行程序設計的原則。順序結構,選擇結構,循環結構

2.答:算法是對具體問題求解步驟的一

種描述。計算機算法的表達工具通常採用以下幾種方法:①用自然語言表示算法;②用流程圖表示算法;③用偽代碼表示算法;④用程序設計語言表示算法。

3.略

4.略

5.略

1.3  編程題

1.答:

#include “stdio.h”

main()

{  float a=10, b=20, h=5, s;

s=(a+b)*h/2;

printf(“s=%f ” , s );

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/247380.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:23
下一篇 2024-12-12 13:23

相關推薦

  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • 小甲魚Python最新版課後作業及答案

    Python編程語言已經成為最受歡迎的計算機編程語言之一。而小甲魚的Python教程已經深受廣大編程學習者的青睞,其中課後作業及答案是學習過程中的必要部分。下面我們從幾個方面具體闡…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • Python語言實現人名最多數統計

    本文將從幾個方面詳細介紹Python語言實現人名最多數統計的方法和應用。 一、Python實現人名最多數統計的基礎 1、首先,我們需要了解Python語言的一些基礎知識,如列表、字…

    編程 2025-04-28
  • Python作為中心語言,在編程中取代C語言的優勢和挑戰

    Python一直以其簡單易懂的語法和高效的編碼環境而著名。然而,它最近的發展趨勢表明Python的使用範圍已經從腳本語言擴展到了從Web應用到機器學習等廣泛的開發領域。與此同時,C…

    編程 2025-04-28

發表回復

登錄後才能評論