C語言實驗指導(dǎo)練習(xí)題答案_第1頁
C語言實驗指導(dǎo)練習(xí)題答案_第2頁
C語言實驗指導(dǎo)練習(xí)題答案_第3頁
C語言實驗指導(dǎo)練習(xí)題答案_第4頁
C語言實驗指導(dǎo)練習(xí)題答案_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

C語言實驗指導(dǎo)練習(xí)題答案

第1章

VisualC++6.0集成開發(fā)環(huán)境

參考答案

一、選擇題答案

1.C2.D3.C4.C

6.C7.D8.C9.C

二、填空題答案

1.答案:系統(tǒng)軟件、應(yīng)用軟件

2.答案:32、34

3.答案:模塊化、結(jié)構(gòu)化

4.答案:物理、硬件

5.答案:高級、低級

6.答案:PASCAL

7.答案:main函數(shù)

8.答案:函數(shù)

9.答案:函數(shù)的首部、函數(shù)體

10.答案:聲明部分、執(zhí)行部分

11.答案:函數(shù)

12.答案:main函數(shù)

13.答案:分號

14.答案:/*……*/

15.答案:指令、指令

16.答案:源程序

17.答案:編譯程序

18.答案:編輯、編譯、連接、執(zhí)行5.A10.D

2

數(shù)據(jù)類型、運算符與表達式

參考答案

一、選擇題

1.B10.B19.A2.B11.D20.C

3.A12.B4.B13.A5.D14.D6.A15.C7.D16.D8.A17.C9.A18.D

二、填空題

1.答案:162.答案:36.答案:287.答案:3210.答案:0011010100110111

3.答案:08.答案:304.答案:85.答案:4729.答案:1.000000

3

順序程序設(shè)計

參考答案

一、選擇題答案

1.B2.D3.A4.C5.C6.B7.D8.D9.D

二、填空題答案

1.答案:【1】%c【2】%d【3】f【4】lf2.答案:putchargetchar。3.答案:【1】順序結(jié)構(gòu)【2】選擇結(jié)構(gòu)【3】循環(huán)結(jié)構(gòu)(三者的順序可以互換)4.答案:dec:1,oct:1,hex:1,unsigned:1

dec:1,oct:177777,hex:ffff,unsigned:655355.答案:B,71

6.答案:n1=%d\nn2=%d\n7.答案:【1】inta,b,c;【2】&a,&b,&c【3】temp=a【4】c=temp8.答案:12

9.答案:3.141593,3.1416,3.142,3.142

3.14159e+00,3.142e+00,3.14e+00,3.14e+00

三、編程練習(xí)題答案

1.#include<stdio.h>

main(){

charc,c1;

printf(“請輸入小寫字母:”);scanf(“%c”,&c);c1=c+32;printf(“小寫字母:%c\n”,c);printf(“大寫字母:%c\n”,c1);}

//輸入小寫字母//轉(zhuǎn)換成大寫字母//輸出小寫字母//輸出大寫字母

2.#include<stdio.h>

main(){

floatr,h;doublev,p;p=3.14;

scanf("%f,%f",&r,&h);v=p*r*r*h/3;

printf("r=%6.2f\n",r);printf("v=%6.2lf\n",v);}

3.#include<stdio.h>

main(){

intx,ge,shi,bai;

printf(“輸入一個三位數(shù):\n”);scanf(“%d”,&x);ge=x%10;shi=x/10%10;bai=x/100;printf((“%d\n”,bai+shi*10+ge*100);}

//輸入一個三位整數(shù)//求個位數(shù)字//求十位數(shù)字//求百位數(shù)字//逆序輸出

4.#include<stdio.h>

main(){

inta,b,c;floataver;

printf(“輸入三個整數(shù)a,b,c”);scanf(“%d,%d,%d”,&a,&b,&c);aver=(a+b+c)/3.0;printf(“aver=”;aver);}

//輸入三個整數(shù)//求平均值//輸出平均值

思考:為什么aver=(a+b+c)/3.0;后面是3.0而不是3?

5.#include<stdio.h>

main(){

floatc,f;

printf((“請輸入攝氏溫度c”);

scanf(“%d”,&x);f=5.0/9*(c+32);printf(“華氏溫度是%.2f\n”,f);}

//輸入一個攝氏溫度//求出對應(yīng)的華氏溫度//輸出華氏溫度

第4

10.D章選擇結(jié)構(gòu)程序設(shè)計參考答案一、選擇題答案1.D

11.C2.D12.A3.B13.B4.A14.D5.B6.D15.B7.B8.A9.D

二、填空題答案

1.答案:2

2.答案:x=1

3.答案:1

4.答案:3

5.答案:6,25

5,13y=1z=0

0,0

6.答案:2,1

7.答案:helloworld!

8.答案:hello

beijing

9.答案:【1】a==0

10.答案:【1】month

三、編程練習(xí)題答案【2】b==0【3】fabs(disc)<1e-6【4】disc>0【2】(year%400==0)||(year%4==0&&year%100!=0)

1.#include<stdio.h>

voidmain()

{

intmonth;

printf("inputintegernumber:");

scanf("%d",&month);

switch(month)

{

case1:printf("January\n");break;

case2:printf("February\n");break;

case3:printf("March\n");break;

case4:printf("April\n");break;

case5:printf("May\n");break;

case6:printf("June\n");break;

case7:printf("Jauly\n");break;

case8:printf("August\n");break;

case9:printf("September\n");break;

case10:printf("October\n");break;case11:printf("November\n");break;

case12:printf("December\n");break;

default:printf("Illegalmonth\n");break;

}

}

2.#include<stdio.h>

voidmain()

{intx,gz;

printf("請輸入職稱:1-教授2-副教授3-講師\n");

scanf("%d",&x);

printf("請輸入工資:");

scanf("%d",&gz);

switch(x)

{

case1:{if(gz>2000)gz=gz+200;elsegz=gz+180;break;}case2:{if(gz>1500)gz=gz+150;elsegz=gz+120;break;}case3:{if(gz>1200)gz=gz+100;elsegz=gz+80;break;}default:printf("inputillegal!");

}

printf("現(xiàn)在的工資是%d\n",gz);

}

3【實驗?zāi)康摹空莆誷witch語句用法

【程序代碼】

#include<stdio.h>

voidmain()

{

intc;

printf("請輸入今天星期幾:");

scanf("%d",&c);

switch(c)

{

case1:printf("星期1的食譜是雞肉\n");break;

case2:printf("星期2的食譜是魚\n");break;

case3:printf("星期3的食譜是青菜\n");break;

case4:printf("星期4的食譜是肉\n");break;

case5:printf("星期5的食譜是雞蛋\n");break;

case6:printf("星期6的食譜是豆腐\n");break;

case7:printf("星期7的食譜是海鮮\n");break;

default:printf("Illegal!\n");/*輸入值不在1到7范圍,輸入不合法*/}

}

第5章

循環(huán)結(jié)構(gòu)程序設(shè)計

參考答案

一、選擇題答案

1.A

11.C2.B12.D3.A13.B4.B14.C5.C6.C7.C15.D16.C17.B8.B18.D9.D19.D10.C20.B

二、填空題答案

1.答案:36

2.答案:x+2*y==90

3.答案:********#

4.答案:【1】i<=9

5.答案:2581114

6.答案:【1】k!=0

7.答案:【1】j=1

8.答案:31–1

9.答案:1.0/(i*i)

10.答案:【1】d=1.0

11.答案:【1】x>=0

12.答案:【1】i<=20

13.答案:f2=f1+f2

14.答案:【1】9

15.答案:【1】100

三、編程練習(xí)題答案【2】i%3!=0【3】continue【2】k/10【2】k<=6【2】k++【2】x<min【2】i%3==0【3】k<=n【2】i【3】“%d”,I【2】=k【3】i%j【4】printf(“\n”);

1.#include<stdio.h>

intmain()

{longintr,w=0;

intn,m;

for(n=1;n<=10;n++)

{r=1;

for(m=1;m<=n;m++)

r=r*m;

w=w+r;

}

printf("%ld",w);

}//求階乘//各個階乘相加

2.#include<stdio.h>

intmain()

{intmax,min;inta[10];inti;

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

scanf("%d",&a[i]);//輸入十個數(shù)max=min=a[0];

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

{if(max<a[i])//求最大值max=a[i];

if(min>a[i])//求最小值min=a[i];

}

printf("max=%d,min=%d",max,min);

}

3.#include<stdio.h>

intmain()

{inti,j;

for(i=1;i<=9;i++)

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

printf("%3d*%d=%d",j,i,j*i);

printf("\n");

}//九九乘法表中共有九行//每行中有i項//輸出每一項//打完一行進行換行

}

4.#include<stdio.h>

intmain()

{inti,j,k;

for(i=1;i<=6;i++)

{for(j=1;j<=20-3*i;j++)

printf("");

for(k=1;k<=i;k++)

printf("%3d",k);

for(k=i-1;k>0;k--)

printf("%3d",k);

printf("\n");

}

}//用空格進行填充//打印數(shù),并限制寬度

5.#include<stdio.h>

intmain()

{intm,i;floatx;

for(m=1;;m++)

{x=m;

for(i=1;i<=9;i++)

x=x/2-1;

if(x==1)

break;

}

printf("%d",m);

}//迭代式//找到后退出循環(huán)

6.#include"stdio.h"

#include"time.h"

intmain()

{

intx,m;

srand(time(0));//計算機每次產(chǎn)生的隨機數(shù)不同

while(1)//該循環(huán)用來產(chǎn)生1—100之間的隨機整數(shù)

{

x=rand();

if(x>=1&&x<=100)break;

}

while(1)

{

printf("請輸入猜測數(shù)字:");

scanf("%d",&m);

if(m==x)

{

printf("恭喜你,猜數(shù)成功!");break;

}

elseif(m>x)printf("猜高了,再猜!");

elseprintf("猜低了,再猜!");

}

return0;

}

思考1:編程先由計算機“想”一個1~100之間的數(shù)請人猜,如果人猜對了,則結(jié)束游戲,并在屏幕上輸出人猜了多少次才猜對此數(shù),以此來反映猜數(shù)者“猜”的水平;否則計算機給出提示,告訴人所猜的數(shù)是太大還是太小,最多可以猜10次,如果猜了10次仍未猜中的話,結(jié)束游戲。

思考2:編程先由計算機“想”一個1~100之間的數(shù)請人猜,如果人猜對了,在屏幕

上輸出人猜了多少次才猜對此數(shù),以此來反映猜數(shù)者“猜”的水平,則結(jié)束游戲;否則計算機給出提示,告訴人所猜的數(shù)是太大還是太小,最多可以猜10次,如果猜了10次仍未猜中的話,則停止本次猜數(shù),然后繼續(xù)猜下一個數(shù)。每次運行程序可以反復(fù)猜多個數(shù),直到操作者想停止時才結(jié)束。

7.#include<stdio.h>

intmain()

{inta,m;//m代表階梯數(shù)

for(m=1;;m++)//m從1開始,逐漸遞增

{a=m%2;

if(a==1)

{a=m%3;

if(a==2)

{a=m%5;

if(a==4)

{a=m%6;

if(a==5)

{a=m%7;

if(a==0)//m是否能被7整除

{printf("共有階梯%d",m);break;

}

}

}

}

}

}

return0;

}

8.#include<stdio.h>

intmain()

{intm,a,b,c;//變量定義

printf(“100-999之間的所有的水仙花數(shù)是:”);

for(m=100;m<=999;m++)//判斷100~999之間的所有的數(shù)

{

a=m%10;//計算個位數(shù)字

b=m/10%10;//計算十位數(shù)字

c=m/100;//計算百位數(shù)字

if(m==a*a*a+b*b*b+c*c*c)printf(“%5d”,m);

//判斷是否是水仙花數(shù),如果是就輸出

}

}

第6章

數(shù)組

參考答案

一、選擇題答案

1.B2.D3.D4.B5.A6.C7.B8.D9.C10.D

11.A12.D13.C14.C15.A

二、填空題答案

1.答案:9

2.答案:54

3.答案:0

4.答案:abc0efABC

5.答案:0,5

6.答案:13715

7.答案:6個字節(jié)

8.答案:t[2]

9.答案:357

10.答案:20

三、編程練習(xí)題答案

1.程序如下:

#include<stdio.h>

#defineMAX20

voidmain()

{inta[MAX],i,j,n;

printf("putinthe20numbers:\n");

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

scanf("%d",&a[i]);

n=MAX-1;i=MAX-1;

while(i>=0)

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

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

a[j-1]=a[j];

n--;

}

i--;

}

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

{if(i%5==0)printf("\n");

printf("%3d",a[i]);

}

printf("\n");

}

運行情況:

putinthe20numbers:

1223344567891010111213141516↙12345678910111213141516

2.程序如下:

#include<stdio.h>

voidmain()

{

intt[3][4]={{2,3,4,5},{6,7,8,9},{1,2,3,6}};intm[3][4]={{1,3,0,2},{2,0,0,11},{0,2,7.0}};inta[3][4],row,col;

for(row=0;row<=2;row++)

{

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

a[row][col]=t[row][col]+m[row][col];}

for(row=0;row<=2;row++)

{

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

printf("%d",a[row][col]);

printf("\n");

}

}

運行情況:

3647

87820

14106

3.程序如下:

#include<stdio.h>

#include<math.h>

voidmain()

{

doublex[10]={15.0,19.0,16.0,15.0,18.0,12.0,15.0,11.0,10.0,16.0};inti;

doublex1=0.0;

doublesum=0.0;

doublex2=0.0;

doubleX;

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

sum=sum+x[i];

x1=sum/10;

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

x2=x2+(x[i]-x1)*(x[i]-x1);

X=sqrt(x2/10);

printf("X=%f\n",X);

}

運行情況:

X=2.758623

4.程序如下:

#include<stdio.h>

#include<string.h>

voidmain()

{

chara[10]="abefml";

charb[10]="bdfopxyz";

charc[20];

inta_len,b_len,i,j,k=0;

a_len=strlen(a);

b_len=strlen(b);

i=0;j=0;

while(i<a_len&&j<b_len)

{

if(a[i]<=b[j])

{c[k]=a[i];i++;k++;}

else

{c[k]=b[j];j++;k++;}

}

while(i<a_len)

{

c[k]=a[i];i++;k++;

}

while(j<b_len)

{

c[k]=b[j];j++;k++;}

puts(c);}

運行情況:

abbdeffmlopxyz

5.程序如下:

#include<stdio.h>voidmain(){

inti,j,k,t;inta[10];

printf(”pleaseputin10numbers:\n”);for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<9;i++){

k=i;

for(j=i+1;j<10;j++)if(a[j]<a[k])k=j;if(k!=i){

t=a[i];a[i]=a[k];a[k]=t;}}

printf(”theselectsortresult:\n”);for(i=0;i<10;i++)

printf("%d",a[i]);}

運行情況:

pleaseputin10numbers:

12112339354690757086↙theselectsortresult:

11122335394670758690

7

函數(shù)

參考答案

一、選擇題

1.A2.C11.B12.C

二、填空題

3.C13.C4.C14.C5.A6.A15.B16.D7.B17.A8.C18.9.A19.C10.A20.B

1.答案:數(shù)組的首地址2.答案:主函數(shù)

3.答案:hlo

4.答案:246

5.答案:17

6.答案:15

7.答案:7

8.答案:70,30

9.答案:88

10.答案:13

三、編程題

1.程序如下:

#include<stdio.h>

floatfac(intn)

{

floatf;

if(n==0||n==1)

f=1;

else

f=fac(n-1)*n;/*遞歸調(diào)用函數(shù)fac()*/return(f);

}

main()

{

intn;

floaty;

printf("inputanintegernumber:");

scanf("%d",&n);

y=fac(n);

printf("%d!=%.0f\n",n,y);

}

運行情況:

inputanintegernumber:6↙

6!=720

2.程序如下:

#include<stdio.h>

#defineN80

voidfun(chars[],intn)

{

inti,j;

j=0;

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

{

if(s[i]%2!=0)

s[j++]=s[i];

}

s[j]=‘\0’;

}

main()

{

inti=0,strlen=0;

charstr[N];

clrscr();

printf("\nInputastring:\n");

gets(str);

while(str[i]!=‘\0’)/*求輸入字符串的長度*/

{

strlen++;

i++;

}

fun(str,strlen);/*調(diào)用函數(shù),刪除ASCII碼為偶數(shù)的字符*/printf("\n*********displaystring*********\n");

puts(str);

}

運行情況:

Inputastring:

Abcdefg

*********displaystring*********

aceg

3.程序如下:

#include<stdio.h>

#defineN8

voidmaopao(inta[])

{

inti,j,temp;

for(j=0;j<=N-2;j++)

{

for(i=0;i<N-j-1;i++)

if(a[i]>a[i+1])

{temp=a[i];a[i]=a[i+1];a[i+1]=temp;}

*/

}

}

main()

{

inta[N]={9,8,3,7,5,2,6,1};

inti,j;

maopao(a);

printf("thesortnumbersresult:\n");

for(i=0;i<=N-1;i++)

printf("%3d",a[i]);

printf("\n");

}

運行情況;

thesortnumbersresult:

12356789

4.程序如下:

#include<stdio.h>

#include<stdlib.h>

#defineN19

intzheban(inta[],intx)

{

intmid,top,bot;

top=0;

bot=N-1;

while(top<=bot)

{

mid=(top+bot)/2;

if(x==a[mid])

{

return(mid+1);/*冒泡排序函數(shù)*//*冒泡排序趟數(shù)*//*互換兩個變量的值,將大數(shù)調(diào)后

}

elseif(x>a[mid])top=mid+1;

elsebot=mid-1;

}

}

main()

{

inta[N]={2,5,6,7,8,13,15,17,19,21,23,

25,26,27,28,35,41,52,63};

intx,y;

printf("putinthenumberis:");

scanf("%d",&x);

y=zheban(a,x);

printf("thexweixuis:%d",y);

}

運行情況;

putinthenumberis:21↙

thenumberxweixuis:10

5.#include<stdio.h>

intfun(ints[][10],intb[],intmm,intnn)

{

intn;

inti,j,k=0;

for(i=0;i<mm;i++)/*將二維數(shù)組s中的數(shù)據(jù)按行的順序依次放到一維數(shù)組b中*/

for(j=0;j<nn;j++)

b[k++]=s[i][j];

n=k;

returnn;/*返回元素個數(shù)*/

}

main()

{

intw[10][10]={{1,3,2,5},{4,7,6,3},{9,2,8,7}},i,j;

inta[100]={0},n;

printf("Thematrix:\n");

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

{for(j=0;j<4;j++)

printf("%3d",w[i][j]);

printf("\n");

}

n=fun(w,a,3,4);

printf("TheAarray:\n");

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

printf("%3d",a[i]);

}

第8章

預(yù)處理命令

參考答案

一、選擇題答案

1.C2.B3.A4.C5.A

二、填空題答案

1.答案:7

2.答案:48

3.答案:7

4.答案:8

5.答案:【1】#definePI3.1415926

三、編程練習(xí)題答案【2】&r【3】PI*r*r*r

1.#include<stdio.h>

#defineMIN(a,b)((a)<(b)?(a):(b))

voidmain()

{

inta,b,c;

printf("Inputthreeintegers:");

scanf("%d,%d,%d",&a,&b,&c);

printf("min=%d\n",MIN(MIN(a,b),c));

}

思考:用函數(shù)來實現(xiàn)將如何編程?函數(shù)和帶參的宏兩者有何區(qū)別?

2.解:“文件包含”是事先將程序中需要用到的信息分別存放在不同的“頭文件”(文件后綴為.h)中,用戶在編寫程序時,利用#include命令將該頭文件的else

printf("Itisnotatriangle!");

}

4.#include<stdio.h>

#defineCONVERSE

main()

{

charstr[50],*p=str;

printf("輸入一個字符串:");

scanf("%s",str);

printf("輸出結(jié)果:");

#ifndefCONVERSE

printf("%s\n",str);

#else

while(*p++!=‘\0’);

p-=2;

while(p>=str)

printf("%c",*p--);

printf("\n");

#endif;

}

運行結(jié)果:

輸入一個字符串:abcdef

輸出結(jié)果:fedcba

第9章

指針

參考答案

一、選擇題:

1.C

11.A

21.B2.D3.A4.C12.D13.D14.C22.A、C23.D5.D6.C7.A15.C16.C17.A24.A25.C8.D18.C9.D19.C10.B20.C

二、填空題:

1.答案:*ss!=‘\0’

2.答案:(2)266

(1)166

3.答案:4

4.答案:【1】’\0’

5.答案:2

6.答案:1001

7.答案:scanf(“%lf”,p);【2】s【3】*p++

8.答案:29.答案:【1】a[0]10.答案:3.1411.答案:312.答案:F,def13.答案:w[7]=2214.答案:#BC#EF#H15.答案:【1】p=s[0]

三、編程題:

【2】a[3]

【2】p=s[i]

1.#include<stdio.h>

voidmain()

{

intupper=0,lower=0,digit=0,space=0,other=0,i=0;char*p,s[20];

printf("Inputstring:");

while((s[i]=getchar())!=‘\n’)i++;/*從緩沖區(qū)逐個讀取字符賦給字符數(shù)組*/p=&s[0];/*指針指向字符串的起始字符*/while(*p!=‘\n’)/*當(dāng)串未結(jié)束時,逐個字符統(tǒng)計*/{if((*p>=‘A’)&&(*p<=‘Z’))++upper;

elseif((*p>=‘a(chǎn)’)&&(*p<=‘z’))++lower;

elseif(*p==‘‘)++space;

elseif((*p>=‘0’)&&(*p<=‘9’))++digit;else

++other;p++;}

printf("uppercase:%dlowercase:%d",upper,lower);

printf("space:%ddigit:%dother:%d\n",space,digit,other);}

2.#include<stdio.h>

#include<string.h>

voidfun(char*s,char*t){

inti,d;

d=strlen(s);for(i=0;i<d;i++)t[i]=s[i];for(i=0;i<d;i++)t[d+i]=s[d-1-i];t[2*d]=‘\0’;}

voidmain(){

chars[40],t[80];

printf("\nPleaseenterstringS:");scanf("%s",s);fun(s,t);printf("\nTheresultis:%s\n",t);}

/*得到s串的長度*/

/*將s串的正序復(fù)制到t中*//*將s串的逆序連接到t后*//*加結(jié)束標(biāo)記*/

/*輸入已知串*//*進行正反序連接*//*輸出連接后的串*/

3.#include<stdio.h>

voidmain()

{

voidmaxval(intart[][4],intm,intn);/*函數(shù)聲明*/intarray[3][4],i,j,l,c;

/*輸入數(shù)組大小*/

printf(“intputlinesofarray:”);

scanf(“%d”,&l);

printf(“\ninputcolunmnofarray:”);

scanf(“%d”,&c);

/*輸入數(shù)據(jù)*/

printf(“\ninputdatausecommabetweendata\n”);for(i=0;i<l;i++)

for(j=0;j<c;j++)

scanf(“%d,”,&array[i][j]);

printf(“\n”);

/*顯示數(shù)組的結(jié)構(gòu)形式*/

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

{

for(j=0;j<c;j++)

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

printf(“\n”);

}

/*調(diào)用函數(shù)計算最大元素*/

maxval(array,l,c);

}

voidmaxval(intarr[][4],intm,intn)

{

inti,j,max,line=0,col=0;

int(*p)[4];

max=arr[0][0];

p=arr;

/*窮舉最大元素*/

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

for(j=0;j<n;j++)

if(max<*(*(p+i)+j))

{

max=*(*(p+i)+j);

line=i;

col=j;

}

/*輸出結(jié)果*/

printf(“\nthemaximumvalueis%d”,max);

printf(“\nthelineis:%d”,line);

printf(“\nthecolumnis:%d\n”,col);

}

4.#include<stdio.h>

voidmain()

{

charw[80],*p,ch;

p=w;

scanf("%c",p);

while(*p!=‘*’)

{p++;scanf("%c",p);}

p=w;

ch=*p;

while(*p!=‘*’)

{p++;

if(*p>ch)/*指針變量p指向w*//*輸入字符串*//*依次比較找出最大ASCII碼值的字符*/

ch=*p;}

printf("最大ASCII碼值的字符:%c,ASCII碼值:%d\n",ch,ch);}

5.#include<stdio.h>

#include<string.h>

voidmain()

{

charstr[80],*p;

inti;

p=str;

gets(p);puts(p);

for(i=strlen(p);i>0;i--)

{

*(p+2*i)=*(p+i);

*(p+2*i-1)=‘#’;

}

puts(p);

}

}/*將原來的字符向后移動,并插入‘#’*/

第10

9.B

19.B章結(jié)構(gòu)體與共同體參考答案一、擇題答案1.D11.B2.B12.A3.B13.C4.B14.C5.C6.C7.D15.B16.B17.D8.C18.A10.B20.D

二、填空題答案

1.答案:p.next=&b;

2.答案:6

3.答案:50,70,31

4.答案:6

5.答案:

6.答案:1002

7.答案:2002Shangxian

8.答案:20412044

9.答案:580550

10.答案:【1】(structlist*)【2】(structlist*)【3】returnh;

11.答案:【1】p2->next!=NULL【2】p1->next=p2->next

三、編程練習(xí)題答案

1.#include<stdio.h>#defineSN6

structstu

{intnum;

char*name;

charsex;

floatscore;}boy[SN]={

{1001,"wangying",’M’,55},

{1002,"Zhangping",’M’,65.5},

{1003,"liufang",’F’,92.5},

{1004,"Chengling",’F’,78},

{1005,"Wangming",’M’,58},

{1006,"linping",’M’,98.5}

};

intmain(void)

{

structstu*ps;

voidave(structstu*ps);

ps=boy;/*使指針指向結(jié)構(gòu)體數(shù)組*/

ave(ps);

return0;}

voidave(structstu*ps)

{intcnt=0,i;

floatave,sum=0;

for(i=0;i<SN;i++,ps++)

{sum+=ps->score;/*把每個學(xué)生的成績都加到sum上*/

if(ps->score<60)cnt+=1;/*統(tǒng)計不及格的人數(shù)*/

}

printf("sum=%6.2f\n",sum);

ave=sum/SN;

printf("average=%5.2f\ncount=%d\n",ave,cnt);

}

2.#defineN4

#include"stdio.h"

staticstructman

{charname[20];

intage;

}person[N]={"li",23,"wang",21,"zhang",25,"sun",22};

intmain(void)

{structman*max,*p;

intm;

max=person;/*讓指針max指向數(shù)組person*/

m=max->age;/*假設(shè)第一個人的年齡最大,放在m中*/

for(p=person;p<person+N;p++)

{if(m<p->age)/*如果數(shù)組中某個元素的年齡大于m,則讓指針max指向該數(shù)組元素*/max=p;

}

printf("%s,%d",max->name,max->age);

return0;

}

3.#include<stdlib.h>

#include<stdio.h>

#defineEmpNum3

structemployees

{intnum;

charname[20];

intsalary;

};

intmain(void)

{

structemployeesemp[EmpNum];

inti,sum=0;

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

{printf("\nenteremp[%d]’snumnamesalary:",i);

scanf("%d%s%d",&emp[i].num,emp[i].name,&emp[i].salary);sum=sum+emp[i].salary;

}/*輸入職工信息*/

printf("\nrecordnum\tname\tsalary\n");

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

printf("[%d]%d\t%-10s%d\n",i,emp[i].num,emp[i].name,emp[i].salary);/*輸出職工信息*/

printf("Theaveragesalaryis:%d",sum/EmpNum);

return0;

}

4.#defineN5

structstudent

{charnum[6];

charname[8];

intscore[4];

}stu[N];

voidinput()//輸入函數(shù)

{inti,j;

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

{printf("\npleaseinput%dof%d\n",i+1,N);

printf("num:");

scanf("%s",stu[i].num);

printf("name:");

scanf("%s",stu[i].name);

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

{printf("score%d.",j+1);

scanf("%d",&stu[i].score[j]);

}

printf("\n");

}

}

print()

{inti,j;

printf("\nNo.Name\tSco1\tSco2\tSco3\n");

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

{printf("%-6s%-10s",stu[i].num,stu[i].name);

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

printf("%-8d",stu[i].score[j]);

printf("\n");

}

}

intmain(void)

{

input();

print();

return0;

}

5.#include"stdlib.h"

#include"stdio.h"

structlist

{intdata;

structlist*next;

};/*定義鏈表的節(jié)點信息*/

typedefstructlistnode;/*把結(jié)構(gòu)體類型重命名為node*/

typedefnode*link;/*定義一個新類型link*/

intmain(void)

{

linkptr,head,tail;

intnum,i;

tail=(link)malloc(sizeof(node));/*開辟2.A3.A4.D5.D6.A7.A8.D9.B

二、填空題答案

1.答案:11110000

2.答案:0

3.答案:00011011

4.答案:129,201

5.答案:8

三、編程練習(xí)題答案

1.unsignedintcode(unsignedintx)

{

unsignedinty,z;

y=x&0x8000;

if(y==0)

z=x;else

z=(x