譚浩強c語言配套課件第八章,譚浩強c語言程序設計第三章答案

本文目錄一覽:

求譚浩強c語言程序設計視頻教程打包下載

C語言程序設計

鏈接:

 提取碼:8uar複製這段內容後打開百度網盤手機APP,操作更方便哦!

若資源有問題歡迎追問~

譚浩強主編的《C語言程序設計》,

譚浩強的這本我們老師說只適合考二級證用的,要真想學C,就去買這兩部:C程序設計語言 [(美)克尼漢] 和 C Primer Plus

C程序設計語言 [(美)克尼漢]是C的經典書籍,但並不是一本入門書,而是有一定基礎後用的全局把握程序設計用的,適合反覆看,用本書入門怕是比較困難;C Primer Plus是一本從基礎講起的入門好書。

C學好就繼續加強去學習C++ ,C語言是C++的一個子集,C++則更強大

譚浩強主編的內容到底是什麼樣的?

C程序設計 譚浩強 清華大學出版社

第一章 C語言的結構

1.程序的構成,main函數和其他函數。

2.頭文件、數據說明、函數的開始和結束標誌。

3.源程序的書寫格式。

4.C語言的風格。

第二章 數據類型及其運算

1.C的數據類型(基本類型、構造類型、指針類型、空類型)及其定義方法。

2.C運算符的種類、運算優先順序和結合性。

3.不同類型數據間的轉換與運算。

4.C表達式類型(賦值表達式、算術表達式、關係表達式、邏輯表達式、條件表達式、逗號表達式)和求

值規則。

第三章 基本語句

1.表達式語句,空語句,複合語句。

2.數據的輸入與輸出,輸入輸出函數的調用。

3.複合語句。

4.goto語句和語句標號的使用。

第四章 選擇結構程序設計

1.用if語句實現選擇結構。

2.用switch語句實現多分支選擇結構。

3.選擇結構的嵌套。

第五章 循環結構程序設計

1.for循環結構。

2.while和do while循環結構。

3.continue語句和break語句。

4.循環的嵌套。

第六章 數組的定義和引用

1.一維數組和多維數組的定義、初始化和引用。

2.字元串與字元數組。

第七章 函數

1.庫函數的正確調用。

2.函數的定義方法。

3.函數的類型和返回值。

4.形式參數與實在參數,參數值的傳遞。

5.函數的正確調用,嵌套調用,遞歸調用。

6.局部變數和全局變數。

7.變數的存儲類別(自動、靜態、寄存器、外部),變數的作用域和生存期。

8.內部函數與外部函數。

第八章 編譯預處理

1.宏定義:不帶參數的宏定義;帶參數的宏定義。

2.「文件包含」處理。

第九章 指針

1.指針與指針變數的概念,指針與地址運算符。

2.變數、數組、字元串、函數、結構體的指針以及指向變數、數組、字元串、

函數、結構體的指針變數。通過指針引用以上各類型數據。

3.用指針作函數參數。

4.返回指針值的指針函數。

5.指針數組,指向指針的指針,main函數的命令行參數。

第十章 結構體(即「結構」)與共用體(即「聯合」)。

1.結構體和共用體類型數據的定義方法和引用方法。

2.用指針和結構體構成鏈表,單向鏈表的建立、輸出、刪除與插入。

第十一章 位運算

1.位運算符的含義及使用。

2.簡單的位運算。

第十二章 文件操作

只要求緩衝文件系統(即高級磁碟I/O系統),對非標準緩衝文件系統(即低級磁碟I/O系統)不要求。

1.文件類型指針(FILE類型指針)。

2.文件的打開與關閉(fopen,fclose)。

3.文件的讀寫(fputc,fgetc,fputs,fgets,fread,fwrite,fprintf,fscanf函數),文件的定位(rewind,fseek函數)。

我要c語言第三版譚浩強8.3的答案

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

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

Very Goodj!

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

解:

main()

{

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

printf(“\n”);

printf(” Very Good! \n”);

printf(“\n”);

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

}

1.6編寫一個程序,輸入a b c三個值,輸出其中最大者。

解:main()

{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.3 請將下面各數用八進位數和十六進位數表示:

(1)10 (2)32 (3)75 (4)-617

(5)-111 (6)2483 (7)-28654 (8)21003

解:十 八 十六

(10)=(12)=(a)

(32)=(40)=20

(75)=(113)=4b

(-617)=(176627)=fd97

-111=177621=ff91

2483=4663=963

-28654=110022=9012

21003=51013=520b

3.5字元常量與字元串常量有什麼區別?

解:字元常量是一個字元,用單引號括起來。字元串常量是由0個或若干個字元

而成,用雙引號把它們括起來,存儲時自動在字元串最後加一個結束符號’\0′.

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

#includestdio.h

void main()

{

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

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

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

解:程序的運行結果為:

aabb cc abc

A N

3.7將”China”譯成密碼.密碼規律:用原來的字母后面第4個字母代替原來的字母,

例如,字母”A”後面第4個字母是”E”,用”E”代替”A”.因此,”China”應譯為”Glmre”.

請編一程序,用賦初值的議程使c1,c2,c3,c4,c5分別變成’G’,’1′,’m’,’r’,’e’,並

輸出.

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);

}

3.8例3.6能否改成如下:

#includestdio.h

void main()

{

int c1,c2;(原為 char c1,c2)

c1=97;

c2=98;

printf(“%c%c\n”,c1,c2);

printf(“%d%d\n”,c1,c2);

}

解:可以.因為在可輸出的字元範圍內,用整型和字元型作用相同.

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

(1)x+a%3*(int)(x+y)%2/4=2.5(x=2.5,a=7,y=4.7)

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

3.10寫出下面程序的運行結果:

#includestdio.h

void main()

{

int i,j,m,n;

i=8;

j=10;

m=++i;

n=j++;

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

}

解:結果: 9,11,9,10

第4章

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.60 y+z=-1.20 z+x=-2.40

u= 51274 n= 128765

c1=’a’ or 97(ASCII)

c2=’B’ or 98(ASCII)

解:

main()

{

int a,b,c;

long int u,n;

float x,y,z;

char c1,c2;

a=3;b=4;c=5;

x=1.2;y=2.4;z=-3.6;

u=51274;n=128765;

c1=’a’;c2=’b’;

printf(“\n”);

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

printf(“x=%8.6f,y=%8.6f,z=%9.6f\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(“c1=’%c’ or %d(ASCII)\n”,c1,c2);

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

}

4.5請寫出下面程序的輸出結果.

結果:

57

5 7

67.856400,-789.123962

67.856400 ,-789.123962

67.86,-789.12,67.856400,-789.123962,67.856400,-789.123962

6.785640e+001,-7.89e+002

A,65,101,41

1234567,4553207,d687

65535,17777,ffff,-1

COMPUTER, COM

4.6用下面的scanf函數輸入數據,使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’,

問在鍵盤上如何輸入?

main()

{

int a,b;

float x,y;

char c1,c2;

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

說明:在邊疆使用一個或多個scnaf函數時,第一個輸入行末尾輸入的”回車”被第二

個scanf函數吸收,因此在第二\三個scanf函數的雙引號後設一個空格以抵消上行

入的”回車”.如果沒有這個空格,按上面輸入數據會出錯,讀者目前對此只留有一

初步概念即可,以後再進一步深入理解.

4.7用下面的scanf函數輸入數據使a=10,b=20,c1=’A’,c2=’a’,x=1.5,y=-3.75,z=57.8,請問

在鍵盤上如何輸入數據?

scanf(“%5d%5d%c%c%f%f%*f %f”,a,b,c1,c2,y,z);

解:

main()

{

int a,b;

float x,y,z;

char c1,c2;

scanf(“%5d%5d%c%c%f%f”,a,b,c1,c2,x,y,z);

}

運行時輸入:

10 20Aa1.5 -3.75 +1.5,67.8

註解:按%5d格式的要求輸入a與b時,要先鍵入三個空格,而後再打入10與20。%*f是用來禁止賦值的。在輸入時,對應於%*f的地方,隨意打入了一個數1.5,該值不會賦給任何變數。

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

解:main()

{

float pi,h,r,l,s,sq,vq,vz;

pi=3.1415926;

printf(“請輸入圓半徑r圓柱高h:\n”);

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

l=2*pi*r;

s=r*r*pi;

sq=4*pi*r*r;

vq=4.0/3.0*pi*r*r*r;

vz=pi*r*r*h;

printf(“圓周長為: =%6.2f\n”,l);

printf(“圓面積為: =%6.2f\n”,s);

printf(“圓球表面積為: =%6.2f\n”,sq);

printf(“圓球體積為: =%6.2f\n”,vz);

}

4.9輸入一個華氏溫度,要求輸出攝氏溫度,公式為C=5/9(F-32),輸出要有文字說明,取兩位小數.

解: main()

{

float c,f;

printf(“請輸入一個華氏溫度:\n”);

scanf(“%f”,f);

c=(5.0/9.0)*(f-32);

printf(“攝氏溫度為:%5.2f\n”,c);

}

第五章 邏輯運算和判斷選取結構

5.4有三個整數a,b,c,由鍵盤輸入,輸出其中最大的數.

main()

{

int a,b,c;

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

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

if(ab)

if(bc)

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

else

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

else if(ac)

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

else

printf(“max-%d\n”,a);

}

方法2:使用條件表達式.

main()

{int a,b,c,termp,max;

printf(” 請輸入 A,B,C: “);

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

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

temp=(ab)?a:b;

max=(tempc)? temp:c;

printf(” A,B,C中最大數是%d,”,max);

}

5.5 main()

{int x,y;

printf(“輸入x:”);

scanf(“%d”,x);

if(x1)

{y=x;

printf(“X-%d,Y=X=%d \n”,x,y);

}

else if(x10)

{y=2*x-1;

printf(” X=%d, Y=2*X-1=%d\n”,x,y);

}

else

{y=3*x-11;

printf(“X=5d, Y=3*x-11=%d \n”,x,y);

}

}

5.7給一個不多於5位的正整數,要求:1.求它是幾位數2.分別列印出每一位數字3.按逆序列印出各位數字.例如原數為321,應輸出123.

main()

{

long int num;

int indiv,ten,hundred,housand,tenthousand,place;

printf(“請輸入一個整數(0-99999):”);

scanf(“%ld”,num);

if(num9999)

place=5;

else if(num999)

place=4;

else if(num99)

place=3;

else if(num9)

place=2;

else place=1;

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

printf(“每位數字為:”);

ten_thousand=num/10000;

thousand=(num-tenthousand*10000)/1000;

hundred=(num-tenthousand*10000-thousand*1000)/100;

ten=(num-tenthousand*10000-thousand*1000-hundred*100)/10;

indiv=num-tenthousand*10000-thousand*1000-hundred*100-ten*10;

switch(place)

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

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

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

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\n”,hundred,ten,indiv);

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

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

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

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

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

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

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

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

}

}

5.8 1.if語句

main()

{long i;

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

/*初始化變數*/

bon1=100000*0.1;

bon2=100000*0.075+bon1;

bon4=200000*0.05+bon2;

bon6=200000*0.03+bon4;

bon10=400000*0.015+bon6;

printf(“請輸入利潤”);

scanf(“%ld”,i);

/*計算*/

if(i=le5)

bonus=i*0.1;

else if(i2e5)

bonus=bon1+(1-100000)*0.075;

else if(i=4e5)

bonus=bon2+(i-200000)*0.05;

else if(i=6e5)

bonus=bon4+(i-400000)*0.03;

else if(i=le6)

bonus=bon6+(i-600000)*0.015;

else

bonus=bon10+(i-1000000)*0.01;

printf(“獎金是 %10.2f”,bonus);

}

用switch語句編程序

main()

{long i;

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

int branch;

/*初始化變數*/

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(“請輸入利潤:”);

scanf(“%ld”,i);

branch=i/100000;

if(branch10)

branch=10;

/*計算*/

switch(branch)

{case 0:bonus=i*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 輸入四個整數,按大小順序輸出.

main()

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

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

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

printf(“\n\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=b;b=c;c=t;}

if(bd)

{t=b;b=d;d=t;}

if(cd)

{t=c;c=d;d=t;}

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

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

}

5.10塔

main()

{

int h=10;

float x,y,x0=2,y0=2,d1,d2,d3,d4;

printf(“請輸入一個點(x,y):”);

scanf(“%f,%f”,x,y);

d1=(x-x0)*(x-x0)+(y-y0)(y-y0);

d2=(x-x0)*(x-x0)+(y+y0)(y+y0);

d3=(x+x0)*(x+x0)+(y-y0)*(y-y0);

d4=(x+x0)*(x+x0)+(y+y0)*(y+y0);

if(d11 d21 d31 d41)

h=0;

printf(“該點高度為%d”,h);

}

第六章 循環語句

6.1輸入兩個正數,求最大公約數最小公倍數.

main()

{

int a,b,num1,num2,temp;

printf(“請輸入兩個正整數:\n”);

scanf(“%d,%d”,num1,num2);

if(num1num2)

{

temp=num1;

num1=num2;

num2=temp;

}

a=num1,b=num2;

while(b!=0)

{

temp=a%b;

a=b;

b=temp;

}

printf(“它們的最大公約數為:%d\n”,a);

printf(“它們的最小公倍數為:%d\n”,num1*num2/2);

}

6.2輸入一行字元,分別統計出其中英文字母,空格,數字和其它字元的個數.

解:

#include stdio.h

main()

{

char c;

int letters=0,space=0,degit=0,other=0;

printf(“請輸入一行字元:\n”);

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

other++;

}

printf(“其中:字母數=%d 空格數=%d 數字數=%d 其它字元數=%d\n”,letters,space,

digit,other);

}

6.3求s(n)=a+aa+aaa+…+aa…a之值,其中工是一個數字.

解:

main()

{

int a,n,count=1,sn=0,tn=0;

printf(“請輸入a和n的值:\n”);

scanf(“%d,%d”,a,n);

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

while(count=n)

{

tn=tn+a;

sn=sn+tn;

a=a*10;

++count;

}

printf(“a+aa+aaa+…=%d\n”,sn);

}

6.4 求1+2!+3!+4!+…+20!.

main()

{

float n,s=0,t=1;

for(n=1;n=20;n++)

{

t=t*n;

s=s+t;

}

printf(“1!+2!+…+20!=%e\n”,s);

}

6.5 main()

{

int N1=100,N2=50,N3=10;

float k;

float s1=0,s2=0,s3=0;

for(k=1;k=N1;k++)/*計算1到100的和*/

{

s1=s1+k;

}

for(k=1;k=N2;k++)/*計算1到50各數平方和*/

{

s2=s2+k*k;

}

for(k=1;k=N3;k++)

{

s3=s3+1/k;

}

printf(“總和=%8.2f\n”,s1+s2+s3);

}

6.6水仙開花

main()

{

int i,j,k,n;

printf(” ‘水仙花’數是:”);

for(n=100;n1000;n++)

{

i=n/100;

j=n/10-i*10;

k=n%10;

if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)

{

printf(“%d”,n);

}

}

printf(“\n”);

}

6.7完數

main()

#include M 1000/*定義尋找範圍*/

main()

{

int k0,k1,k2,k3,k4,k5,k6,k7,k8,k9;

int i,j,n,s;

for(j=2;j=M;j++)

{

n=0;

s=j;

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

{

if((j%i)==0)

{

if((j%i)==0)

{

n++;

s=s-i;

switch(n)/*將每個因子賦給k0,k1…k9*/

{

case 1:

k0=i;

break;

case 2:

k1=i;

break;

case 3:

k2=i;

break;

case 4:

k3=i;

break;

case 5:

k4=i;

break;

case 6:

k5=i;

break;

case 7:

k6=i;

break;

case 8:

k7=i;

break;

case 9:

k8=i;

break;

case 10:

k9=i;

break;

}

}

}

if(s==0)

{

printf(“%d是一個’完數’,它的因子是”,j);

if(n1)

printf(“%d,%d”,k0,k1);

if(n2)

printf(“,%d”,k2);

if(n3)

printf(“,%d”,k3);

if(n4)

printf(“,%d”,k4);

if(n5)

printf(“,%d”,k5);

if(n6)

printf(“,%d”,k6);

if(n7)

printf(“,%d”,k7);

if(n8)

printf(“,%d”,k8);

if(n9)

printf(“,%d”,k9);

printf(“\n”);

}

}

方法二:此題用數組方法更為簡單.

main()

{

static int k[10];

int i,j,n,s;

for(j=2;j=1000;j++)

{

n=-1;

s=j;

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

{

if((j%i)==0)

{

n++;

s=s-i;

k[n]=i;/*將每個因子賦給k0,k1…k9*/

}

}

if(s==0)

{

printf(“%d是一個完數,它的因子是:”,j);

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

printf(“%d,”,k[i]);

printf(“%d\n”,k[n]);

}

}

5.8 有一個分數序列:2/1,3/2,5/3,8/5……求出這個數列的前20項之和.

解: main()

{

int n,t,number=20;

float a=2,b=1,s=0;

for(n=1;n=number;n++)

{

s=s+a/b;

t=a,a=a+b,b=t;

}

printf(“總和=%9.6f\n”,s);

}

6.9球反彈問題

main()

{

float sn=100.0,hn=sn/2;

int n;

for(n=2;n=10;n++)

{

sn=sn+2*hn;/*第n次落地時共經過的米數*/

hn=hn/2;/*第n次反跳高度*/

}

printf(“第10次落地時共經過%f米 \n”,sn);

printf(“第10次反彈%f米.\n”,hn);

}

6.10猴子吃桃

main()

{

int day,x1,x2;

day=9;

x2=1;

while(day0)

{

x1=(x2+1)*2;

x2=x1;

day–;

}

printf(“桃子總數=%d\n”,x1);

}

6.14列印圖案

main()

{

int i,j,k;

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

{

for(j=0;j=2-1;j++)

printf(” “);

for(k=0;k=2*i;k++)

printf(“*”);

printf(“\n”);

}

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

{

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

printf(” “);

for(k=0;k=4-2*i;k++)

printf(“*”);

printf(“\n”);

}

6.15乒乓比賽

main()

{

char i,j,k;/*i是a是對手;j是b是對手;k是c的對手*/

for(i=’x’;i=’z’;i++)

for(j=’x’;j=’z’;j++)

{

if(i!=j)

for(k=’x’;k=’z’;k++)

{

if(i!=kj!=k)

{if(i!=’x’ k!=’x’ k! =’z’)

printf(“順序為:\na-%c\tb–%c\tc–%c\n”,i,j,k);

}

}

}

}

7.1用篩選法求100之內的素數.

/*用篩選法求100之內的素數*/

#includemath.h

#define N 101

main()

{

int i,j,line,a[N];

for(i=2;iN;i++) a[i]=i;

for(i=2;isqrl(N);i++)

for(j=i+1;jN;j++)

{

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

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

a[j]=0;

printf(“\n”);

for(i=2,line=0;iN;i++)

{

if(a[i]!=0)

{

printf(“%5d”,a[i]);

line++;

if(line==10)

{

printf(“\n”);

line=0;}

}

}

7.2用選擇法對10個數排序.

/*選擇法排序.*/

#define N 10

main()

{ int i,j,min,temp,a[N];

/*輸入數據*/

printf(“請輸入十個數:\n”);

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

{ printf(“a[%d]=”,i);

scanf(“%d”,a[i]);

}

printf(“\n”);

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

printf(“%5d”,a[i]);

printf(“\n”);

/*排序*/

for (i=0;iN-1;i++)

{ min=i;

for(j=i+1;jN;j++)

if(a[min]a[j]) min=j;

temp=a[i];

a[i]=a[min];

a[min]=temp;

}

/*輸出*/

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

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

printf(“%5d”,a[i]);

}

7.3對角線和:

/*計算矩陣對角線元素之和*/

main()

{

float a[3][3],sum=0;

int i,j;

printf(“請輸入矩陣元素:\n”);

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

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

scanf(“%f”,a[i][j]);

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

sum=sum+a[i][i];

printf(“對角元素之和=6.2f”,sum);

}

7.4插入數據到數組

/*插入數據到數組*/

main()

{int a[11]={1,4,6,9,13,16,19,28,40,100};

int temp1,temp2,number,end,i,j;

printf(“初始數組如下:”);

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

printf(“%5d”,a[i]);

printf(“\n”);

printf(“輸入插入數據:”);

scanf(“%d”,number);

end=a[9];

if(numberend)

a[10]=number;

else

{for(i=0;i10;i++)

{ if(a[i]number)

{temp1=a[i];

a[i]=number;

for(j=i+1;j11;j++)

{temp2=a[j];

a[j]=temp1;

temp1=temp2;

}

break;

}

}

}

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

printf(“a%6d”,a[i]);

}

7.5將一個數組逆序存放。

/*數組逆序存放*/

#define N 5

main()

{ int a[N]={8,6,5,4,1},i,temp;

printf(“\n 初始數組:\n”);

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

printf(“%4d”,a[i]);

for(i=0;iN/2;i++)

{ temp=a[i];

a[i]=a[N-i-1];

a[N-i-1]=temp;

}

printf(“\n 交換後的數組:\n”);

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

printf(“%4d”,a[i]);

}

7.6楊輝三角

/*列印楊輝三角形*/

#define N 11

main()

{ int i,j,a[N][N];

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

{a[i][i]=1;

a[i][1]=1;

}

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

for(j=2;j=i-1;j++)

a[i][j]=a[i01][j-1]+a[i-1][j];

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

{ for(j=1;j=i;j++)

printf(“%6d”,a[i][j];

printf(“\n”);

}

printf(“\n”);

}

7.8鞍點

/*查找鞍點*/

#define N 10

#define M 10

main()

{ int i,j,k,m,n,flag1,flag2,a[N][M],max,maxi,maxj;

printf(“\n輸入行數n:”);

scanf(“%d”,n);

printf(“\n輸入列數m:”);

scanf(“%d”,m);

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

{ printf(“第%d行?\n”,i);

for(j=0;jm,j++);

scanf(“%d”,a[i][j];

}

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

{ for(j=0;jm;j++)

printf(“%5d”,a[i][j]);

pritf(“\n”);

}

flag2=0;

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

{ max=a[i][0];

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

if(a[i][j]max)

{ max=a[i][j];

maxj=j;

}

for (k=0,flag1=1;kn flag1;k++)

if(maxa[k][max])

flag1=0;

if(flag1)

{ printf(“\n第%d行,第%d列的%d是鞍點\n”,i,maxj,max);

flag2=1;

}

}

if(!flag2)

printf(“\n 矩陣中無鞍點! \n”);

}

7.9變數說明:top,bott:查找區間兩端點的下標;loca:查找成功與否的開關變數.

/*折半查找*/

#includestdio.h

#define N 15

main()

{ int i,j,number,top,bott,min,loca,a[N],flag;

char c;

printf(“輸入15個數(a[i][i-1])\n);

scanf(“%d”,a[0]);

i=1;

while(iN)

{ scanf(“%d”,a[i]);

if(a[i]=a[i-1])

i++;

esle

{printf(“請重輸入a[i]”);

printf(“必須大於%d\n”,a[i-1]);

}

}

printf(“\n”);

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

printf(“%4d”,a[i]);

printf(“\n”);

flag=1;

while(flag)

{

printf(“請輸入查找數據:”);

scanf(“%d”,number);

loca=0;

top=0;

bott=N-1;

if((numbera[0])||(numbera[N-1]))

loca=-1;

while((loca==0)(top=bott))

{ min=(bott+top)/2;

if(number==a[min])

{ loca=min;

printf(“%d位於表中第%d個數\n”,number,loca+1);

}

else if(numbera[min])

bott=min-1;

else

top=min+1;

}

if(loca==0||loca==-1)

printf(“%d不在表中\n”,number);

printf(“是否繼續查找?Y/N!\n”);

c=getchar();

if(c==’N’||c==’n’)

flag=0;

}

}

7.10/*統計字元數*/

main()

{ int i,j,uppn,lown,dign,span,othn;

char text[3][80];

uppn=lown=dign=span=othn=0;

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

{ printf(“\n請輸入第%d行:\n”,i);

gets(text[i]);

for(j=0;j80 text[i][j]!=’\0′;j++)

{if(text[i][j]=’A’ text[i][j]=’Z’)

uppn+=1;

else if(text[i][j]=’a’ text[i][j]=’z’)

lown+=1;

else if(text[i][j]=’1′ text[i][j]=’9′)

dign+=1;

else if(text[i][j]=’ ‘)

span+=1;

else

othn+=1;

}

}

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

printf(“%s=n”,text[i]);

printf(“大寫字母數:%d\n”,uppn);

printf(“小寫字母數:%d\n”,lown);

printf(“數字個數:%d\n”,dign);

printf(“空格個數:%d\n”,span);

printf(“其它字元:%d\n”,othn);

}

7.11/*列印圖案*/

main()

{static char a[5]={‘*’,’*’,’*’,’*’,’*’};

int i,j,k;

char space=’ ‘;

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

{printf(“\n”);

for(j=1;j=3*i;j++)

printf(“%lc”,space);

for(k=0;k=5;k++)

printf(“%3c”,a[k];

}

}

7.12/*譯電文*/

#includestdio.h

main()

{int i,n;

char ch[80],tran[80];

printf(“請輸入字元:”);

gets(ch);

printf(“\n密碼是%c”,ch);

i=0;

while(ch[i]!=’\0′)

{if((ch[i]=’A’)(ch[i]=’Z’))

tran[i]=26+64-ch[i]+1+64;

else if((ch[i]=’a’)(ch[i]=’z’))

tran[i]=26+96-ch[i]+1+96;

else

tran[i]=ch[i];

i++;

}

n=i;

printf(“\n原文是:”);

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

putchar(tran[i]);

}

7.13/*連接兩個字元串(不用’stract’)*/

main()

{

char s1[80],s2[40];

int i=0,j=0;

printf(“\n請輸入字元串1:”);

scanf(“%s”,s1);

printf(“\n請輸入字元串2:”);

scanf(“%s”,s2);

while(s1[i]!=’\0′)

i++;

while(s2[j]!=’\0′)

s1[i++]=s2[j++];

s1[i]=’\0′;

printf(“\n連接後字元串為:%s”,s1);

}

7.14/*字元串比較*/

#includestdio.h

main()

{int i,resu;

char s1[100],s2[100];

printf(“請輸入字元串1:\n”);

gets(s1);

printf(“\n 請輸入字元串2:\n”);

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(” %s與%s比較結果是%d”,s1,s2,resu);

}

7.15/*字元串複製*/

#includestdio.h

main()

{

char from[80],to[80];

int i;

printf(“請輸入字元串”);

scanf(“%s”,from);

for(i=0;i=strlen(from);i++)

to[i]=from[i];

printf(“複製字元串為:%s\n”,to);

}

第八章 函數

8.1(最小公倍數=u*v/最大公約數.)

hcf(u,v)

int u,v;

(int a,b,t,r;

if(uv)

{t=u;u=v;v=t;}

a=u;b=v;

while((r=b%a)!=0)

{b=a;a=r;}

return(a);

}

lcd(u,v,h)

int u,v,h;

{int u,v,h,l;

scanf(“%d,%d”,u,v);

h=hcf(u,v);

printf(“H.C.F=%d\n”,h);

l=lcd(u,v,h);

printf(“L.C.d=%d\n”,l);

}

{return(u*v/h);}

main()

{int u,v,h,l;

scanf(“%d,%d”,u,v);

h=hcf(u,v);

printf(“H.C.F=%d\n”,h);

l=lcd(u,v,h);

printf(“L.C.D=%d\n”,l);

}

8.2求方程根

#includemath.h

float x1,x2,disc,p,q;

greater_than_zero(a,b)

float a,b;

{

x1=(-b+sqrt(disc))/(2*a);

x2=(-b-sqrt(disc))/(2*a);

}

equal_to_zero(a,b)

float a,b;

{x1=x2=(-b)/(2*a);}

smaller_than_zero(a,b)

float a,b;

{p=-b/(2*a);

最多就到8.2.。。。。。。

譚浩強C語言課本第八章的一道課後題,程序有錯誤,編譯不能通過,請高人指教,謝謝。

#include stdio.h

#includestring.h

#define N 10

void input(int num[],char name[N][8])

{

int i;

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

{

printf(“\nInput NO.:”);

scanf(“%d”,num[i]);

printf(“Input name:”);

getchar();

gets(name[i]);

}

}

void sort(int num[],char name[N][8])

{

int i,j,min,temp1;

char temp2[8]={0};

for(i=0;iN-1;i++)

{

min=i;

for(j=i+1;j=N;j++)

if(num[min]num[i])

min=j;

temp1=num[i];

strcpy(temp2,name[i]);

num[i]=num[min];

strcpy(name[i],name[min]);

num[min]=temp1;

strcpy(name[min],temp2);

}

printf(“\nresult:\n”);

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

printf(“\n%5d%10s”,num[i],name[i]);

}

void search(int sign,int num[],char name[N][8])

{

int top,bott,mid,loca;

loca=0;

top=0;

bott=N-1;

if((signnum[0])||(signnum[N-1]))

loca=-1;

while((sign==1)(top=bott))

{

mid=(bott+top)/2;

if(sign==num[mid])

{

loca=mid;

printf(“NO. %d, his name is %s。\n”,sign,name[loca]);

sign=-1;

}

else if(signnum[mid])

bott=mid-1;

else

top=mid+1;

}

if(sign==1loca==-1)

printf(“Can not fine %d.\n”,sign);

}

void main()

{

int num[N],number,flag=1,c,n;

char name[N][8];

input(num,name);

sort(num,name);

while(flag==1)

{

printf(“\nInput number to look for:”);

scanf(“%d”,number);

search(number,num,name);

printf(“Continue or not(Y/N)?”);

getchar();

c=getchar();

if(c==’N’||c==’n’)

flag=0;

}

}

少包含頭文件了,包含進去就差不多了,另外處理邏輯上有點問題,在仔細跟蹤下代碼看看邏輯那裡有問題了 ,輸入要查詢的號碼,沒有輸出結果。

原創文章,作者:HKQW,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/144086.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
HKQW的頭像HKQW
上一篇 2024-10-24 15:27
下一篇 2024-10-24 15:27

相關推薦

  • OpenJudge答案1.6的C語言實現

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

    編程 2025-04-29
  • 學堂雲Python語言程序設計答案

    學堂雲Python語言程序設計是一門重要的計算機專業課程。它涵蓋了Python語言及其應用,包括基礎語法、函數、文件處理、數據結構、圖形界面和網路編程等內容。在學習中,我們經常會需…

    編程 2025-04-29
  • 南京郵電大學Python慕課答案

    本文將詳細闡述南京郵電大學Python慕課答案,為大家提供學習Python課程的參考。 一、應用範圍 Python是一種高級通用編程語言,應用範圍廣泛,包括Web開發、數據分析與科…

    編程 2025-04-28
  • 大學化學科學出版社教材答案

    本文將從以下幾個方面對大學化學科學出版社教材答案進行詳細闡述,幫助您更好地應對學習中的問題: 一、獲取教材答案的渠道 學習過程中,有時候會遇到難以解答的問題,這時候就需要查看教材答…

    編程 2025-04-28
  • Python初探答案第七關——解題指南

    Python初探答案第七關是一道典型的Python編程題目,涉及字元串的判斷和操作。下面我們將從多個方面詳細闡述這道題目的解題方法。 一、題目分析 首先,我們需要仔細研究題目要求以…

    編程 2025-04-28
  • 小甲魚Python課後作業及答案百度雲

    小甲魚課程是一門 Python 開發的視頻課程,自 2008 年以來一直廣受歡迎。本文主要介紹小甲魚 Python 課後作業及答案所在的百度雲地址。以下是詳細內容: 一、百度雲地址…

    編程 2025-04-27
  • Python第二版課後答案用法介紹

    本篇文章主要從以下幾個方面對Python第二版課後答案做詳細的闡述: 一、Python第二版的重要性 Python是一種高級編程語言,被廣泛應用於科學計算、Web開發、人工智慧等領…

    編程 2025-04-27
  • 北京大學python語言基礎與應用超星答案解析

    北京大學python語言基礎與應用是一門涵蓋了python語言基礎知識、數據處理、web開發等方面的課程。其中超星在線學習平台為學生提供了練習和試卷答題功能。本文將從試卷中常見的知…

    編程 2025-04-27
  • Python智能測評系統答案解析

    Python智能測評系統是一款用於自動批改Python代碼的工具,它通過較為底層的方法對代碼進行分析,在編譯和執行代碼時自動判斷正確性,從而評估代碼的得分情況。下面將從多個方面對P…

    編程 2025-04-27
  • Python開發基礎戴歆作業答案解析

    本文將從基礎語法、函數方法、常用模塊三個方面對Python開發基礎戴歆作業答案進行詳細的解析與闡述。 一、基礎語法 Python的基礎語法相對簡單易懂,但也有一些需要特別注意的地方…

    編程 2025-04-27

發表回復

登錄後才能評論