C語言程序設(shè)計(jì)習(xí)題試題(編程題)_第1頁
C語言程序設(shè)計(jì)習(xí)題試題(編程題)_第2頁
C語言程序設(shè)計(jì)習(xí)題試題(編程題)_第3頁
C語言程序設(shè)計(jì)習(xí)題試題(編程題)_第4頁
C語言程序設(shè)計(jì)習(xí)題試題(編程題)_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 llC語言程序設(shè)計(jì)習(xí)題(編程類)1、從鍵盤輸入任意的字符,按下列規(guī)則進(jìn)行分類計(jì)數(shù)。第一類0,1,2,3,4,5,6,7,8,9第二類+,-,*,/,%,=第三類其它字符當(dāng)輸入字符時(shí)先計(jì)數(shù),然后停止接收輸入,打印計(jì)數(shù)的結(jié)果。參考答案:#includevoidmain()intclass1,class2,class3;charch;class1=class2=class3=0;/*初始化分類計(jì)數(shù)器*/doch=getch();switch(ch)case0:case1:case2:case3:case4:case5:case6:case7:case8:case9:classl+;break;/*

2、對(duì)分類1計(jì)數(shù)*/case+:case-:case*:case/:case%:case=:class2+;break;/*對(duì)分類2計(jì)數(shù)*/default:class3+;break;/*對(duì)分類3計(jì)數(shù)*/while(ch!=);/*字符在C程序中要使用轉(zhuǎn)義符*/printf(classl=%d,class2=%d,class3=%dn,classl,class2,class3);2、從鍵盤輸入十個(gè)整數(shù),用插入法對(duì)輸入的數(shù)據(jù)按照從小到大的順序進(jìn)行排序,將排序后的結(jié)果輸出。參考答案:voidmain()inti,j,num,al0;for(i=0;i=0&ajnum;j-)aj+l=aj;aj+l=n

3、um;for(i=0;i0)printf(%d,n%10);n=n/10;4、編寫程序,讀入一個(gè)整數(shù)N;若N為非負(fù)數(shù),則計(jì)算N到2XN之間的整數(shù)和;若N為一個(gè)負(fù)數(shù),則求2XN到N之間的整數(shù)和。分別利用for和while寫出兩個(gè)程序。參考答案:voidmain()inti,n;longs1=0,s2=0;printf(PleaseenterN:);scanf(%d,&n);if(n=0)for(i=n;i=2*n;i-)s1=s1+i;i=n;if(i=0)while(i=2*n)s2=s2+i-;printf(Result1=%ldresult2=%ldn,s1,s2);5、一個(gè)自然數(shù)被8除余

4、1,所得的商被8除也余1,再將第二次的商被8除后余7,最后得到一個(gè)商為a。又知這個(gè)自然數(shù)被17除余4,所得的商被17除余15,最后得到一個(gè)商是a的2倍。編寫程序求這個(gè)自然數(shù)。參考答案:voidmain()inti,n,a;for(i=0;i+)if(i%8=1)n=i/8;if(n%8=1)n=n/8;if(n%8=7)a=n/8;if(i%17=4)n=i/17;if(n%17=15)n=n/17;if(2*a=n)printf(result=%dn,i)break;6、編寫程序,輸出用一元人民幣兌換成1分、2分和5分硬幣的不同兌換方法。參考答案:voidmain()intf1,f2,f5,

5、count=0;for(f5=0;f5=20;f5+)for(f2=0;f25:%4d2:%2d1:%2dn,+count,f5,f2,f1);7、將一個(gè)數(shù)的數(shù)碼倒過來所得到的新數(shù)叫原數(shù)的反序數(shù)。如果一個(gè)數(shù)等于它的反序數(shù),則稱它為對(duì)稱數(shù)。求不超過1993的最大的二進(jìn)制的對(duì)稱數(shù)。參考答案:voidmain()inti,j,n,k,a16=0;for(i=1;i0)/*將十進(jìn)制數(shù)轉(zhuǎn)變?yōu)槎M(jìn)制數(shù)*/ak+=n%2;n=n/2;for(j=0;j=k)printf(%d:,i);for(j=0;jk;j+)printf(%2d,aj);printf(n);8、十個(gè)小孩圍成一圈分糖果,老師分給第一個(gè)小孩

6、10塊,第二個(gè)小孩2塊,第三個(gè)小孩8塊,第四個(gè)小孩22塊,第五個(gè)小孩16塊,第六個(gè)小孩4塊,第七個(gè)小孩10塊,第八個(gè)小孩6塊,第九個(gè)小孩14塊,第十個(gè)小孩20塊。然后所有的小孩同時(shí)將自己手中的糖分一半給右邊的小孩;糖塊數(shù)為奇數(shù)的人可向老師要一塊。問經(jīng)過這樣幾次調(diào)整后大家手中的糖的塊數(shù)都一樣?每人各有多少塊糖?參考答案:voidmain()inti,count=0,a11=0,10,2,8,22,16,4,10,6,14,20;while(1)for(i=1;i=10;i+)ai-1=ai-1/2+ai/2;a10=a10/2+a0;for(i=1;i=10;i+)if(ai%2=1)ai+;f

7、or(i=1;i10;i+)if(ai!=ai+1)break;if(i=10)break;elsea0=0;count+;printf(count=%dnumber=%dn,count,a1);9、輸入5X5的數(shù)組,編寫程序?qū)崿F(xiàn):求出對(duì)角線上各元素的和;求出對(duì)角線上行、列下標(biāo)均為偶數(shù)的各元素的積;找出對(duì)角線上其值最大的元素和它在數(shù)組中的位置。參考答案:voidmain()inti,j,s1=0,s2=1,a55;for(i=0;i5;i+)for(j=0;j5;j+)printf(%d%d:,i,j);scanf(%d,&aij);for(i=0;i5;i+)for(j=0;j5;j+)pr

8、intf(%5d,aij);printf(n);j=0;for(i=0;iajj)j=i;printf(SUN=%dnACCOM=%dna%d=%dn,s1,s2,j,ajj)10、編寫程序,以字符形式輸入一個(gè)十六進(jìn)制數(shù),將其變換為一個(gè)十進(jìn)制整數(shù)后輸出。參考答案:#includestdio.hvoidmain()inti,n=0,a4=0;printf(Pleaseenteradigit:);for(i=0;i4&(ai=getchar()!=n;i+);for(i=0;i=48&ai=65&ai=97&ai=102)ai=ai-87;elseprintf(inputError!);for(i

9、=0;i0)/*將十進(jìn)制數(shù)轉(zhuǎn)變?yōu)槎M(jìn)制數(shù)*/a-k=n%2;n=n/2;for(i=0;i16;i+)printf(%2d,ai);12、對(duì)數(shù)組A中的N(0VNV100=個(gè)整數(shù)從小到大進(jìn)行連續(xù)編號(hào),輸出各個(gè)元素的編號(hào)。要求不能改變數(shù)組A中元素的順序,且相同的整數(shù)要具有相同的編號(hào)。例如數(shù)組是:A=(5,3,4,7,3,5,6)則輸出為:(3,1,2,5,1,3,4)參考答案:voidmain()inti,j,k,n,m=1,r=1,a2100=0;printf(Pleaseentern:);scanf(%d,&n);for(i=0;in;i+)printf(a%d=,i);scanf(%d,&a

10、0i);while(mv=n)/*m記錄已經(jīng)登記過的數(shù)的個(gè)數(shù)*/for(i=0;in;i+)/*記錄未登記過的數(shù)的大小*/if(a1i!=0)/*已登記過的數(shù)空過*/continue;k=i;for(j=i;jn;j+)/*在未登記過數(shù)中找最小數(shù)*/if(a1j=0&a0ja0k)k=j;a1k=r+;/*記錄名次,r為名次*/m+;/*登記過的數(shù)增1*/for(j=0;jn;j+)/*記錄同名次*/if(a1j=0&a0j=a0k)a1j=a1k;m+;break;for(i=0;in;i+)printf(a%d=%d,%dn,i,a0i,a1i);13、求這樣一個(gè)三位數(shù),該三位數(shù)等于其每位

11、數(shù)字的階乘之和。即:abc=a!+b!+c!參考答案:voidmain()inta5,i,t,k;for(i=100;i=10;t+)at=(i%k)/(k/10);k/=10;if(f(a0)+f(a1)+f(a2)=i)printf(%d,i);f(m)intm;inti=0,t=1;while(+i=m)t*=i;return(t);14、編寫一個(gè)函數(shù)實(shí)現(xiàn)將字符串strl和字符串str2合并,合并后的字符串按其ASCII碼值從小到大進(jìn)行排序,相同的字符在新字符串中只出現(xiàn)一次。參考答案:#includestring.hstrcmbn(a,b,c)/*數(shù)組合并函數(shù):將數(shù)組a、b合并到*/ch

12、ara,b,c;chartmp;inti,j,k,m,n;m=strlen(a);n=strlen(b);for(i=0;ivm-1;i+)/*對(duì)數(shù)組a排序*/for(j=i+1,k=i;jm;j+)if(ajak)k=j;tmp=ai;ai=ak;ak=tmp;for(i=0;ivn-1;i+)/*對(duì)數(shù)組b排序*/for(j=i+1,k=i;jn;j+)if(bjbk)k=j;tmp=bi;bi=bk;bk=tmp;i=0;j=0;k=0;while(im&jbj)ck+=bj+;/*將ai、bj中的小者存入ck*/elseck+=ai+;if(ai-1=bj)j+;/*如果a、b當(dāng)前元素相

13、等,刪掉一個(gè)*/while(im)ck+=ai+;/*將a或b中剩余的數(shù)存入c*/while(j0)ak=n%2;turn(n/2,a,k-1);elsereturn;voidmain()inti,n,a16=0;printf(nPleaseentern:);scanf(%d,&n);turn(n,a,15);for(i=0;i16;i+)printf(%d,ai);17、將一個(gè)數(shù)的數(shù)碼倒過來所得到的新數(shù),叫作原數(shù)的反序數(shù),如果一個(gè)數(shù)等于它的反序數(shù),則稱它為對(duì)稱數(shù)。編寫程序,采用遞歸算法求不超過1993的最大的二進(jìn)制的對(duì)稱數(shù)。參考答案:smmt(chars)/*指針s指向字符串的第一個(gè)字符*/

14、char*p;p=s;while(*p!=0)p+;p-;/*指針p指向字符串的最后一個(gè)字符*/if(p=s)return(1);/*兩個(gè)指針指向同一個(gè)字符表示字符串對(duì)稱*/elseif(*s!=*p)return(0);/*兩個(gè)指針指向字符不等表示字符串不對(duì)稱*/else*p=0;smmt(s+1);/*取掉首尾比較過的字符繼續(xù)比較*/18、編寫程序,讀入一個(gè)以符號(hào).結(jié)束的長度小于20字節(jié)的英文句子,檢查其是否為回文(即正讀和反讀都是一樣的,不考慮空格和標(biāo)點(diǎn)符號(hào))。例如:讀入句子:MADAMIMADAM.它是回文,所以輸出:YES讀入句子:ABCDBA).它不是回文,所以輸出:NO參考答案:

15、#includestdio.hvoidmain()chars21,*p,*q;gets(s);p=s;q=s;while(*q!=0)q+;q-=2;while(p=q)printf(YESn);19、編寫程序,其中包括一個(gè)函數(shù),此函數(shù)的功能是:對(duì)一個(gè)長度為N的字符串從其第K個(gè)字符起,刪去M個(gè)字符,組成長度為N-M的新字符串(其中N、Mv=80,Kv=N)。例如輸入字符串”Wearepoorstudents.,利用此函數(shù)進(jìn)行刪除”poor的處理,輸出處理后的字符串是Wearestudents.。參考答案:strcut(s,m,k)chars;intm,k;char*p;inti;p=s+m;/

16、*指針p指向要被刪除的字符*/while(*p=*(p+k)!=0)/*p+k指向要前移的字符*/p+;20、編寫一個(gè)函數(shù)insert(sl,s2,ch),實(shí)現(xiàn)在字符串si中的指定字符ch位置處插入字符串s2。參考答案:insert(sl,s2,ch)charsl,s2,ch;char*p,*q;p=sl;while(*p+!=ch);while(*s2!=0)q=p;while(*q!=0)q+;while(q=p)*(q+l)=*q-;*+q=*s2+;p+;21、編寫程序?qū)⑤斎氲膬尚凶址B接后,將串中全部空格移到串首后輸出。參考答案:strcnb(s1,s2)chars1,s2;cha

17、r*p;inti=1;p=s1;while(*p!=0)p+;while(*p+=*s2+)!=0);/*將s2接于s1后面*/p=s1;while(*p!=0)/*掃描整個(gè)字符串*/if(*p=)/*當(dāng)前字符是空格進(jìn)行移位*/while(*(p+i)=)i+;/*尋找當(dāng)前字符后面的第一個(gè)非空格*/if(*(p+i)!=0)*p=*(p+i);/*將非空格移于當(dāng)前字符處*/*(p+i)=;/*被移字符處換為空格*/elsebreak;/*尋找非空格時(shí)到字符串尾,移位過程結(jié)束*/p+;22、編寫程序,輸入字符串,分別統(tǒng)計(jì)字符串中所包含的各個(gè)不同的字符及其各自字符的數(shù)量。如:輸入字符串:abced

18、abcdcd則輸出:a=2b=2c=3d=3e=l。參考答案:#includestdio.hstructstrnuminti;charch;voidmain()charc;inti=0,k=0;structstrnums100=0,NULL;while(c=getchar()!=n)for(i=0;si.i!=0;i+)if(c=si.ch)si.i+;break;if(si.i=0)sk.ch=c;sk+.i=1;i=0;while(si.i0)printf(%c=%d,si.ch,si.i);i+;23、編寫程序,讀入磁盤上C語言源程序文件test8.c,刪去程序中的注釋后顯示。參考答案:#includestdio.hFILE*fp;voidmain()intc,d;if(fp=fopen(d:tctest8.c,r)=NULL)exit(0);while(c=fgetc(fp)!=EOF)if(c=/)/*如果是字符注釋的起始字符/*/if(d=fgetc(fp)=*)/*則判斷下一個(gè)字符是否為*/in_comment();/*調(diào)用函數(shù)處理(刪除)注釋*/else/*否則原樣輸出讀入的兩個(gè)字符*/putchar(c);putchar(d);elseif(c=|c=)/*判斷是否是字符或*/echo_quote(c);/*調(diào)用函數(shù)處理字符或包含

溫馨提示

  • 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)論