版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《C語(yǔ)言程序設(shè)計(jì)教程》課后題答案第一章一選擇題1.A2.B3.C4.D5.B6.C填空題程序算法main或主4.編譯5.編譯6..obj7.庫(kù)函數(shù)8.文本或ASCII碼三、 編程題參考代碼如下:#include<stdio.h>voidmain(){printf("金\n木5水\n火5土\n");}參考代碼如下:#include<stdio.h>voidmain(){inta,b;scanf("%d%d",&a,&b);printf("%d+%d=%d\n",a,b,a+b);printf("%d-%d=%d\n",a,b,a-b);printf("%d*%d=%d\n",a,b,a*b);printf("%d/%d=%d\n",a,b,a/b);}參考代碼如下:#include<stdio.h>voidmain(){floata,b,h,s;scanf("%f%f%f",&a,&b,&h);s=(a+b)*h/2;printf("s=%f\n",s);第二章一選擇題答案及分析:B,略A,-8在內(nèi)存中是以補(bǔ)碼(設(shè)兩個(gè)字節(jié))形式存儲(chǔ)的A,C語(yǔ)言有32個(gè)關(guān)鍵字(參見(jiàn)課本第18頁(yè)),且C語(yǔ)言標(biāo)識(shí)符是區(qū)分大小寫(xiě)字母的A,略D,八進(jìn)制數(shù)據(jù)中不能出現(xiàn)數(shù)碼8B,字符常量應(yīng)該用單引號(hào)括起來(lái),答案D超出了ASCII取值范圍(ASCII的取值范圍為[0,255])C,該字符串中轉(zhuǎn)義字符有三個(gè):\\、\22和\n,普通字符有三個(gè):a、,和0,所以字符串長(zhǎng)度為6C,略D,C語(yǔ)言沒(méi)有read函數(shù)和%D格式符號(hào),且scanf函數(shù)第二個(gè)形參為地址列表B,根據(jù)題意,scanf函數(shù)輸入數(shù)據(jù)時(shí)分隔符號(hào)不應(yīng)該是逗號(hào),應(yīng)該是空格或回車(chē)符,且輸入數(shù)據(jù)時(shí)分一行或幾行均可A,scanf函數(shù)中不允許出現(xiàn)%8.4,%6.2和%8這樣的格式符號(hào)C,既要保證5位小數(shù)位,還得保證整數(shù)位不變,這樣數(shù)據(jù)12345.67800用10列不能完全顯示出來(lái),按C語(yǔ)言規(guī)定,12345.67800原樣輸出B,printf函數(shù)中格式符號(hào)%d,%o,%x表示對(duì)應(yīng)的整型數(shù)據(jù)分別按十進(jìn)制,八進(jìn)制和十六進(jìn)制輸出C,按C語(yǔ)言規(guī)定,scanf函數(shù)形參雙引號(hào)中,如果包含非格式符號(hào),在輸入數(shù)據(jù)時(shí)要求原樣輸入填空題答案及分析:1.intfloatdouble(略)2.65,89,printf函數(shù)中如果格式符號(hào)是%小,則輸出相應(yīng)字符的ASCII十進(jìn)制數(shù)值a=98,b=765.000000,c=4321.000000,scanf函數(shù)中的格式符號(hào)%2d%3f%4f,表示將鍵盤(pán)輸入的數(shù)據(jù)9876543210按2,3,4位分割,然后再分別賦給變量a,b,cscanf("%lf%lf%lf",&a,&b,&c);double類(lèi)型的變量對(duì)應(yīng)的格式符號(hào)是%lf三、 編程題參考代碼如下:#include<stdio.h>voidmain(){inta=97;printf("%c\n",a);printf("%d\n",a);printf("%o\n",a);printf("%x\n",a);}程序分析:通過(guò)printf函數(shù)中不同的格式符號(hào),即%c(字符),%d(十進(jìn)制),%o(八進(jìn)制),%x(十六進(jìn)制)輸出相應(yīng)的值。參考代碼如下:#include<stdio.h>voidmain(){inth,m,minute;scanf("%d:%d",&h,&m);minute=h*60+m;printf("minute=%d\n",minute);}程序分析:輸入形式為10:27,故scanf函數(shù)雙引號(hào)中兩個(gè)格式符號(hào)%d之間必須加入“:”參考代碼如下:#include<stdio.h>voidmain(){floatr=6371000,s,v;s=4*3.1415926*r*r;v=3.1415926*4/3*r*r*r;printf("s=%f\nv=%f",s,v);}程序分析:C語(yǔ)言中的n不代表3.1415926,可以用各種常量的形式體現(xiàn)出來(lái)。參考代碼如下:#include<stdio.h>voidmain(){intm100,m50,m20,m10,m5,m1,m;scanf("%d",&m);m100=m/100;m50=(m-m100*100)/50;m20=(m-m100*100-m50*50)/20;m10=(m-m100*100-m50*50-m20*20)/10;m5=(m-m100*100-m50*50-m20*20-m10*10)/5;m1=m-m100*100-m50*50-m20*20-m10*10-m5*5;printf("%d元發(fā)工資,人名幣各票面的張數(shù)為:\n",m);printf("100元的張數(shù):%d\n",m100);printf("50元的張數(shù):%d\n",m50);printf("20元的張數(shù):%d\n",m20);printf("10元的張數(shù):%d\n",m10);printf("5元的張數(shù):%d\n",m5);printf("1元的張數(shù):%d\n",m1);}程序分析:人民幣的面值分別為100元,50元,20元,10元,5元和1元,工資4367元除以100后得到的商就為100元張數(shù),余數(shù)再除以50,得到的商為50元的張數(shù),余數(shù)再除20,……,以此類(lèi)推就會(huì)得出人民幣各面值相應(yīng)的張數(shù)。參考代碼如下:#include<stdio.h>voidmain(){floatr1,r2,r3,r;scanf("%f%f%f",&r1,&r2,&r3);r=r1*r2*r3/(r1*r2+r2*r3+r1*r3);printf("三個(gè)電阻并聯(lián)后的總電阻為%f\n",r);}程序分析:首先將計(jì)算并聯(lián)電阻值的公式變換一下;再就是考慮要保留小數(shù)位,故變量類(lèi)型設(shè)置為實(shí)型,注意格式符號(hào)為%f。參考代碼如下:#include<stdio.h>voidmain(){intx,a,b,c,d,y;scanf("%d",&x);a=x%10;b=x/10%10;c=x/100%10;d=x/1000;y=a*1000+b*100+c*10+d;printf("%d逆置各位數(shù)后的值為%d\n",x,y);}程序分析:1234除以10的余數(shù)就是4,商再除以10的余數(shù)就是3,1234除以100再除以10取余就是2,1234除以1000就是1。也可以用其他的表達(dá)式求出各位數(shù)值,例如輸入數(shù)據(jù)1234中的4,可以用公式a=x-d*1000-c*100-b*10來(lái)計(jì)算。參考代碼如下:#include<stdio.h>voidmain(){floatF,C;printf("請(qǐng)輸入華氏溫度:");scanf("%f",&F);C=5.0/9*(F-32);printf("華氏溫度%f對(duì)應(yīng)的攝氏溫度為%f\n",F,C);}程序分析:5/9的值為0,所以要寫(xiě)成5.0/9,5/9.0或5.0/9.0,還要注意變量類(lèi)型為實(shí)型,且對(duì)應(yīng)的格式符號(hào)為%f。參考代碼如下:#include<stdio.h>voidmain()charch1,ch2,ch3;printf("請(qǐng)輸入三個(gè)數(shù)字字符:”);scanf("%c%c%c",&ch1,&ch2,&ch3);printf("將數(shù)字字符轉(zhuǎn)換為數(shù)字%d,%d,%d\n",chl-'0',ch2-48,ch3-'0');}程序分析:通過(guò)鍵盤(pán)輸入三個(gè)數(shù)字字符時(shí)要連續(xù)輸入,不要加任何分隔符號(hào),例如121等,另外,數(shù)字字符輸出時(shí)遇到格式符號(hào)%小將輸出相應(yīng)數(shù)字字符的ASCII值,但任何一個(gè)數(shù)字字符的ASCII值減去字符0的ASCII值,再對(duì)應(yīng)%d格式符號(hào)輸出時(shí),就是數(shù)字字符對(duì)應(yīng)的數(shù)字,例如'2'-'0'=2。不能得到指定的輸出結(jié)果,參考代碼如下:voidmain(){inta,b,c,x,y;scanf("%d%d%d",&a,&b,&c);x=a*b;y=x*c;printf("a=%d,b=%d,c=%d\n",a,b,c);printf("x=%d,y=%d\n",x,y);}程序分析:scanf("%d,%d,%d",a,b,c);scanf函數(shù)第二類(lèi)形參是地址列表,所以語(yǔ)句改為scanf(”%d,%d,%d",&a,&b,&c);而這個(gè)語(yǔ)句對(duì)應(yīng)的鍵盤(pán)輸入形式為2,3,4。為了滿(mǎn)足題目要求,scanf語(yǔ)句改為scanf("%d%d%d",&a,&b,&c);。另外,printf函數(shù)雙引號(hào)只能出現(xiàn)一對(duì),且雙引號(hào)中需要在相應(yīng)的位置上添加a=等這樣的字符串才能原樣輸出;還有整型變量對(duì)應(yīng)格式符號(hào)是%d等。第三章15.B28.A15.B28.AA2.C3.C4.D5.C6.B7.C8.B9.A10.A11.A12.B13.D14.A16.C17.C18.C19.C20.C21.C22.B23.C24.C25.A26.B27.A29.C30.A31.C32.C二.填空題非零零passwarm3.525252fabs(x)>5x%y==06.if((1<=x&&x<=10||200<=x&&x<=210)&&x%2==1)printf("%d",x);7.k=1Right!1Right!1$$$a=0a=2,b=111.0<a<b12.t;"%f%f"a=b;13."%c",&ch'A'<=ch&&ch<='Z'ch14.死循環(huán)15.34516.73-117.x>=0x<amin18scan("%f",&x);sum+=x;19.820.1121.2.40000022.892123.i<=9j%3!=0b=i+1852d=1.0k++k<=n三、編程題1.參考代碼如下:#include<stdio.h>voidmain(void){floatx,y;printf("Pleaseinputthevalueofx:");scanf("%f",&x);if(x>-5&&x<0)y=x;elseif(x==0)y=x-1;elseif(x>0&&x<10)y=x+1;printf("y=%f",y);}2.參考代碼如下:#include<stdio.h>voidmain(void){floata,b,c;printf(”請(qǐng)輸入三角形三邊的長(zhǎng)度:\n");scanf("%f%f%f",&a,&b,&c);if(a+b>c&&b+c>a&&a+c>b)if(a==b&&a==c)printf(”該三角形是等邊三角形\n");elseif(a==b&&a!=c)printf(”該三角形是等腰三角形\n");elseprintf(”該三角形是一般三角形\n");elseprintf(”不能構(gòu)成三角形\n");}參考代碼如下:#include<stdio.h>voidmain(void){floatM,N,menoy;printf(”請(qǐng)輸入購(gòu)買(mǎi)金額:”);scanf("%f",&M);if(M<100)N=0;elseif(M>=100&&M<200)N=1.5;elseif(M>=200&&M<300)N=2.5;elseif(M>=300&&M<400)N=3.5;elseif(M>=400&&M<500)N=4.5;elseif(M>=500&&M<600)N=5.5;elseN=6;menoy=M*(1-N/100);printf("實(shí)際支付金額:%f,返還的金額:%f\n",menoy,M-menoy);}參考代碼如下:#include<stdio.h>voidmain(void){floatM,N,menoy;intin;printf(”請(qǐng)輸入購(gòu)買(mǎi)金額:”);scanf("%f",&M);in=M/100;switch(in){case0:N=0;break;case1:N=1.5;break;case2:N=2.5;break;case3:N=3.5;break;case4:N=4.5;break;case5:N=5.5;break;default:N=6;break;}menoy=M*(1-N/100);printf("實(shí)際支付金額:%f,返還的金額:%f\n",menoy,M-menoy);}參考代碼如下:#include<stdio.h>voidmain(void){floatx,max;printf("Enteranumber:");scanf("%f",&x);max=x;while(x>0)printf("Enteranumber:");scanf("%f",&x);if(x>max)max=x;}if(max>0)printf("Thelargestnumberenteredwas%f\n",max);}參考代碼如下:#include<stdio.h>voidmain(void){floatM,N,menoy;printf(”請(qǐng)輸入購(gòu)買(mǎi)金額:”);scanf("%f",&M);while(M>0){if(M<100)N=0;elseif(M>=100&&M<200)N=1.5;elseif(M>=200&&M<300)N=2.5;elseif(M>=300&&M<400)N=3.5;elseif(M>=400&&M<500)N=4.5;elseif(M>=500&&M<600)N=5.5;elseN=6;menoy=M*(1-N/100);printf(”實(shí)際支付金額:%f,返還的金額:%f\n",menoy,M-menoy);printf("請(qǐng)輸入購(gòu)買(mǎi)金額:”);scanf("%f",&M);}}參考代碼如下:#include<stdio.h>voidmain(void)floatnumber,positivesum=0,negativesum=0,total=0;inti;for(i=1;i<=10;i++){scanf("%f",&number);if(number>=0)positivesum+=number;elsenegativesum+=number;total+=number;}printf("positivesum%f,negativesum%f,total%f\n",positivesum,negativesum,total);}參考代碼如下:#include<stdio.h>voidmain(void){inti,sum=0,k=1;for(i=1;i<=101;i+=2){sum=sum+k*i;k=-k;}printf("1-3+5-7+...-99+101=%d\n",sum);}參考代碼如下:#include<stdio.h>voidmain(void){floati,sum=0,k=1;for(i=1;k>=1e-4;i++){sum=sum+k;k=k/i;}printf("e=%f\n",sum);}10.參考代碼如下:#include<stdio.h>voidmain(void){floati,sum=0,n=2,d=1,temp;for(i=1;i<=20;i++)sum=sum+n/d;temp=n;n=n+d;d=temp;}printf("sum=%f\n",sum);}11.參考代碼如下:#include<stdio.h>#include<math.h>voidmain(void){floatapple,watermelon,pear;for(apple=1;apple<100;apple++)for(watermelon=1;watermelon<10;watermelon++){pear=100-apple-watermelon;if(fabs(apple*0.4+watermelon*4+pear*0.2-40.0)<1e-6)printf("apple:%.0f,watermelon:%.0f,pear:%.0f\n",apple,watermelon,pear);}}12.參考代碼如下:#include<stdio.h>voidmain(void){inti,j,k;for(i=1;i<10;i++)for(j=0;j<10;j++)for(k=0;k<10;k++)if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)printf("%d\n",i*100+j*10+k);}或:#include<stdio.h>voidmain(void){inta,b,c,i;for(i=100;i<1000;i++){a=i/100;b=i/10%10;c=i%10;if(i==(a*a*a+b*b*b+c*c*c))printf("%d\n",i);13.參考代碼如下:#include<stdio.h>voidmain(void){inta,b,c,d;for(a=1;a<10;a++)for(b=0;b<10;b++)for(c=0;c<10;c++)for(d=0;d<10;d++)if(a*1000+b*100+c*10+d==(a*10+b+c*10+d)*(a*10+b+c*10+d))printf("%d\n",a*1000+b*100+c*10+d);}或:#include<stdio.h>voidmain(void){inta,b,c,d,i;for(i=1000;i<10000;i++){a=i/1000;b=i/100%10;c=i/10%10;d=i%10;if(i==(a*10+b+c*10+d)*(a*10+b+c*10+d))printf("%d\n",i);}}14.參考代碼如下:#include<stdio.h>voidmain(void){inti,j;for(i=l;iv=4;i++)〃先控制打印前4行{for(j=l;j<=4-i;j++)printf("");for(j=l;j<=2*i-l;j++)printf("*");printf("\n");}for(i=1;i<=3;i++)〃再控制打印后3行{for(j=1;j<=i;j++)printf("");for(j=1;j<=2*(4-i)-1;j++)printf("*");printf("\n");}}第四章一選擇題A,如果沒(méi)有給s[1]賦值,按C語(yǔ)言規(guī)定,s[l]下標(biāo)變量中的數(shù)據(jù)是一個(gè)隨機(jī)數(shù)C,"China"字符串末尾還有一個(gè)\0,故占6個(gè)字節(jié)D,scanf函數(shù)中格式符號(hào)若是%c,則把輸入的第一個(gè)字符⑴賦給變量c,然后遇到格式符號(hào)%d,則把后續(xù)的23(遇到空格結(jié)束)賦值給變量i,遇到格式符號(hào)%s,則把后續(xù)的字符串"456"(遇到空格結(jié)束)賦值給變量sD,C語(yǔ)言規(guī)定,數(shù)組在定義時(shí)就已經(jīng)分配好了所占內(nèi)存空間,所以intx[5]在內(nèi)容中占的字節(jié)數(shù)為4*5=20B,內(nèi)層循環(huán)變量j每次都從0開(kāi)始,使得在外層循環(huán)變量i每取一個(gè)值時(shí),n[0]和n[1]的值都得重新計(jì)算B,這是求十進(jìn)制數(shù)18對(duì)應(yīng)二進(jìn)制數(shù)的程序,將每次18除以2得到的余數(shù)依次放到數(shù)組a[0]至I」a[4]中,最后按a[4]至I」a[0]這樣的順序輸出B,第一個(gè)for循環(huán)給a[0]到a[9]賦值為0到9,第二個(gè)for循環(huán)給p[0]到p[2]賦值為0,2,6,第三個(gè)for循環(huán)使k=k+p[0]*2+p[1]*2+p[2]*2=5+4+12=21D,C語(yǔ)言規(guī)定,定義二維數(shù)組時(shí)不能省略第二維下標(biāo)值,但可以省略第一維下標(biāo)值B,略A,每行的第4列元素的值都為0C,略D,C語(yǔ)言規(guī)定,字符數(shù)組不能用s="abcd"這樣的賦值語(yǔ)句賦值C,float類(lèi)型的變量對(duì)應(yīng)格式符號(hào)通常為%f,不是%dA,每行的第3列元素的值均為0D,略C,A這種賦值形式無(wú)法放置字符串末尾的\0,B和D不符合C語(yǔ)言規(guī)定,即字符數(shù)組不能用s="good"這樣賦值語(yǔ)句賦值A(chǔ),這是字符數(shù)組str初始化的形式,str[0]到str⑸分別為字符s,t,r,i,n,g,str⑹到str[11]的值均為\0,函數(shù)strlen是統(tǒng)計(jì)字符串包含字符的個(gè)數(shù),遇到\0(不包括\0)結(jié)束,所以str長(zhǎng)度為6C,x數(shù)組比y數(shù)組多了一個(gè)字符\0A,數(shù)組名就是數(shù)組第一個(gè)元素的地址,所以scanf("%s",&s);中得刪除數(shù)組名前面的&D,puts和putchar函數(shù)只有一個(gè)參數(shù),printf函數(shù)中格式符號(hào)%$應(yīng)該對(duì)應(yīng)的是數(shù)組名D,程序功能是輸出第2和第3個(gè)字符串A,雙層循環(huán)完成的功能是求s的值,s=(((a[0][0]*10+a[0][2])*10+a[1][0])*10+a[1][2]=(((6*10+3)*10+8)*10+5=6385二.填空題a=1234b=5答案分析:C語(yǔ)言規(guī)定,使用scanf函數(shù)通過(guò)鍵盤(pán)輸入數(shù)據(jù)時(shí),除了格式符號(hào)和轉(zhuǎn)義字符,其他符號(hào)要原樣輸入。Hello答案分析:b⑸=0等于b[5]='\0',是因?yàn)樽址鸤0的ASCII值就是0,而printf("%s\n",b);的功能是輸出字符串,但遇到空格或\0等字符時(shí)結(jié)束輸出,所以答案為Hello。j<3;b[j][i]=a[i][j];i<3答案分析:通過(guò)兩個(gè)數(shù)組下標(biāo)變量位置的變換來(lái)完成程序功能。a[age]++i=18;i<=25答案分析:用數(shù)組a來(lái)存儲(chǔ)每個(gè)年齡段的人數(shù),并通過(guò)a[age]++來(lái)實(shí)現(xiàn)。c[i]=n%base;b[d]答案分析:十進(jìn)制整數(shù)轉(zhuǎn)換為n進(jìn)制采用的是除以n取余法,使用變量base存放某個(gè)進(jìn)制的值,c數(shù)組存放每次計(jì)算的余數(shù)。最后一個(gè)for循環(huán)輸出不同進(jìn)制所對(duì)應(yīng)的數(shù)碼符號(hào)。break;i>=8答案分析:如果找到某個(gè)數(shù),則通過(guò)break語(yǔ)句終止循環(huán)。-850,2,0答案分析:程序功能是查找并輸出二維數(shù)組中最小值及其下標(biāo)值。a[i]>b[j] i<3j<5答案分析:數(shù)組a和b的長(zhǎng)度可以相等或不等,通過(guò)iv3或jv5來(lái)看哪個(gè)數(shù)組的值還沒(méi)有放進(jìn)c數(shù)組中。a[i][j] j=0;j<4;j++j==3printf("\n");答案分析:用數(shù)組a最后一列,即第4列來(lái)保存每行的和,通過(guò)printf("\n");語(yǔ)句來(lái)控制按3行來(lái)輸出。fi答案分析:略GDABC答案分析:略s[i++]答案分析:while(s[i])表示當(dāng)s[i]中的字符不為\0時(shí)進(jìn)入循環(huán)體,否則退出while循環(huán)。ahAMa答案分析:通過(guò)scanf("%s",a);給字符數(shù)組賦值時(shí)遇到空格或回車(chē)符號(hào)將終止輸入。程序功能是將字符串中的字符a,大寫(xiě)變成小寫(xiě),小寫(xiě)變成大寫(xiě),其他字符保持不變。LBLMNP答案分析:執(zhí)行strcat(a,b);語(yǔ)句后,a數(shù)組的值為”ABLMNP",b數(shù)組的值為”LMNP";在執(zhí)行while(a[j++]!=O)b[j]=a[j];時(shí),b[j]中的j值是前面a[j++]中j++執(zhí)行后的值,即while循環(huán)首先執(zhí)行b[1]=a[1]='B',然后是b[2]=a[2]='L',b[3]=a[3]='M',……,b[0]中的字符保持不變,仍是'L'。'\0'i++答案分析:因?yàn)閣hile(str[i])是通過(guò)字符串末尾的\0來(lái)判斷字符串是否讀取結(jié)束,所以字符數(shù)組str最后要有一個(gè)字符串結(jié)束符號(hào)\0。b[j]=a[j][0];b[j]=a[j][k]答案分析:用b數(shù)組存儲(chǔ)每行中的最大字符,最終b[0]存放第一行字符中的最大字符,b[1]存放第一行字符中的最大字符,……。b[j]=a[j][0]的作用是在查找一串字符中最大字符前,先把這串字符第一個(gè)字符放到b[j]中,然后通過(guò)循環(huán)和條件判斷來(lái)實(shí)現(xiàn)最大字符的查找。a[k++]=a[j]答案分析:略三、編程題1.參考代碼如下:#include<stdio.h>voidmain(void)intarray[31],total=0;inti,j=1;for(i=0;i<30;i++){array[i]=2*j;j++;total=total+array[i];}array[30]=total/30;for(i=0;i<31;i++)printf("%d,",array[i]);}答案分析:由于平均值要放在數(shù)組array的末尾,所以在定義數(shù)組時(shí)要多定義一個(gè)元素,即array[31]。另,為了保持?jǐn)?shù)組類(lèi)型一致性,故平均值也只取整數(shù)值。參考代碼如下:#include<stdio.h>#include<time.h>#include<stdlib.h>voidmain(){inti,j,k,a[20],temp;srand(time(NULL));for(i=0;i<20;i++){a[i]=rand()%101;〃產(chǎn)生[0,100]之間的隨機(jī)數(shù),取整后賦給a[i]printf("%d",a[i]);}printf("\n");for(i=0;i<19;i++){k=i;for(j=i+1;j<20;j++)if(a[j]<a[k])k=j;if(k!=i)temp=a[i],a[i]=a[k],a[k]=temp;}for(i=0;i<20;i++)printf("%d",a[i]);}程序分析:略參考代碼如下:#include<stdio.h>#include<time.h>#include<stdlib.h>voidmain(){inti,maxi,a[30];srand(time(NULL));for(i=0;i<30;i++){a[i]=rand()%101; 〃產(chǎn)生[0,100]之間的隨機(jī)數(shù),取整后賦給a[i]printf("%d",a[i]);}printf("\n");maxi=0;for(i=1;i<30;i++)if(a[maxi]<a[i])maxi=i;for(i=maxi+1;i<30;i++)//將最大數(shù)后邊的數(shù)據(jù)依次前移一個(gè)位置a[i-1]=a[i];for(i=0;i<29;i++)printf("%d",a[i]);}程序分析:略參考代碼如下:#include<stdio.h>voidmain(){inti,n=0,a[30],x;scanf("%d",&x);//輸入要轉(zhuǎn)換的數(shù)據(jù)do{a[n]=x%2;//取余數(shù)n++;x=x/2; //整除}while(x!=0);for(i=n-1;i>=0;i--)//輸出printf("%d",a[i]);}程序分析:利用十進(jìn)制數(shù)除以2取余數(shù)的方法計(jì)算對(duì)應(yīng)的二進(jìn)制數(shù)。參考代碼如下:#include<stdio.h>#include<string.h>voidmain(){intright[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2},s=0,i,y;charnum[18],check[11]={'1','0','X','9','8','7','6','5','4','3','2'};printf("請(qǐng)輸入身份證號(hào)碼的前17位:");gets(num); //輸入身份證號(hào)碼for(i=0;i<17;i++) //對(duì)前17位數(shù)字的權(quán)求和s=s+(num[i]-'0')*right[i];y=s%11; //計(jì)算模printf("lastnumberis%c\n",check[y]);}程序分析:身份證前17位是以字符串的形式輸入的,利用表達(dá)式num[i]-'0可以得到每個(gè)字符對(duì)應(yīng)的數(shù)字;然后算出y值,再將對(duì)應(yīng)的驗(yàn)證碼輸出即可,例如若y=10,則輸出字符2。參考代碼如下:#include<stdio.h>voidmain(){inta[20][20]={0},i,j,n;scanf("%d",&n); //輸入要打印的楊輝三角形的行數(shù)for(i=0;i<n;i++) //對(duì)第一列和對(duì)角線(xiàn)元素賦值a[i][0]=a[i][i]=1;for(i=2;i<n;i++) //求對(duì)角線(xiàn)以下、第一列右邊的元素值for(j=1;j<i;j++)a[i][j]=a[i-1][j]+a[i-1][j-1];for(i=0;i<n;i++) //打印楊輝三角形{for(j=0;j<=i;j++)printf("%8d",a[i][j]);printf("\n");}}程序分析:楊輝三角形數(shù)據(jù)矩陣的第一列和對(duì)角線(xiàn)上數(shù)值均為1,通過(guò)for(i=0;i<n;i++)a[i][0]=a[i][i]=1;就可以完成,且也完成了前兩行的賦值,從第三行開(kāi)始,利用雙層循環(huán)計(jì)算除了第一列和對(duì)角線(xiàn)外其他元素的值。另,為了輸出效果整齊,輸出時(shí)可以規(guī)定每個(gè)元素占一樣的列寬。參考代碼如下:#include<stdio.h>#include<time.h>#include<stdlib.h>voidmain(){inta[5][6],i,j,max,min;srand(time(NULL));for(i=0;i<5;i++){for(j=0;j<6;j++){a[i][j]=rand()%51;產(chǎn)生[0,50]之間的隨機(jī)數(shù),取整后賦給a[i][j]printf("%4d",a[i][j]);}printf("\n");}max=min=a[0][0];for(i=0;i<5;i++)for(j=0;j<6;j++){if(max<a[i][j])max=a[i][j];if(min>a[i][j])min=a[i][j];}printf("max=%d,min=%d\n",max,min);}程序分析:先產(chǎn)生30個(gè)隨機(jī)整數(shù)放到二維數(shù)組a中,然后假設(shè)第一個(gè)數(shù)即是最小數(shù)也是最大數(shù),再通過(guò)雙重循環(huán)和條件判斷來(lái)找到這30個(gè)整數(shù)的最大值和最小值。參考代碼如下:#include<stdio.h>#include<time.h>#include<stdlib.h>voidmain(){inta[20][20],i,j,n;srand(time(NULL));printf(”請(qǐng)輸入n(n*n)的值:”);scanf("%d",&n);for(i=0;i<n;i++)for(j=0;j<=i;j++){a[i][j]=rand()%51;產(chǎn)生[0,50]之間的隨機(jī)數(shù),取整后賦給a[i][j]a[j][i]=a[i][j];}for(i=0;i<n;i++){for(j=0;j<n;j++)printf("%4d",a[i][j]);printf("\n");}}程序分析:通過(guò)for(j=0;j<=i;j++)來(lái)控制只遍歷數(shù)值方陣的下三角數(shù)據(jù)(包括主對(duì)角線(xiàn)上的數(shù)據(jù)),通過(guò)a[j][i]=a[i][j];語(yǔ)句完成與下三角對(duì)應(yīng)位置的上三角數(shù)組元素的賦值,從而形成對(duì)稱(chēng)矩陣。參考代碼如下:#include<stdio.h>
voidmain(){charstr[80],c;inti=0;while((c=getchar())!='\n')//接受從鍵盤(pán)輸入的字符,直到遇到回車(chē){str[i]=c; //將接受到的字符存入字符數(shù)組中i++;}str[i]='\0';puts(str); //檢驗(yàn)以上程序的結(jié)果是否正確}程序分析:gets函數(shù)功能是從鍵盤(pán)輸入字符串,遇到回車(chē)符號(hào)結(jié)束輸入,所以通過(guò)while((c=getchar())!='\n')來(lái)決定鍵盤(pán)輸入的每一個(gè)字符是否放在數(shù)組str中。最后通過(guò)str[i]='\O';語(yǔ)句來(lái)添加字符串的結(jié)束標(biāo)志'\0'。10.參考代碼如下:#include<stdio.h>voidmain(){charstr[80],temp;inti,j;//測(cè)試字符串長(zhǎng)度//測(cè)試字符串長(zhǎng)度//i為最后一個(gè)字符所在下標(biāo)//對(duì)換對(duì)稱(chēng)位置的字符for(i=0;str[i];i++);i--;for(j=0;j<i;j++,i--)temp=str[i],str[i]=str[j],str[j]=temp;puts(str); //輸出處理好的字符串}程序分析:略11.參考代碼如下#include<stdio.h>voidmain(){charmonth[12][20]={"****","January","February","March","April","May","June","July","August","September","October","November","December"};inta,b,c,d,e,number;printf(”請(qǐng)輸入3位正整數(shù),0或負(fù)數(shù)結(jié)束:");scanf("%d",&number);while(number>0){a=number/100;b=number/10%10;c=number%10;d=a+b+c;e=d%12;if(e==0)printf("%d=%d+%d+%d=%d,%d%%%d=%d,%s\n",number,a,b,c,d,d,12,e,month[e]);elseprintf("%d=%d+%d+%d=%d,%d%%%d=%d,%s\n",number,a,b,c,d,d,12,e,month[e]);scanf("%d",&number);}}程序分析:按照題意先給month數(shù)組賦初值,再通過(guò)公式把一個(gè)3位整數(shù)的每位數(shù)值提取出來(lái),計(jì)算這三個(gè)數(shù)的和d,然后d除以12取余數(shù),最后輸出余數(shù)作為下標(biāo)的對(duì)應(yīng)month數(shù)組的數(shù)組元素即可。12.參考代碼如下:#include<stdio.h>voidmain(){charstr[80];inti;gets(str);for(i=0;str[i]!='\0';i++)printf(”字符串的長(zhǎng)度為%d\n",i);程序分析:通過(guò)for(i=0;str[i]!='\0';i++);中變量i值的遞增來(lái)遍歷數(shù)組,最終i的值就是字符串的長(zhǎng)度。第五章一.選擇題1-5DDBCB6-10BACAA11-15DBBCD二.填空題Howdoesshe*(p+i*4+j)printf("\n")*(++p)num+1q<num+10*q>max*q<min5.0或'\0'n++b[n]='\0'三、編程題參考代碼如下:#include<stdio.h>#include<time.h>#include<stdlib.h>voidmain(){inti,a[20],b[20],*pa,*pb,temp;srand(time(NULL));for(i=0;i<20;i++){a[i]=rand()%101;b[i]=rand()%101;}printf(”數(shù)組a:");for(i=0;i<20;i++)printf("%d",a[i]);printf("\n");printf(”數(shù)組b:");for(i=0;i<20;i++)printf("%d",b[i]);printf("\n");pa=a;pb=b;for(i=0;i<20;i++)//對(duì)換數(shù)組a和數(shù)組b相同位置的元素{temp=*pa;
*pa=*pb;*pb=temp;pa++;pb++;printf(”對(duì)換后\n");printf(”數(shù)組a:");for(i=0;i<20;i++)printf("%d",a[i]);printf("\n");printf(”數(shù)組b:");for(i=0;i<20;i++)printf("%d",b[i]);}參考代碼如下:#include<stdio.h>main(){charstr1[80],str2[80],*p1,*p2;intj;printf("inputtwokindsofstring:\n");gets(str1);gets(str2);for(p1=str1,p2=str2;*p1&&*p2;p1++,p2++)/*比較每一對(duì)字符,直到出現(xiàn)'\0',退出循環(huán)*/{j=*p1-*p2;/*j為結(jié)束比較時(shí)那對(duì)字符的ASCII碼差值j=*p1-*p2;/*j為結(jié)束比較時(shí)那對(duì)字符的ASCII碼差值*/if(j>0)printf("%d\n",1);elseif(j<0)printf("%d\n",-1);elseprintf("%d\n",0);}參考代碼如下:#include<stdio.h>intmain(){inta[4][4],temp;int(*p)[4];inti,j;p=a; //為行指針p賦初值printf("Enterarrayelements:\n");for(i=0;i<4;i++) //輸入數(shù)組元素的值
for(j=0;j<4;j++)scanf("%d",*(p+i)+j);for(i=0;i<4;i++)for(j=0;j<i;j++){temp=*(*(p+i)+j);*(*(p+i)+j)=*(*(p+j)+i);*(*(p+j)+i)=temp;} //轉(zhuǎn)置矩陣for(i=0;i<4;i++) //輸出數(shù)組元素的值{for(j=0;j<4;j++)printf("%4d",p[i][j]);printf("\n");}return0;}參考代碼如下:#include<stdio.h>intmain(){charstr[80],*sp;intcount[26]={0},i,a;gets(str);for(sp=str;*sp;sp++)//用指針訪(fǎng)問(wèn)字符串{a=*sp-97; //將a字符的個(gè)數(shù)統(tǒng)計(jì)在數(shù)組count下標(biāo)為0的單元,依次類(lèi)推count[a]++;}for(i=0;i<26;i++)if(count[i]!=0)printf("%c=%d",i+97,count[i]);return0;}參考代碼如下:#include<stdio.h>intmain(){charstr[80],*spf,*spr;intflag=1;gets(str);for(spr=str;*spr;spr++) //讓指針spr指到字符串的末尾for(spf=str;spf<spr;spf++,spr--)//逐一比較,只要有一對(duì)字符不相等,將標(biāo)志變量置為0if(*spf!=*spr)flag=0;if(flag)printf("YES\n");elseprintf("NO\n");return0;}參考代碼如下:#include<stdio.h>#include<string.h>intmain(){charname[5][15];char*p[5];//定義指針數(shù)組char*temp;inti,j,k;printf("Enter5strings:\n");for(i=0;i<5;i++){gets(name[i]);//讀入5個(gè)字符串p[i]=name[i];//指針數(shù)組元素指向字符串}for(i=0;i<4;i++)//用選擇排序法排序{k=i;for(j=i+1;j<5;j++)if(strcmp(p[j],p[k])<0)k=j;if(k!=i){temp=p[i];p[i]=p[k];p[k]=temp;//改變指針的指向}}printf("\nThesortedresult:\n");printf(" \n");for(i=0;i<5;i++)puts(p[i]); //按指針指向順序輸出return0;第六章一.選擇題16-20AABAA1-5CBCDA6-10AADBB11-15BBDBD16-20AABAA1.四auto,register,static,extern568,1712624120return1returnn+sum(n-1)三、編程題參考代碼如下:#include<stdio.h>#include<math.h>intprime(intm){inti,k;if(m==1)return0;else{k=sqrt(m);for(i=2;i<=k;i++)if(m%i==0)break;if(i<=k)return0;elsereturn1;}}intmain(){inti;for(i=101;i<200;i+=2)if(prime(i))printf("%d",i);}參考代碼如下:#include<stdio.h>#include<math.h>floatfun(floatx){floaty;if(x>-5&&x<0)y=x;elseif(x==0)y=x-1;elseif(x>0&&x<10)y=x+1;returny;}voidmain(){floatx;printf(”請(qǐng)輸入x的值:”);scanf("%f",&x);printf("%f\n",fun(x));}參考代碼如下:voidtran(intx){inti,s[20]={0};for(i=0;x;i++){s[i]=x%8;x/=8;}i--;for(;i>=0;i--)printf("%d",s[i]);printf("\n");}voidmain(){intdec;printf("請(qǐng)輸入一個(gè)十進(jìn)制數(shù):");scanf("%d",&dec);tran(dec);}參考代碼如下:#include<stdio.h>voidswap(inta[],intn){int*pf,*pr,temp;for(pf=a,pr=a+n-1;pf<pr;pf++,pr--){temp=*pf;*pf=*pr;*pr=temp;}}voidmain(){intarray[20],n,i;printf("請(qǐng)輸入要處理的數(shù)據(jù)的個(gè)數(shù):”);scanf("%d",&n);printf(”請(qǐng)輸入%d個(gè)數(shù):”,n);for(i=0;i<n;i++)scanf("%d",&array[i]);swap(array,n);printf("對(duì)換后的數(shù)據(jù)為:");for(i=0;i<n;i++)printf("%d",array[i]);}參考代碼如下:#include<stdio.h>voidswap2w(inta[][5]){inti,j,temp;for(i=0;i<2;i++)for(j=0;j<5;j++){temp=a[i][j];a[i][j]=a[5-i-1][j];a[5-i-1][j]=temp;}}voidmain(){inta[5][5],n,i,j;for(i=0;i<5;i++)for(j=0;j<5;j++)scanf("%d",&a[i][j]);swap2w(a);printf("對(duì)換后的數(shù)據(jù)為:\n");for(i=0;i<5;i++){for(j=0;j<5;j++)printf("%d",a[i][j]);printf("\n");}}參考代碼如下:#include<stdio.h>inthuiwen(charstr[]){char*spf,*spr;intflag=1;for(spr=str;*spr;spr++) //讓指針spr指到字符串的末尾spr--; //用指針spr指到字符串最后一個(gè)字符for(spf=str;spf<spr;spf++,spr--)//逐一比較,只要有一對(duì)字符不相等,將標(biāo)志變量置為0if(*spf!=*spr)flag=0;returnflag;}intmain(){charstr[80];gets(str);if(huiwen(str))printf("YES\n");elseprintf("NO\n");return0;}參考代碼如下:#include<stdio.h>intdelch(charstr[],charch){inti,j;for(i=0;str[i];i++)if(ch==str[i])for(j=i+1;str[j];j++)//刪除字符str[j-1]=str[j];str[j-1]=str[j]; //移動(dòng)字符串末尾的'\0'}intmain(){charstr[80],c;gets(str);scanf("%c",&c);delch(str,c);puts(str);return0;}參考代碼如下:#include<stdio.h>inthe(intn){if(n==1)return1;elsereturnn+he(n-2);}intmain(){inti,s=0;for(i=1;i<=19;i+=2)s=s+he(i);printf("%d\n",s);return0;}參考代碼如下:#include<stdio.h>intfeb(intn){intf;if(n==1||n==0)return1;else{f=feb(n-1)+feb(n-2);returnf;}}intmain(){intn;scanf("%d",&n);printf("%d",feb(n));return0;第七章一.選擇題1-5BDDCC6-10BBDCB11-15BBDCB16-18DBB二.填空題1.304ARRAYa,b,c;23acp->name&p->post_codestructcommunication*p->post_code三、編程題參考代碼如下:#include<stdio.h>#defineN4/*結(jié)構(gòu)體類(lèi)型定義*/structstudent{charno[10];charname[10];floatscore[3];floattotal;};//主函數(shù)intmain(){structstudentstu[N]; //定義結(jié)構(gòu)體數(shù)組,存儲(chǔ)4個(gè)學(xué)生信息structstudenttemp; //定義結(jié)構(gòu)體變量,用于交換數(shù)據(jù)的臨時(shí)存儲(chǔ)空間inti,j,k;/*從鍵盤(pán)輸入學(xué)生信息*/puts("Enterstudents'info:");for(i=0;i<N;i++){printf("student#%d:\n",i+1);gets(stu[i].no); //輸入學(xué)號(hào)gets(stu[i].name); //輸入姓名scanf("%f%f%f",&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);//輸入3門(mén)課的成績(jī)getchar(); //接收輸入緩沖區(qū)的字符stu[i].total=stu[i].score[0]+stu[i].score[1]+stu[i].score[2]; //計(jì)算總成績(jī)/*用選擇排序法,對(duì)學(xué)生成績(jī)進(jìn)行排序*/for(i=0;i<N-1;i++){k=i;for(j=i+1;j<N;j++){if(stu[j].total>stu[k].total)k=j;elseif(stu[j].total==stu[k].total)//若總成績(jī)相等,按英語(yǔ)成績(jī)排序{if(stu[j].score[2]>stu[k].score[2])k=j;}}/*交換學(xué)生信息*/if(k!=i){temp=stu[i];//結(jié)構(gòu)體變量賦值stu[i]=stu[k];stu[k]=temp;}}//輸出排好序的學(xué)生信息printf("\nThesortedlist:\n");printf("%-12s%-22s%-10s%-10s%-10s%-10s\n","no","name","course1","course2","course3","Total");for(i=0;i<N;i++){printf("%-12s%-22s",stu[i].no,stu[i].name);printf("%-10.1f%-10.1f%-10.1f",stu[i].score[0],stu[i].score[1],stu[i].score[2]);printf("%-10.1f\n",stu[i].total);}return0;}參考代碼如下:#include<stdio.h>#defineN45/*結(jié)構(gòu)體類(lèi)型定義*/structstudent{charno[10];charname[20];intage;floatscore;};//主函數(shù)intmain(){structstudentstu[N]; //定義結(jié)構(gòu)體數(shù)組,存儲(chǔ)45個(gè)學(xué)生信息intmaxi=0; //存儲(chǔ)成績(jī)最高的學(xué)生信息的下標(biāo)inti;/*從鍵盤(pán)輸入學(xué)生信息*/puts("Enterstudents'info:");for(i=0;i<N;i++){printf("student#%d:\n",i+1);gets(stu[i].no); //輸入學(xué)號(hào)gets(stu[i].name); //輸入姓名scanf("%d%f",&stu[i].age,&stu[i].score);//輸入年齡和一門(mén)課的成績(jī)getchar(); //接收輸入緩沖區(qū)的字符if(stu[maxi].score<stu[i].score)maxi=i;}//輸出成績(jī)最高的學(xué)生信息printf("\nThehighestscoreis:\n");printf("%-12s%-22s%-10s%-10s\n","no","name","age","course");printf("%-12s%-22s",stu[maxi].no,stu[maxi].name);printf("%-10d%-10.1f%",stu[maxi].age,stu[maxi].score);return0;}參考代碼如下:#include<stdio.h>/*共用體類(lèi)型定義*/unioncch{unsignedinta;charb[4];};//主函數(shù)intmain(){unioncchx; //定義共用體類(lèi)型變量scanf("%u",&x.a);printf("%c\n",x.b[0]);//低字節(jié)printf("%c\n",x.b[1]);printf("%c\n",x.b[2]);printf("%c\n",x.b[3]);return0;}//測(cè)試數(shù)據(jù):1431989597參考代碼如下:#include<stdio.h>#defineN3structperson{charname[15]; //姓名charjob[30];//職業(yè)charaddr[30];union{floatscore;//班級(jí)編號(hào)chartitle[10];//職稱(chēng)}cate;};structpersonper[N];//定義結(jié)構(gòu)體數(shù)組,存儲(chǔ)人員信息/*人員數(shù)據(jù)錄入函數(shù)input()*/voidinput(){inti;for(i=0;i<N;i++){printf("Entername:");gets(per[i].name);//getchar();printf("Enterjob,ifteacher,firstcharactershouldbe\'t\',ifstudent,shouldbe\'s\':");gets(per[i].job);//getchar();if(per[i].job[0]=='s'){printf("Enterstudent'sscore:");scanf("%f%*c",&per[i].cate.score);}elseif(per[i].job[0]=='t'){printf("Enterteacher'stitle:");gets(per[i].cate.title);}printf("Enteraddress:");gets(per[i].addr);}}/*人員數(shù)據(jù)打印函數(shù)print()*/voidprint(){score/title\n"); score/title\n"); \n");printf("namejobaddrprintf(" for(i=0;i<N;i++){printf("%-10s",per[i].name);printf("%-15s",per[i].job);printf("%-15s",per[i].addr);if(per[i].job[0]=='s')printf("%f\n",per[i].cate.score);elseif(per[i].job[0]=='t')printf("%s\n",per[i].cate.title);}}voidsort(){inti,j,k;structpersontemp;for(i=0;i<N-1;i++){k=i;for(j=i+1;j<N;j++)if(strcmp(per[k].name,per[j].name)>0)k=j;if(k!=i){temp=per[i];per[i]=per[k];per[k]=temp;}}}//主函數(shù)intmain(){input();sort();print();第八章一.單選題1-5BABAD6-10DDDCD11D二.填空題1.二進(jìn)制文本2.pf=fopen("D:\\zk04\\data\\txfile.dat","w")3.二進(jìn)制文本文件結(jié)束符非0值三、編程題參考代碼如下:#include<stdio.h>FILE*fopenfun(char*file,char*model){FILE*fp;if((fp=fopen(file,model))==NULL){printf("Cannotopenfileof%s.\n",file);exit(0);}elsereturnfp;}main(){FILE*fp;charc;intdigcou=0,capcou=0,smacou=0,othercou=0;/*定義整型變量為計(jì)數(shù)器并初始化為0*/fp=fopenfun("file.txt","r");/*打開(kāi)文件*/while((c=fgetc(fp))!=EOF)/*從文件中讀字符*/{if(c>='0'&&c<='9')digcou++; /*統(tǒng)計(jì)數(shù)字字符*/elseif(c>='A'&&c<='Z')capcou++; /*統(tǒng)計(jì)大寫(xiě)字母*/elseif(c>='a'&&c<='z')smacou++; /*統(tǒng)計(jì)小寫(xiě)字母*/elseothercou++; /*統(tǒng)計(jì)其它字符*/}printf(”數(shù)字字符有%d個(gè)\n",digcou); /*輸出字符個(gè)數(shù)*/printf("大寫(xiě)字母有%d個(gè)\n",capcou);printf("小寫(xiě)字母有%d個(gè)\n",smacou);printf("其它字符有%d個(gè)\n",othercou);fclose(fp); /*關(guān)閉文件*/}參考代碼如下:#include<stdio.h>FILE*fopenfun(char*file,char*model){FILE*fp;if((fp=fopen(file,model))==NULL){printf("Cannotopenfileof%s.\n",file);//打開(kāi)文件出錯(cuò)顯示提示信息exit(0); //調(diào)用exit函數(shù)終止程序運(yùn)行}elsereturnfp;}#defineSIZE10structstudent/*定義結(jié)構(gòu)體*/{longnum;charname[10];intage;charaddress[10];}stu[SIZE],out;/*存盤(pán)函數(shù):將學(xué)生的信息以數(shù)據(jù)塊形式寫(xiě)入文件*/voidfsave(){FILE*fp;inti;fp=fopenfun("student.dat","wb");for(i=0;i<SIZE;i++)if(fwrite(&stu[i],sizeof(structstudent),1,fp)!=1)printf("Filewriteerror.\n"); /*寫(xiě)過(guò)程中的出錯(cuò)處理*/fclose(fp); /*關(guān)閉文件*/}//主函數(shù)main(){FILE*fp;inti;
for(i=0;i<SIZE;i++)/*for(i=0;i<SIZE;i++)/*從鍵盤(pán)讀入學(xué)生的信息*/printf("Inputstudent%d:",i+1);scanf("%ld%s%d%s",&stu[i].num,stu[i].name,&stu[i].age,stu[i].address);/*調(diào)用函數(shù)保存學(xué)生信息/*調(diào)用函數(shù)保存學(xué)生信息*/Address\n");/*讀入數(shù)據(jù)塊*/fsave();fp=fopenfun("student.dat","rb");printf("No.NameAgewhile(fread(&out,sizeof(out),1,fp))printf("%8ld%-10s%4d%-10s\n",out.num,,out.age,out.address);fclose(fp);/*關(guān)閉文件*/}參考代碼如下#include<stdio.h>FILE*fopenfun(char*file,char*model){FILE*fp;if((fp=fopen(file,model))==NULL){printf("Cannotopenfileof%s.\n",file);//打開(kāi)文件出錯(cuò)顯示提示信息exit(0); //調(diào)用exit函數(shù)終止程序運(yùn)行}elsereturnfp;}#defineSIZE5structstudent/*定義結(jié)構(gòu)體*/{longnum;charname[10];floatscore[5];floataver;}stu[SIZE],out;/*存盤(pán)函數(shù):將學(xué)生的信息以數(shù)據(jù)塊形式寫(xiě)入文件*/voidfsave(){FILE*fp;inti;fp=fopenfun("student.dat","wb");for(i=0;i<SIZE;i++)if(fwrite(&stu[i],sizeof(structstudent),1,fp)!=1)printf("Filewriteerror.\n"); /*寫(xiě)過(guò)程中的出錯(cuò)處理*/if(fwrite(&out,sizeof(structstudent),1,fp)!=1)/*寫(xiě)入5門(mén)課的平均成績(jī)*/printf("Filewriteerror.\n");fclose(fp);/*關(guān)閉文件*/}//主函數(shù)main(){FILE*fp;floataverage[5]={0},t;inti,j;for(i=0;i<SIZE;i++) /*從鍵盤(pán)讀入學(xué)生的信息*/{printf("Inputstudent%d:",i+1);scanf("%ld%s",&stu[i].num,stu[i].name);for(j=0,t=0;j<5;j++){scanf("%f%*c",&stu[i].score[j]);t=t+stu[i].score[j];average[j]+=stu[i].score[j];}stu[i].aver=t/5;}out.num=0;strcpy(,"5course'ave");for(j=0;j<5;j++)out.score[j]=average[j]/SIZE;fsave();/*調(diào)用函數(shù)保存學(xué)生信息*/fp=fopenfun("student.dat","rb");printf("No. Namecourse1course2course3course4course5\n");while(fread(&out,sizeof(out),1,fp)) /*讀入數(shù)據(jù)塊*/{printf("%8ld%-12s",out.num,);for(j=0;j<5;j++)printf("%8.2f",out.score[j]);printf("\n");}fclose(fp);/*關(guān)閉文件*/}參考代碼如下#include<stdio.h>FILE*fopenfun(char*file,char*model){FILE*fp;if((fp=fopen(file,model))==NULL){printf("Cannotopenfileof%s.\n",file);//打開(kāi)文件出錯(cuò)顯示提示信息exit(0); //調(diào)用exit函數(shù)終止程序運(yùn)行}elsereturnfp;}#defineSIZE5structwarehouse/*定義結(jié)構(gòu)體*/{charKNO[10];intKNOM};//主函數(shù)main(){FILE*fpr,*fpw;structwarehouset;fpr=fopenfun("CK.txt","r");fpw=fopenfun("XK.txt","w");while(!feof(fpr)){fscanf(fpr,"%s%d",t.KNO,&t.KNOM);if(t.KNOM>100)fprintf(fpw,"%s%d\n",t.KNO,t.KNOM);}fclose(fpr);/*關(guān)閉文件*/fclose(fpw);/*關(guān)閉文件*/}第九章第九章1.(1)30(2)3(3)9(4)292.(1)1(2)1(3)1(4)7(5)15(6)63.參考代碼如下#include<stdio.h>voidmain(){//0125的二進(jìn)制為//0125的二進(jìn)制為01010101printf("%d\n",b);}4.參考代碼如下voidmain(){inti,bit;voidmain(){inti,bit;unsignedintn,mask;mask=0x80000000;/*定義循環(huán)變量i和位1/0標(biāo)志變量bit*//*定義欲轉(zhuǎn)換的整數(shù)n和屏蔽字變量mask*//*初始屏蔽字,從左邊最高位開(kāi)始檢查*/printf("EnteraintegerofHexadecimal:");scanf("%x",&n); /*輸入要轉(zhuǎn)換的整數(shù)*/printf("binaryof%xis:",n);for(i=0;i<32;i++) /*循環(huán)檢查32位,并輸出結(jié)果*/{if(i%8==0&&i!=0)printf(",");/*習(xí)慣上二進(jìn)制每8位用“,”分隔以便查看*/bit=(n&mask)?1:0; /*n&mask非0,該
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 靜脈治療知識(shí)考試題及解析
- 房地產(chǎn)經(jīng)紀(jì)人培訓(xùn)題及答案參考
- 網(wǎng)絡(luò)安全行業(yè)解決方案顧問(wèn)面試題
- 建筑設(shè)計(jì)師招聘面試題集及答案詳解
- 2025年智能化社區(qū)服務(wù)中心建設(shè)項(xiàng)目可行性研究報(bào)告
- 2025年城市社區(qū)綜合服務(wù)平臺(tái)建設(shè)項(xiàng)目可行性研究報(bào)告
- 2025年在線(xiàn)新零售平臺(tái)項(xiàng)目可行性研究報(bào)告
- 2025年低碳生活示范社區(qū)建設(shè)項(xiàng)目可行性研究報(bào)告
- 2025年?yáng)|南沿海海洋牧場(chǎng)項(xiàng)目可行性研究報(bào)告
- 2026年資陽(yáng)口腔職業(yè)學(xué)院?jiǎn)握新殬I(yè)傾向性考試題庫(kù)含答案詳解
- 全域土地綜合整治項(xiàng)目社會(huì)穩(wěn)定風(fēng)險(xiǎn)評(píng)估報(bào)告
- 2024-2025學(xué)年廣東省深圳市福田區(qū)七年級(jí)(上)期末英語(yǔ)試卷
- 《證券投資學(xué)》吳曉求課后習(xí)題答案
- 消防員心理測(cè)試題目及答案大全2025
- 住院醫(yī)師規(guī)范化培訓(xùn)急診科模擬試題及答案
- 2025國(guó)考國(guó)資委申論高分筆記
- 2025年高級(jí)經(jīng)濟(jì)師《人力資源》考試真題及答案
- 礦山項(xiàng)目經(jīng)理崗位職責(zé)與考核標(biāo)準(zhǔn)
- 2025年鄉(xiāng)村旅游民宿業(yè)發(fā)展現(xiàn)狀與前景可行性研究報(bào)告
- 國(guó)家安全生產(chǎn)公眾號(hào)
- 2025年中國(guó)多深度土壤水分傳感器行業(yè)市場(chǎng)全景分析及前景機(jī)遇研判報(bào)告
評(píng)論
0/150
提交評(píng)論