TP-58840101C語言程序設(shè)計(jì)實(shí)訓(xùn)教程_第1頁
TP-58840101C語言程序設(shè)計(jì)實(shí)訓(xùn)教程_第2頁
TP-58840101C語言程序設(shè)計(jì)實(shí)訓(xùn)教程_第3頁
TP-58840101C語言程序設(shè)計(jì)實(shí)訓(xùn)教程_第4頁
已閱讀5頁,還剩164頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

C語言程序設(shè)計(jì)實(shí)訓(xùn)教程習(xí)題和實(shí)驗(yàn)解答

2.1C語言概述【習(xí)題解答】1結(jié)構(gòu)化程序有三大基本結(jié)構(gòu):順序、分支和循環(huán).2..算法可以理解為有基本運(yùn)算及規(guī)定的運(yùn)算順序所構(gòu)成的完整的解題步驟?;蛘呖闯砂凑找笤O(shè)計(jì)好的有限的確切的計(jì)算序列,并且這樣的步驟和序列可以解決ー類問題。。有窮性:ー個(gè)算法應(yīng)包含有限的操作步驟而不能是無限的。確定性:算法中每ー個(gè)步驟應(yīng)當(dāng)是確定的,而不能應(yīng)當(dāng)是含糊的,有零個(gè)或多個(gè)輸入輸出,有一個(gè)或多個(gè)輸出。有效性:算法中每ー個(gè)步驟應(yīng)當(dāng)能有效地執(zhí)行,并得到確定的結(jié)果。對(duì)于程序設(shè)計(jì)人員,必須會(huì)設(shè)計(jì)算法,并根據(jù)算法寫出程序??梢杂米匀徽Z言、流程圖、偽代碼和計(jì)算機(jī)語言表示算法。.C語言的主要特點(diǎn)有:語言簡(jiǎn)潔、緊湊,使用方便、靈活。ANSICー共只有32個(gè)關(guān)鍵字;控制語句豐富,程序書寫自由,主要用小寫字母表示,壓縮了一切不必要的成分;運(yùn)算符豐富,共有34種;數(shù)據(jù)結(jié)構(gòu)類型豐富;具有結(jié)構(gòu)化的控制語句;語法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大;C語言允許直接訪問物理地址,能進(jìn)行位(bit)操作,能實(shí)現(xiàn)匯編語言的大部分功能,可以直接對(duì)硬件進(jìn)行操作。因此有人把它稱為中級(jí)語言;生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高;與匯編語言相比,用C語言寫的程序可移植性好。.用傳統(tǒng)流程圖表達(dá)如下:三)三)2.2數(shù)據(jù)類型與表達(dá)式【習(xí)題解答】ー、選擇題8.Bl.C2.B 3.A4.B 5.A6.B 7,D8.B9.D10.C二、填空題.整型、實(shí)型、字符型、枚舉類型2.3.000000.逗號(hào)運(yùn)算符.三,自右向左5.1,06.32767三、編程題.已知球的半徑為1.5cm,計(jì)算球的體積。#include<stdio.h>voidmainQ(floatr=l.5,volume;volume=4.0/3*r*r*r;printf(,,%f\n^^,volume);).輸入兩個(gè)數(shù)a和b,求a除以b的商和余數(shù)?#include<stdio.h>voidmain(){inta,b,c,d;seanf("%d,%d”,&a,&b);e=a/b;d=a%b;printf("%d,%d”,c,d);.軌三個(gè)學(xué)生的成績(jī),求這三個(gè)學(xué)生的總成績(jī)和平均施績(jī)。#include<stdio.h>voidmain()(inta,b,c,sum;floataverage;printff'pleaseinputstudents'score:");scanf("%d,%d,%d",&a,&b,&c);sum=a+b+e;average=sum/3.0;printff'sum=%d,average=%f\n",sum,average);}【實(shí)驗(yàn)解答】.e=10.①程序功能為輸入兩個(gè)數(shù),求兩數(shù)的差②e=10.#include<stdio.h>voidmain()inta,b,c;a=b=5;}printf("a+b=%d”,c);.運(yùn)行結(jié)果i=8,j=10,m=9,n=10,u=9,v=-10(回車)5.x=16,y=24,z=24TOC\o"1-5"\h\z6.①100 68②100 68dD③100 68d D@120 112x P⑤出錯(cuò)@304 3210 A這二禮靈和個(gè)C程序,輸入a,b,c三個(gè)整數(shù),求具體要求:1)在TurboC環(huán)境或其他編譯環(huán)境下編輯該程序,然后進(jìn)行編譯連接。2)運(yùn)行該程序,檢查你所編寫的程序是否正確。#include<stdio.h>voidmainQ{inta,b,c,sum;scanf(u%d,%d,%d",&a,&b,&c);sum=a+b+c;printff'sumis:%d\n,,,sum);)6.By=a,6.By=a,2.3順序結(jié)構(gòu)程序設(shè)計(jì)【習(xí)題解答】ー、選擇題1.B2.C3.A4.A 5,D二、填空題y=2ロロ6口口6口6.00口6.00 (口表示空格)k=ll,k8=13,kl6=!ロロロ!ロロロロロロロロロロahpuahpuロロロロロロロロロロ口5,4,c=3i=56,j=789.000000,x=12345.000000,c=72三、編程題1.已知x=3.2,y=7,z=2,計(jì)算y/3*x-2的值。#include<stdio.h>voidmainQfloatx=3.2;inty=7,z=2;printf(4C%f,,y/3*x-2);.輸入ー個(gè)華氏溫度,要求輸出攝氏溫度(結(jié)果保留2位)。公式為c=5/9*(f-32)。#include<stdio.h>voidmain()floatf,c;scanff'%f',&f);c=5.0/9*(f-32);printf("c=%.2f',c);.從鍵盤輸入一個(gè)小寫字母,用大寫形式輸出該字母。#include<stdio.h>voidmainQ(chara,b;printff'pleaseinputalittleletter:^^);scanf(n%cn,&a);b=a-32;printf(n%cn,b);}.把!6進(jìn)制數(shù)12a以!0進(jìn)制形式輸出〇#include<stdio.h>voidmainQ{inta=0xl2a;print鶴"%d”,a);}.輸入兩個(gè)整數(shù),將其值交換。#include<stdio.h>voidmainQinta,b,t;scanf("a=%d,b=%d",&a,&b);t=a;a=b;b=t;printf(”a=%d,b=%d”,a,b);)【實(shí)驗(yàn)解答】實(shí)驗(yàn)順序結(jié)構(gòu)程序設(shè)計(jì).②結(jié)果為0,因?yàn)閍,b被定義為實(shí)型,而卻以整型輸入,類型不匹配。.錯(cuò)誤之處:s=3/(a+b)*(a+b):應(yīng)改為:s=3.0/((a+b)*(a+b)):.運(yùn)行結(jié)果-1,177777,fffif,65535.編程并上機(jī)調(diào)試運(yùn)行1)設(shè)圓半徑為尸1.5,求圓周長(zhǎng)、面積。要求用scanf函數(shù)輸入數(shù)據(jù),輸出時(shí)取小數(shù)點(diǎn)后兩位。#include<stdio.h>voidmain()(floatr,l,s,v;scanf(,,%f,,&r);1=2*3.14*r;s=3.14*r*r;printf(',l=%.2f,s=%.2f,v=%.2f,,l,s);}2)輸入ー個(gè)3位十進(jìn)制整數(shù),分別輸出百位、十位以及個(gè)位上的數(shù)。#include<stdio.h>voidmain()inta,b,c,d;scanf("%d",&a);b=a/100;c=a/10%10;d=a%10;}print.%d%d%d",b,c,d);3)從鍵盤輸入一個(gè)帶2位的實(shí)數(shù),將其整數(shù)部分和小數(shù)部分分離后輸出。例如:輸入321.54,輸出321.54=321+0.54。#include<stdio.h>voidmain()inta;floatb,c;scanfF"%f',&b);a=(int)b;c=b-a;} printf(n%.2f=%d+%.2f,,b,a,c);4)用getchar函數(shù)讀入兩個(gè)字符,然后分別用putchar和printf函數(shù)輸出這兩字符。#include<stdio.h>voidmainQ(chara,b;a=getchar();b=getchar();putchar(a);putchar(b);printf(H\n%c%cn,a,b);)2.4選擇結(jié)構(gòu)程序設(shè)計(jì)【習(xí)題解答】ー、選擇題1.Ao2.Do3.Ao4.Bo5.CoAo二、填空題(x>20&&x<30)||x<-100o1,0,0°3.585858o20,〇〇5.2〇6.a=3,b=2o三、編程題.要求輸入三個(gè)數(shù),輸出其中最大值。#include<stdio.h>voidmain()inta,b,c,max;scanf(',%d%d%d',,&a,&b,&c);max=a;if(max<b)max=b;if(max<c)max=c;printff'maxis:%d\n",max);}.由鍵盤輸入3個(gè)數(shù),若輸入的這3個(gè)數(shù)可以構(gòu)成三角形,則計(jì)算以這3個(gè)數(shù)為邊長(zhǎng)的三角形周長(zhǎng);如果不能,則輸出提示錯(cuò)誤信息。#include<stdio.h>voidmain()(floata,b,c,l;printf(npleaseinputa,b,c\nn);scanf(n%f,%f,%f1,&a,&b,&c);if((a+b)>c&&(a+c)>b&&(b+c)>a)l=a+b+c;elseprintff'Itisnottriangle!\nH);).從鍵盤上輸入ー個(gè)整數(shù)判斷其奇偶以及正負(fù)。#include"stdio.h"voidmain()(inta;seanf("%d",&a);if(a>0)(if(a%2=0)printf(nItisPLUSevennumber'*);elseprintf(**ItisPLUSoddnumber**);elseif(a<0)if(a%2=0)printf("ItisMINUSevennumber");elseprintf("ItisMINUSoddnumber");}elseprintf("ItisZERO");}.判斷方程ax2+bx+c=0的根的個(gè)數(shù)。#include"stdio.h"voidmainQ(inta,b,c;scanf("%d%d%d",&a,&b,&c);if(b*b-4*a*c>0)printf("2");elseif(b*b-4*a*c=0)printf("l");elseprintf("0");.從鍵盤輸入表示年份的整數(shù),判斷是否為閏年。#include"stdio.h"voidmain()(intyear;scanf("%d”,&year);if((year%400=0)||(year%4=0&&year%100!=0))

printff'Itisrunnian'*);elseprintf(nItisnotrunnian1,);}【實(shí)驗(yàn)解答】實(shí)驗(yàn)名稱選擇結(jié)構(gòu)程序設(shè)計(jì).if(I'v=c&&cv='9')if(('A'v=c&&cv='Z')||('a'v=c&&cv='z')).編程并上機(jī)調(diào)試運(yùn)行1)給出ー個(gè)不多于4位的正整數(shù),求它是幾位數(shù)?#include<stdio.h>voidmainQ(intn;printf(nInputanum(0<num<l0000)n);scanf(ひ%d”,&n);if(n<10)printf(”l'n”);elseif(n<100)printf(n2\nn);elseif(n<1000)printf(n3\nn);elseprintf(n4\nH);2)給出一個(gè)百分制成績(jī),要求輸出成績(jī)等級(jí)‘A‘、‘B‘、’C’、’D’、‘E’。90分及以上為‘A',8〇?89為‘B',70?79為‘C',6〇?69為‘D',60以下為'E〈用switch語句來實(shí)現(xiàn)。#include<stdio.h>voidmainQ{intscore;scanf(n%dn,&score);if(score<0||score>100)printf(nError!");else(score=score/10;switch(score)(case10:case9:printf(nA\n");break;case8:printf(nB\nn);break;case7:printf(nC\n");break;case6:printf(nD\nH);break;3)輸入四個(gè)數(shù),要求按從大到小順序輸出。#include<stdio.h>voidmain()(inta,b,c,d,t;scanff'%d%d%d%d",&a,&b,&c,&d);if(avb){t=a;a=b;b=t;}if(a〈c){t=a;a=c;c=t;}if(avd){t=a;a=d;d=t;}if(b<c){t=b;b=c;c=t;}if(b<d){t=b;b=d;d=t;}if(cvd){t=c;c=d;d=t;}printf(n%d,%d,%d,%d\nn,a,b,c,d);4)輸入3個(gè)整數(shù),將最大數(shù)與最小數(shù)輸出。#include<stdio.h>voidmainQ{inta,b,c,t;intmax,min;scanf(H%d%d%dn,&a,&b,&c);max=min=a;if(max<b)max=b;elsemin=b;if(max<c)max=c;elsemin=e;print食"max=%d,min=%d”,max,min);}5)輸入一個(gè)字符,如果是數(shù)字字符,把它轉(zhuǎn)換成相對(duì)應(yīng)的數(shù)字并輸出;如果不是,則以帶符號(hào)的十進(jìn)制整數(shù)形式輸出。#include"stdio.h"voidmainQ{chara;scanf(n%cn,&a);if(a>-0,&&a<-9,){a=a-,0,;printf("%d",a);}elseprintf("%d",a);2.5循環(huán)結(jié)構(gòu)程序設(shè)計(jì)【習(xí)題解答】ー、選擇題3.C 4.B.A 2,A3.C 4.B5.C6.C二、填空題18或1903.89214.3,45.356.4二、編程遂.設(shè)計(jì)程序計(jì)算并輸出1+UU……+-し#include<stdio.h>voidmain()inti;floats=0;fbr(i=l;iv=99;i+=2)s=s+1.0/i;printf(,,s=%f\n,,,s);).編寫程序輸出下面圖形121321432154321#include<stdio.h>voidmain()(inti,j;fbr(j=5;j>=l;j-)fbr(i=1 3-1;i++)printf(グ’);fbr(;i<=5;i++)printf("%d”,5-i+l);printf(u\n^^);.ー球從100m高度自由落下,每次落地后又反跳原高度的一半,再下落。求在第!0次落地時(shí),共經(jīng)多少米?第10次反彈高度?#include<stdio.h>voidmain()(floats=100,m=100,i;for(i=2;iv=10;i++)(m=m/2;s=s+m*2;printf^No.lOdrop'salldistanceis=%f\n,,,s);print鶴"No.10up'sdistanceis=%f',m/2);.輸入兩個(gè)整數(shù)求其最大公約數(shù)。#include<stdio.h>voidmainQ(intm,n,i,t;scanf("%d%dn,&m,&n);if(m<n)(t=n;n=m;m=t;}i=n;while((m%i!=0)||(n%i!=0))i=i-l;printf(n%d\nn,i);.輸入ー個(gè)正整數(shù),將其逆序輸出。#include"stdio.h"voidmainQ{intm,n;scanf(n%dn,&n);while(n!=0)(m=n%10;n=n/10;printf(”%d”,m);【實(shí)驗(yàn)解答】實(shí)驗(yàn)ー循環(huán)結(jié)構(gòu)程序設(shè)計(jì),l)%lds=0 i+=22)s=0Idiv=2*n-li+=23)s=0,n,i=l i+=2while(i<=2*n-l);.編程并上機(jī)調(diào)試運(yùn)行1)編程求1!+2!+3!+...+10!#include<stdio.h>voidmainQ(longs=l,i,t=l;fbr(i=2;i<=l0;i++){t=t*i;s=s+t;}printf(n%ldn,s);2)打印以下圖案#include<stdio.h>voidmain()(inti,j;fbr(i=l;i〈=4;i++)for(j=l;j<4+i;j++){if(辻i<5)

printf(nH);

else

printf(n*n);}printf(n\nH);}fbr(i=l;iv=3;i++)(fbr(j=l;j<=7-i;j++){if(D

printf(HH);

else

printf("*n);printf("ヽn");3)猴子吃桃。猴子第一天摘若干桃子,當(dāng)即吃了一半,又加一個(gè)。第二天吃了剩下桃子一半又多一個(gè)。以后每天早上都吃前一天剩下的一半多一個(gè)。第十天,只剩一個(gè)。問第一天共摘多少個(gè)桃子。#include<stdio.h>voidmainQ(ints=l,i;fbr(i=2;i<=10;i++)s=(s+l)*2;printf(n%dn,s);}4)打印九九乘法表#include<stdio.h>voidmainQ{inti,j;fbr(i=l;i<=9;i++)for(j=l;j<=i;j++)printf("%d*%d=%dn,i,j,i*j);if(i==j)printf(n\nH);})5)輸出10-100之間的全部素?cái)?shù)。#include<stdio.h>voidmain()(inti,j;for(i=10;i<=100;i++)(fbr(j=2;jv=i;j++)(if(i%j==O)(if(i=j)printf(n%d”,i);break;實(shí)驗(yàn)二綜合運(yùn)用三種基本結(jié)構(gòu)進(jìn)行程序設(shè)計(jì).百馬百擔(dān)。100匹馬,馱100擔(dān),大馬3擔(dān),中馬2擔(dān),2個(gè)小馬馱1擔(dān)。問大、中、小馬各多少?#include<stdio.h>voidmainQ{inti,j,k;fbr(i=0;iv=33;i++)for(j=0;j<=50;j++){k=100-i-j;if(3*i+2*j+k/2.0=100)printf(*,Da=%d,Zhong=%d,Xiao=%d\n,,,i,j,k);.輸入一行字符,分別統(tǒng)計(jì)其中英文字母、空格、數(shù)字和其它字符個(gè)數(shù)。#include<stdio.h>voidmain()(charc;intIetter=0,space=0,digtal=0,other=0;while((c=getchar())!=ヘn')(if((c>='A'&&cv='Z')||(c>='a'&&cv='z'))letter++;elseif(c=*')space++;elseif(c>='0'&&cv='9')digtal++;elseother++;printf(uletter=%d,space=%d,digtal=%d,other=%dM,letter,space,digtal,other);.打印輸出“水仙花數(shù)“。“水仙花數(shù)”是指ー個(gè)3位,其各位數(shù)字的立方和等于該數(shù)本身。例如:153。#include<stdio.h>voidmain()(intfbr(i=];i〈=9;i++)for(j=0;j<=9;j++)fbr(k=0;kv=9;k++)if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)printff%d\n”,i*100+j*10+k);.將一個(gè)正整數(shù)分解成質(zhì)因數(shù)的乘積。例如:輸入90,打印90=2*3*3*5。#include<stdio.h>voidmainQ{intn,i=2;scanff'%d",&n);printf(u%d=,,,n);while(n>l)(if(n%i==0)printf("%d*”,i);n=n/i;elsei++;printf(u\bつ;).利用循環(huán)語句編寫程序:對(duì)ー個(gè)正整數(shù),將各位數(shù)字反序后的數(shù)組成一個(gè)整數(shù)輸出。例如:輸入12345,輸出54321。#include<stdio.h>voidmain()!longm,n,sum=0;scanf("%ld",&m);while(m>0)n=m%10;m=m/10;sum=sum*10+n;printf(,,%ld,,,sum);.ー個(gè)素?cái)?shù)加上1000以后是37的倍數(shù),求滿足這個(gè)條件的最小素?cái)?shù)。#include<stdio.h>voidmain()(intn=l,i;while(l)(n++;fbr(i=2;iv=n/2;i++)if(n%i=0)break;if((i>n/2)&&(n+1000)%37=0)(printf("%d",n);break;."完數(shù)”。找1000以內(nèi)的所有完數(shù)。一個(gè)數(shù)如果恰好等于它的因子之和,這個(gè)數(shù)就稱為“完數(shù)”。#include<stdio.h>voidmainQinti,j,sum,m;for(i=2;i<1000;i++)(sum=0;for(j=l;j<i;j++)if(i%j=O)sum+^j;if(sum=i)(printf(H%ditsfactorsarelH,i);fbr(m=2;m<i;m++)if(i%m==0)printf(",%d”,m);printf("\n");2.6數(shù)組【習(xí)題解答】ー、選擇題1.A2.D3.A 4.D5.B6.B7.C8.DC10.D11.A12.D二、填空題2 2.r3.7 4.!dlrowolleh三、編程題.從鍵盤輸入n個(gè)整數(shù),統(tǒng)計(jì)所有下標(biāo)為奇數(shù)且數(shù)組元素的值為偶數(shù)的個(gè)數(shù)。#include<stdio.h>voidmain(){inta[100];inti,j,n,t,num=0;scanf("%d",&n);fbr(i=0;i<n;i++)scanf(u%d",&a[i]);for(i=0;i<n;i++)if(i%2==l&&a[i]%2==0)

num++;fbr(i=0;i<n;i++)printf("%5d",a[i]);printf(,,\n%d,,,num);).將字符數(shù)組中的字母變換為其字母表順序兩位后的字母,如果是‘z'或’7,則分別變?yōu)椤産'或'B,,非字母字符不變。 即'a'ーで'b'—'d'#include<stdio.h>#include<string.h>voidmainQchara[50];inti,j,n,t,num=0;gets(a);n=strlen(a);fbr(i=0;i<n;i++)scanf(u%d",&a[i]);fbr(i=O;i<n-l;i++)if(a[i]>=,a)&&a[i]<-x,||a[i]>-,A,,&&a[i]<-X')a[i]=a[i]+2;elseif(a[i]==Y||a[i]=='z'||a[i]=-Y*||a[卜=Z)a[i]=a[i]-24;puts(a);}3,判斷任意整數(shù)n是否為回文數(shù)。(回文數(shù)指正讀反讀都一樣的數(shù),如:2112,121等)#include<stdio.h>voidmain()longn;inti,j,m,d[20];scanf("%ld",&n);m=0;while(n!=O)n=n/10;m++;}fbr(i=O,j=m-l;i<j;i++,j-)if(d[i]!=d[j])break;if(i<j)printf(“NOT”);elseprintf(uYES");}.從鍵盤輸入10個(gè)整數(shù),檢查整數(shù)5是否包含在這些

數(shù)據(jù)中,若是的話,找出它是第幾個(gè)被輸入的。#include<stdio.h>voidmain()Iinta[10],i;fbr(i=0;i<10;i++)scanf(u%dn,&a[i]);fbr(i=0;i<10;i++)printff'5isinputtheposition%d\n.”,i+l);break;}if(i>=10)printff'5isnotindataAn");).任意輸入20個(gè)正整數(shù),找出其中的素?cái)?shù),將這些素?cái)?shù)由小到大排序并輸出。#include<stdio.h>voidmainQinta[20],b[20],i,j,k,m;for(i=0;i<20;i++)scanf(u%d",&a[i]);k=0;for(i=0;i〈20;i++)for(j=2;j<a[i]-l;j++)if(a[i]%j=O)break;if(j>=a[i]-l)(b[k]=a[i];k++;fbr(i=O;i<k-l;i++)fbr(j=i+l;j<k;j++)

if(b[j]<b[i]){m=b[i];fbr(i=O;i<k;i++)printf("%5d",b[i]);printf(u\n^^);.將4*5矩陣每一行按由大到小排序。#include<stdio.h>voidmain()inta[4][5],i,j,k,m;for(i=0;i<4;i++)fbr(j=0;j<5;j++)scanf(1,%d,,,&a[i][j]);fbr(i=0;i<4;i++)fbr(j=0;j<5;j++)fbr(k=j+l;k<5;k++)if(a[i][k]>a[i][j]){m=a[i][k];a[i][k]=a[i]U];a[i][j]=m;}for(i=0;i<4;i++)fbr(j=0;j<5;j++)printf("%5d”,a[i皿);printf(,t\n>>);【實(shí)驗(yàn)解答】實(shí)驗(yàn)ー數(shù)組的定義及使用Il.&a[i]a[i]n-1 i+1min=ja[i]a[min]2.編程并上機(jī)調(diào)試運(yùn)行1)將一個(gè)數(shù)組中的值逆序存儲(chǔ),然后按順序輸出數(shù)組。如:原來數(shù)組存儲(chǔ)為123,4,5的,按要求重新存為5,4,3,2,1。#include<stdio.h>voidmain()inti,j,t,n,a[100];scanf("%d",&n);fbr(i=O;i<n;i++)scanf(,,%d,,,&a[i]);

fbr(i=O,j=n-l;i<j;i++,j-)(a[i]=a[j];a[j]=t;fbr(i=O;i<n;i++)printf("%5d",a[i]);2)打印出以下楊輝三角(要求打印8行)。11112113 311464 1#include<stdio.h>voidmain(){inti,j,a[8][8];fbr(i=O;i<8;i++)for(j=0;j<8;j++)if(i==j|b=0)elsea[i]U]=a[i-l][j-l]+a[i-l][j];for(i=0;i<8;i++)(for(j=0;j<8;j++)printf(“%5d”風(fēng)i皿);printf(u\n,>);3)求4*4方陣兩對(duì)角線元素之和及其轉(zhuǎn)置矩陣。#include<stdio.h>voidmainQ(inti,j,a[4][4],b[4][4],s=0;fbr(i=0;i<4;i++)for(j=0;j<4;j++)scanf("%d”,&a[i][j]);for(i=0;i<4;i++)for(j=0;j<4;j++){b[i]U]=a[i]U];if(i==j||i+j==3)s=s+a[i][j];}fbr(i=0;i<4;i++){for(j=0;j<4;j++)printf("%5d”,b[i皿);print出"%5d”,s);}4)輸出Fibonacci數(shù)列的前20項(xiàng)。#include<stdio.h>voidmain()longa[20]={l,l};inti;for(i=2;i<20;i++)a[i]=a[i-l]+a[i-2];for(i=0;i<20;i++)printf("%ld\t”,a[iD;}5)按公式計(jì)算,求A20的值。Al~1,A2=l;A3=3*A1+A2;#include<stdio.h>voidmain()(longa[20]={l,l};inti;fbr(i=2;i<20;i++)a[i]=a[i-l]+3*a[i-2];printf("%ld”,a[19]);}實(shí)驗(yàn)二數(shù)組的定義及使用IIl.i=ls[i]!=\0's[n]=*\0,2.編程并上機(jī)調(diào)試運(yùn)行1)用冒泡法對(duì)10個(gè)整數(shù)排序。10個(gè)整數(shù)用scanf函數(shù)輸入。#include<stdio.h>voidmain()inta[10];intfbr(i=0;i<10;i++)scanf(,,%d,,,&a[i]);for(i=0;i<n-l;i++)fbr(j=O;j<n-l-i;j++)if(aU]<a[j+l]){t=a|j];a[j]=a[j+l];a[j+l]=t;}fbr(i=0;i<10;i++)printf(,,%5d,,,a[i]);}2)將兩個(gè)字符串連接起來,不要用strcat函數(shù)。#include<stdio.h>#include<string.h>voidmain()chara[100],b[50];intgets(a);gets(b);t=strlen(a);fbr(i=O;b[i]!=,\O,;i++,t++) a[t]=b[i];a[t]=*\O>;puts(a);}3)輸入一行字符串,統(tǒng)計(jì)其中的單詞個(gè)數(shù),單詞之間用空格隔開。如:輸入Iamaboy!其中單詞的個(gè)數(shù)為4個(gè)(不考慮大寫字母)。#include<stdio.h>#include<string.h>voidmain()(chara[100];inti,t;gets(a);t=0;fbr(i=0;a[i]!=*\0,;i++)if(a[i]>=,a,&&a[i]<=,z,&&a[i-1]=='1[i==0) t++;4)找出ー個(gè)二維數(shù)組的“鞍點(diǎn)”,即該位置上的元

素在該行上最大,在該列上最小。也可能沒有鞍點(diǎn)。#include<stdio.h>voidmain()inta[10][lO],i,j,k,ani,anj,max,flag;scanf(u%d,%d",&m,&n);fbr(i=0;i<m;i++)fbr(j=O;j<n;j++)scanf("%d”,&a[i]用);fbr(i=0;i<m;i++){max=a[i][0];anj=0;if(a[i][j]>max)max=a[i][j];anj=j;for(k=0,flag=1;k<m&&flag;k++)

if(max>a[k][anj])flag=O;if(flag){ani=i;printf(<ta[%d][%d]=%d\n,,,ani,anj,max);break;})if(!flag) printf(“沒有鞍點(diǎn)”);)5)已有一個(gè)排序好的數(shù)組(從小到大排序),現(xiàn)輸入ー個(gè)數(shù),要求按原來排序的規(guī)律將它插入數(shù)組中。#include<stdio.h>inta[50],n,x;inti;scanf("%d",&n);fbr(i=0;i<n;i++)scanf('<%d,,,&a[i]);printff'inputx:n);scanf("%d",&x);fbr(i=0;i<n;i++)if(a[i]>x)break;if(i==n)a[i]=x;elsefbr(j=n-l;j>=i;j-)aD+l]=a[j];a[i]=x;fbr(i=0;i<=n;i++)printf(u%5d,,,a[i]);6)比較用戶輸入的字符串是否為表示同意的yes(用戶可以用大寫或小寫)。#include"string.h"#include"stdio.h"voidmainQ(intk;charsl[5],s2[]=nyesn;printf(ninputastring:\n");gets(sl);k=0;while(sl[k]!=,\O,)(if(sl[k]>=,a,&&sl[k]<=,z,)sl=sl-32;k++;k=0;while(s2[k]!=,\0,)if(s2[k]>='a'&&s2[k]<=,z,)

s2=s2-32;k++;)if(strcmp(s1,s2)!=0)printf(nstl!=st2\nn);elseprintf(',stl=st2\nn);2.7函數(shù)與預(yù)處理【習(xí)題解答】ー、選擇題l.B2.C 3.C4.A 5.C 6.B7.D8.A9,B10.Dll.C12.C13.A14.B15.C二、填空題main函數(shù)main函數(shù)externreturnvoid#undef#include8.349.9.15,23,5,24.doublepow(floatx,intn)pow(x,i)iv=n.t=1.0breakt*=x/i.n[10]!='\n'n[ch-,O,]++三、編程題.寫ー個(gè)函數(shù),求三個(gè)數(shù)的最大值。#include<stdio.h>intmax(intx,inty)(returnx>y?x:y;}intmax3(intx,inty,intz)intt;t=max(x,y);returnz>t?z:t;}inta,b,c,t;printff'inputthreenumbersscanf(,,%d%d%d,&a,&b,&c);t=max3(a,b,c);printff'Themaxnumberis%dn,t);}.寫ー個(gè)函數(shù),對(duì)數(shù)列s=l*2*3+3*4*5+...+n(n+l)(n+2)求和。#include<stdio.h>intsum(intn)(inti,s;s=0;fbr(i=1;iv=n;i+=2)s=s+i*(i+l)*(i+2)returns;intn;printff'inputn:");scan鶴"%d",&n);printff'l*2*3+3*4*5+…+%d*(%d)*(%d尸%d",n,n+l,n+2,sum(n));).寫ー個(gè)函數(shù),當(dāng)輸入整數(shù)n,輸出高度為n的等邊三角形,當(dāng)n=5時(shí)的等邊三角形如下:****#include<stdio.h>voidtriangle(intn)inti,j;fbr(i=O;i<n;i++)for(j=O;j<=n-i;j++)putchar(**);for(j=0;jv=2巧;j++)putchar('*');putchar('\n');}|voidmainQ(intn;printff'entern:");scanf("%d",&n);printf("\n");triangle(n);.使用數(shù)組作為函數(shù)參數(shù),實(shí)現(xiàn)數(shù)組中元素的逆序。#include<stdio.h>#include<string.h>voidchange(intb[],intn)(intlen,i,j;intt;fbr(i=O,j=n-l;i<n/2;i++,j—)(t=b[i];b[i]=b用;}voidmainQ{inti,arr[l0]={1,2,3,4,5,6,7,8,9,10};printff'Befdre:");fbr(i=0;i<10;i++)printf(,<%du,arr[i]);printf(,t\n>,);change(arr,10);print^1*After:M);fbr(i=0;i<10;i++)printff'%du,arr[i]);printf(,,\n^^);}.遞歸法求解l+2+3+...+n。#include<stdio.h>#defineN100intsum(inta[],intn)(ints;if(n=l)s=a[n-l];elses=sum(a,n-1)+a[n-1];returns;inta[N],n,i,k;scanf("%d",&n);for(i=0;i<n;i++)a[i]=i+l;k=sum(a,n);print出"%d\n",k);}.寫ー函數(shù),輸入4個(gè)數(shù)字字符,要求輸出這4個(gè)數(shù)字字符時(shí)每?jī)蓚€(gè)數(shù)字間空ー個(gè)空格。例如:輸入2012,應(yīng)輸入“2012”。#include"stdio.h"#include"string.h"voidinput(charb[10]);voidmain()chara[10];inti;for(i=0;i<4;i++)scanf(',%c",&a[i]);input(a);for(i=0;i<7;i++)print鶴"%c”,a[i]);)voidinput(charb[10])(inti,j;for(i=0;i<6;i+=2)(j=i;while(b[j]!=ヘ〇')j++;while(j>i+l)(冊(cè)如ノ];j-Sb[j尸’;.編寫一個(gè)函數(shù),計(jì)算c(m,〃)=kJ.#include<stdio.h>longfact(intx);voidmainQintm,n;longcmn;printff'Inputm,nJ');scan出"%d,%d",&m,&n);cmn=fact(m)/(fact(n)*fact(m-n));printff'Thecombinationis%ld\n,cmn);}longfact(intx)longy;//?此處x為全局變量/?此處x為局部變量/?此處x為全局變量/?此處x為局部變量/?此處x為引用外部for(y=l;x>0;—x)y*=x;return(y);【實(shí)驗(yàn)解答】實(shí)驗(yàn)ー函數(shù)程序設(shè)計(jì)In*f(n-l)x=f(i)power*=im〈=nsum+=f1(m,k)1)運(yùn)行結(jié)果:xl=5*/x2=3ワ2)運(yùn)行結(jié)果:xl—5ツx2=3*/x3=5變量?/3)此程序中x為靜態(tài)變量,并且兩個(gè)變量x所處的域不同運(yùn)行結(jié)果: HELLOi=lx=10y=5CPROGRAM1=18x=20HELzL/O1=1x=10y=54.編程并上機(jī)調(diào)試運(yùn)行1)求方程?+灰+,=。的根,用三個(gè)函數(shù)分別求當(dāng)がー4ac大于0,等于〇和小于0時(shí)的根,并輸出結(jié)果。從主函數(shù)輸入a、b、C的值。#include<stdio.h>#include<math.h>doublexl,x2,p,q,disc;voidgreater_than_zero(doublea,doubleb)x1=(-b+sqrt(disc))/(2*a);x2=(-b-sqrt(disc))/(2*a);}voidequal_to_zero(doublea,doubleb)xl=x2=-b/(2*a);}voidsmaller_than_zero(doublea,doubleb)(p=-b/(2*a);q=sqrt(-dise)/(2*a);|voidmainQ(doublea,b,c;printff'Pleaseinputa,b,c:n);seanf("%lf,%lf,%lf',&a,&b,&e);dise=b*b-4*a*e;printff'root:\n");if(disc>0)greater_than_zero(a,b);printf(ux1=%f,x2=%f\n”,xl,x2);elseif(disc==O){equal_to_zero(a,b);printf(ux1=x2=%f\n”,x1);}else{smaller_than_zero(a,b);printf(ux1=%什%fl,x2=%f-%fl\n”,p,q,p,q);}}2)寫ー個(gè)判斷素?cái)?shù)的函數(shù),在主函數(shù)輸入ー個(gè)整數(shù),輸出是否為素?cái)?shù)的信息。#include<stdio.h>intprime(intn)inti;fbr(i=2;i<n;i++)if(n%i=O)break;if(i>=n)return1;elsereturn0;voidmainQ{intn;printff'Inputainteger:");seanf("%d",&n);ififprime(n))printff'%disaprime\n",n);elseprintff'%disnotaprime\n,,,n);3)用遞歸法求n階勒讓德多項(xiàng)式的值,遞歸公式1 (〃=0)x (n=1)((2n-1)x-pn_x(x)-(n-1)P?_2(x))/n(n>1)#include<stdio.h>doublep(intn,doublex)(if(n==0)return1;elseif(n=l)returnx;elsereturn((2*n-1)*x-p(n-1,x)-(n-1)*p(n-2,x))/n;卜voidmainQ(intn;doublex;printff'Inputnandx:\n");scanf("%d,%lf',&n,&x);print鶴"%f',p(n,x));實(shí)驗(yàn)二函數(shù)程序設(shè)計(jì)n.此程序功能是將數(shù)組中元素按從大到小排序,本題運(yùn)行結(jié)果是10 7 5 3-7〇.此程序考查的是帶參數(shù)的宏展開,代入宏,展開得a/=k+m*k+m/k+m*k+m。代入值得程序運(yùn)行結(jié)果是3。.編程并上機(jī)調(diào)試運(yùn)行1)編寫ー函數(shù),由實(shí)參傳遞ー個(gè)字符串,統(tǒng)計(jì)此字符串中字母、數(shù)字、空格和其他字符的個(gè)數(shù),在主函數(shù)中輸入字符串以及輸出上述結(jié)果。#include<stdio.h>#include<string.h>intIetter=0,digit=0,space=0,other=0;voidcount(chars[])(inti=0;while(s[i]!-\0'){if(s[i]>-A,&&s[i]<=*Z,||s[i]>-a,&&s[i]<-z,)letter++;elseif(s[i]>=<0,&&s[i]<=(9,)digit++;elsei心い]=='')space++;elseother++;i++;}}voidmainQ{chars[20];printf(uPleseinputastring:");gets(s);count(s);printff'lette尸%d,digit=%d,space=%d,othe尸%d\n”,letter,digit,space,other);}2)寫ー函數(shù),輸入ー個(gè)十六進(jìn)制數(shù),輸出相應(yīng)的十進(jìn)制數(shù)。#include<stdio.h>#include<string.h>#include<math.h>voidconvert(chars[])intlenght,i;doublenum=0;lenght=strlen(s);for(i=0;i<lenght;i++)(if(s[i]>='0'&&s[i]v='9')num+=(s[i]-'0')*pow(16,lenght-i-l);elseif(s[i]>士A'&&s[i]v=F)num+=(s[i]-55)*pow(16,lenght-i-l);}print4"%f;num);}voidmainQchars[10];gets(s);convert(s);#include<stdio.h>#deflneswap(a,b)t=a;a=b;b=t;voidmainQ(inta,b,t;scanf(u%d%d,,,&a,&b);swap(a,b);printf("%d,%d”,a,b);#include<stdio.h>#include<string.h>voidmain()voidconnect(charsl[],chars2[]);charsl[20],s2[20];printfifTleaseinputstringl:");gets(sl);printff'Pleaseinputstring?:");gets(s2);connectsl,s2);printfif'Theconnectedstringis:");puts(sl);}voidconnect(charsl[],chars2[]){intlengthl,i,j;lengthl=strlen(sl);for(i=length1,j=0;s2|j]!=,\0);i++,j++)sl[i]=s2[j];sl[i]-\0*;5)gill裁戰(zhàn)讎鰭求當(dāng)錢飜髄

例如,二維數(shù)組如下,則函數(shù)值為フ7。TOC\o"1-5"\h\z3 5 7 94 6 8 104 5 6 75 6 7 8#include<conio.h>#include<stdio.h>#deflneM4#defineN5intfiin(inta[M][N])inti,j,s=0;for(i=0;i<M;i++)for(j=0;j<N;j++)if(i=0||i==M-11|j==0|[j=N-1)s+=a[i][j];returns;}voidmainQintaa[M][N]={{l,3,5,7,9},{2,4,6,8,10},{3,4,5,6,7},{4,5,6,7,8}};inti,j,y;clrscrQ;printff'Theoriginaldatais:\n”);for(i=0;i<M;i++)(for(j=0;j<N;j++)printf("%5d”,aa[i]U]);printf("\n");y=fun(aa);printf(u\nThesumis:%d\n”,y);printf(,,\n^^);2.8扌相【習(xí)題解答】ー、選擇題1.A2.D3.B4.B5.B6.C7.A8.A9.B10.C11.B12.A13.C14.B15.B二、填空題.abcdeedcba.1113151719(下劃線表示空一格).11,97,11.6_3(下劃線表示空一格)5.6385三、編程題.將10個(gè)整數(shù)存入ー維數(shù)組中,編程實(shí)現(xiàn)逆序存放并輸出。#include<stdio.h>voidmain(){inta[10],*p,*head,*end,temp;printf("pleaseinput10numbers:\n");for(p=a;p<=a+9;p++)scanf("%d",p);printffTheoriginalarray:\nH);fbr(p=a;p<=a+9;p++)printf(n%dH,*p);head=a;end=a+9;while(head<end)(temp=*head;*head=*end;*end=temp;head++;end—;)printffThearrayhasbeeninverted:\nH);fbr(p=a;p<=a+9;p++)printf(n%dn,*p);).將3行3列的二維矩陣轉(zhuǎn)置輸出。#include<stdio.h>voidmain()(inta[3][3]={{l,2,3},{4,5,6},{7}8,9}};intb[3][3],i,j,*p=a;printf("arraya:\n'');for(i=0;i<=1;i++)for(j=0;jv=2;j++)printf("%5d”,*p);b皿i]=a[i皿;printf(warrayb:\n,^);for(i=0;iv=2;i++)for(j=0;j<=2;j++)

printf("%5d”,*p);printf("\n");.對(duì)輸入的6個(gè)字符串按從小到大的順序排序,用指針方法輸出已排好序的字符串。#include<stdio.h>voidmain()[char *alpha[6]={"a'',''bc'',"def','”'',‘'23'',“qq.},**p;inti:p=alpha;fbr(i=0;i<6;i++,p++)printf("%s”,*p);printfot");p=p-3;rintf(%c\t,*rintf(%c\t,*printf("\n");}.編程實(shí)現(xiàn)兩個(gè)字符串的比較,不用系統(tǒng)函數(shù)strcmp〇#include<stdio.h>voidmainQintstrcmp(char*pl,char*p2);inti;charstrl[10],str2[10];puts("請(qǐng)輸入兩個(gè)字符串:");puts("字符串1:”);gets(strl);puts("字符串2:”);gets(str2);printf("比較結(jié)果為:%d\nn,strcmp(strl,str2));intstrcmp(char*p1,char*p2)inti=0;while(*(p1+i)=*(p2+i)&&*(pl+i)!=O)i++;retum(*(pl+i)-*(p2+i));.編程實(shí)現(xiàn)對(duì)兩個(gè)字符串進(jìn)行交叉連接。例如:有兩個(gè)字符串“abed"、“1234”,交叉連接后結(jié)果為“alb2c3d4“0#include<stdio.h>voidmystrcat(char*s,char*ct)(while(*(s++));s-;while(*ct)*(s++)=*(ct++);*s=ヘ〇';)intmainQ(charna[100],nb[100];gets(na);gets(nb);mystrcat(na,nb);printf(n%s\nn,na);return0;)【實(shí)驗(yàn)解答】實(shí)驗(yàn)一指針的定義及使用I1)@a更a[0]②j==k ?aU][k]=l?Wa②&b2.1)程序功能:使用指針變量求解2個(gè)整數(shù)的升序輸出2)程序結(jié)果:263.編程并上機(jī)調(diào)試運(yùn)行(用指針編寫程序并上機(jī)驗(yàn)證)1)使用變量的指針作函數(shù)調(diào)用的實(shí)參,降序輸出3個(gè)整數(shù)。voidexchange(int*pointerl,int*pointer2){inttemp;

temp=*pointerl,*pointerl=*pointer2,temp=*pointerl,*pointerl=*pointer2,*pointer2=temp;/?主函數(shù)main()*/voidmainQ{intnum1,num2,num3;/?從鍵盤上輸入3個(gè)整數(shù)?/printf(nInputthefirstnumber:");scanf(“%d”,&numl);printff'Inputthesecondnumber:");seanf("%d”,&num2);printf(nInputthethirdnumber:n);seanf(“%d”,&num3);printf("numl=%d,num2=%d,num3=%d\n",numl,num2,num3);/?輸出3個(gè)變量的初值?//?排序?/iffnuml<num2)/*numl<num2*/exchange(&num1,&num2); /*扌旨針作實(shí)參調(diào)用函數(shù)exchange(),互換num1和num2的值ウiffnuml<num3)exchange(&num1,&num3);iffnum2<num3)exchange(&num2,&num3);/?輸出排序結(jié)果*/printf(n 排 序 結(jié)果:%d,%d,%d\nH,numl,num2,num3);)2)將數(shù)組a中的n個(gè)整數(shù)按相反順序存放。voidinv(int*x,intn)/?形參x為指針變量?/(int*p,temp,*i,*j,m=(n-1)/2;i=x;j=x+n-1;p=x+m;fdr(;i<=p;i++,j-){temp=*i;*i=*j;*j=temp;}return;}voidmainQ{inti,a[10]={3,7,9,ll,0,6,7,5,4,2};printffTheoriginalarray:\nn);fdr(i=0;i<10;i++)print位%d,”,a[i]);printf(”\n”);inv(a,10);printffThearrayhasbenninverted:\nn);fdr(i=0;i<10;i++)printf("%dJ,a[iD;print里'\n");}3)從7個(gè)數(shù)中找出其中最大值和最小值(用指針實(shí)現(xiàn))intmax,min;voidmax_min_value(intarray[],intn)int *p,*array_end;arrayend=array+n;max=min=*array;fbr(p=array+l;p<array_end;p++)if(*p>max) max=*p;elseiff*p<min)min=*p;voidmain()(inti,number[7];printf("enter 7data\n");fbr(i=0;i<7;i++)seanf("%dヽ&number[i]);max_min_value(number,7);printf("\nmax=%d,min=%d\n”,max,min);)4)編寫函數(shù)實(shí)現(xiàn)在字符數(shù)組w中插入字符x。函數(shù)原型是:voidfun(char*w,char*x,int*n);o說明:(1)假設(shè)w數(shù)組中的數(shù)已按由小到大順序存放;(2)n指向存儲(chǔ)單元中數(shù)組元素的個(gè)數(shù);(3)插入后數(shù)組中的數(shù)仍有序。voidfun(char*w,charx,int*n){inti,p;p=0;w[*n]=x;while(x>w[p])p++;fbr(i=*n;i>p;i—)w[i]=*(w+i-l);w[p]=x;++*n;)實(shí)驗(yàn)二指針的定義及使用II.運(yùn)行結(jié)果為:book①處填②處填ps+10①處填②處填ps+10③處填PS.程序功能:在輸入的字符串中查找有無ヤ,字符。.編程并上機(jī)調(diào)試運(yùn)行1)輸入5個(gè)國名并按字母順序排列后輸出#includenstring.hnvoidmain()(voidsort(char*name[],intn);voidprint(char*name[],intn);static char*nameロ={"CHINA”,“AMERICA",“AUSTRALIA”,"FRANCE","GERMANY'1};intn=5;sort(name,n);print(name,n);voidsort(char*name[],intn)char*pt;inti,j,k;fdr(i=O;i<n-l;i++)k=i;fbr(j=i+l;j<n;j++)if(strcmp(name[k],name[j])>0)k=j;if(k!=i)pt=name[i];name[i]=name[k];name[k]=pt;voidprint(char*name[],intn)inti;for(i=O;i<n;i++)printf(M%s\n,',name[i]);}2)編寫函數(shù)實(shí)現(xiàn)求某字符串的長(zhǎng)度,運(yùn)行時(shí)輸入字符串。#include<stdio.h>intlen(char*str)inti=0;while(*str++)i++;returni;voidmainQchars[80];intnum;gets(s);num=len(s);}print出"*d'',num);3)用函數(shù)調(diào)用方式,實(shí)現(xiàn)字符串的復(fù)制。voidstringcopy(char*str_from,char*str_to){inti=afor(:(*(strto+i尸?(strfrom+i))!—\0*;i++);/?循環(huán)標(biāo)為や語句?/V- 〃,丿,voidmain(){staticchararraystrl[20]=,,Iamateacher.";chararray_str2[20];stringcopy(array_strl,array_str2);/?數(shù)組名作賣參り ーーprintff'arraystr2=%s\n",array_str2);/*stringcopy。函數(shù):復(fù)制ー個(gè)字符串?//噌礬一容解奸strfrom接收源串,字符指針str_to存儲(chǔ)目標(biāo)小?Z一4)編寫函數(shù)將字符串s中的子字符串si全部替換為子字符串s2.用指針、函數(shù)實(shí)現(xiàn)。#include<stdio.h>#include<string.h>#deflneMAXLENGTH100voidreplace(char*s,char*sl,char*s2)(intlenl=strlen(s),len2=strlen(sl),len3=strlen(s2);charbuf{MAXLENGTH];inti,j,k,1;for(i=0,k=0;i<lenl-len2+l)(fbr(j=0;j<len2;j++)if(*(s+i+j)!=*(sl+j))break;埒==len2)(=0;while(l<len3)*(buRk++)=*(s2+l++);i+=len2;continue;}else(*(buf4-k++)=*(s+i++);)}while(i<lenl)*(buf4-k++)=*(s+i++);*(bu件k)=へ0,;strcpy(s,but);}voidmainQcharstr[MAXLENGTH]={NULL};charstrl[MAXLENGTH]={NULL};charstr2[MAXLENGTH]={NULL};printf("請(qǐng)輸入字符串s:\nn);gets(str);fflush(stdin);printf("請(qǐng)輸入字符串sl:\nn);gets(strl);fflush(stdin);printf("請(qǐng)輸入字符串s2:\nn);gets(str2);replace(str,strl,str2);printf("替換后的字符串:%s\nn,str);return0;5)將輸入的字符串逆序輸出。#include<stdio.h>#include<string.h>intfun(char*);intmainQchara[256];printギ請(qǐng)輸入字符串符”);gets(a);fun(a);printf("逆序轉(zhuǎn)換后的字符串是:\nり;puts(a);}intfun(char*s){intn,i;charc;n=strlen(s);printf(n%dn,n);fbr(i=0;i<=(n/2-1);i++)(c=*(s+i);*(s+i)=*(s+n-1-i);*(s+n-1-i尸c;}return0;6)將一個(gè)指針?biāo)赶蜃址械拇髮懽帜笍?fù)制到另ー個(gè)指針?biāo)赶虻淖址麛?shù)組中。#include<stdio.h>#defineN100voidfiin(char*strA,char*strB);voidmain(void)(charstrA[N];charstrB[N];printf("請(qǐng)輸入字符串:'n)gets(strA);fun(strA,strB);printf("復(fù)制后的字符串:'n”);puts(strB);voidfun(char*strA,char*strB)inti;intk=0;for(i=0;strA[i]!=*\0*;i++)if((strA[i]>='A')&&(strA[i]<=Z))(strB[k++]=strA[i];}}strB[k]=へ。’;2.9結(jié)構(gòu)體和共用體【習(xí)題解答】ー、選擇題1.B2.B3.C 4.A 5.A 6.D 7.C8.D 9.B10.D二、填空題1.structnode,p=person,p<q,high=p->high2.33412.33413.0三、編程題.定義描述日期(年、月、日)的結(jié)構(gòu)體類型。編寫函數(shù),以參數(shù)方式帶入某日期,計(jì)算相應(yīng)日起在相應(yīng)年是第幾天,并以函數(shù)值形式帶回。#include<stdio.h>structdat(intyear,month,day;);voidcalculate(structdat*);voidmain()(intn;structdatdate;printff'pleaseinputyear:");seanff'%d",date.year);printff'pleaseinputyear:");scanf("%d",date.month);printf(<<pleaseinputyear:");scanf(u%d",date.day);calculate(&date);}voidcalculate(structdat*date){inta,b,c,i;intsum=0;a=date->year;b=date->month;c=date->day;if((a%4=0)&&(a%100!=0)||(a%400=0))(fbr(i=O;i<b;i++){i=8&&i=10)if(i==l&&i==3&&i==5&&i==7&&i=8&&i=10)sum+=31;elseif(i=2)sum+=29;elsesum+=30;sum+=c;if((a%4!=0)11(a%100==0)&&(a%400!=0)fbr(i=0;i<b;i++)(if(i=l&&i==3&&i==5&&i==7&&i==8&&i==l0)sum+=31;elseif(i=2)sum十=28;elsesum+=30;}sum=sum+c;})printf(u%d\n,,,sum);}}.建立簡(jiǎn)單的同學(xué)通訊錄,輸入并存放10個(gè)同學(xué)的通訊信息,通訊錄信息包括姓名、電話號(hào)碼、電子郵箱。#include<stdio.h>#defineNUM20structmemcharname[20];charphone[10];ouoqdBUPUIoEPU.三UPUIぜて%5\s%ぞ\s%k1UK(++KSつNvo丄)eYu\u\ouoqd2て1up尸^uud|-こPPP.Hcpunsお8乂UYSSDJPPP一nd.skWLIdxouoqd?〔エupui)sおg乂u\ouoqdlnd.swWHdKoluplrsupul)SJggXU\6UWU一nd.sレjjutid}(+-tnnNvo.!l)」OJ-rw

「nflN-UPUI£06ー。己JS)

OUIPLUp.OA

二〇〇ー匸pppJpq。man[i].addr);.有10個(gè)選舉人,3個(gè)候選人,每人只能投ー個(gè)候選人的票,統(tǒng)計(jì)每個(gè)候選人的總票數(shù)。#include<stdio.h>#include<string.h>structperson(charname[10];intcount;}leader[3]={"zhang",〇,"wang“Q“l(fā)i",〇};voidmain()inti,j;charleader_name[10];for(i=l;i<=10;i++)(scanff'%s,lead_name);for(j=0;j<3;j++)if(strcmp(lead_name,leader[j].name)==O)leader[j].count++;)for(j=0;j<3;j++)printff'%8s:%d\n”,leader][name,leader1].count);).利用共用體的特點(diǎn),分別取出int變量中高字節(jié)和低字節(jié)中兩個(gè)數(shù)據(jù)。#include<stdio.h>unionword(charch[2];intn;};voidmain()unionwordw;w.n=0xl234;printf(uthelowis=%x\n,,,w.ch[0]);printf(Hthehighis=%x\n,1,w.ch[l]);w.ch[0]=,a,;printff'thenumberis%x\n",w.n);}.動(dòng)態(tài)分配ー塊內(nèi)存區(qū)域,輸入并存放ー個(gè)學(xué)生的數(shù)據(jù),學(xué)生數(shù)據(jù)包括學(xué)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論