版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C語(yǔ)言程序設(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é)果。參考答案:#include &
2、lt;stdio.h>void main( ) int class1, class2, class3;char ch;class1=class2=class3=0; /* 初始化分類計(jì)數(shù)器 */do ch=getch( );switch(ch) case '0': case '1': case '2': case '3': case '4':case '5': case '6': case '7': case '8': case '9
3、39;:class1+; break; /* 對(duì)分類計(jì)數(shù) */case '+': case '-': case '*': case '/': case '%': case '=':class2+; break; /* 對(duì)分類計(jì)數(shù) */default: class3+; break; /* 對(duì)分類計(jì)數(shù) */while (ch!= ''); /* 字符''在C程序中要使用轉(zhuǎn)義符'' */printf("class1=%d, class2=%d,
4、class3=%dn", class1, class2, class3);2、從鍵盤輸入十個(gè)整數(shù),用插入法對(duì)輸入的數(shù)據(jù)按照從小到大的順序進(jìn)行排序,將排序后的結(jié)果輸出。參考答案:void main( ) int i,j,num,a10;for(i=0;i<10;i+) printf("Enter No. %d:", i+1);scanf("%d",&num);for(j=i-1;j>=0&&aj>num;j-)aj+1=aj;aj+1=num;for(i=0;i<10;i+)printf (&quo
5、t;No.%d=%dn", i+1, ai);3、輸入一個(gè)正整數(shù),要求以相反的順序輸出該數(shù)。例如輸入12345,輸出位54321。參考答案:void main() int n;printf("Please enter n:");scanf("%d",&n);while(n>0) printf("%d",n%10);n=n/10; 4、編寫程序,讀入一個(gè)整數(shù);若為非負(fù)數(shù),則計(jì)算到2×之間的整數(shù)和;若為一個(gè)負(fù)數(shù),則求×到之間的整數(shù)和。分別利用for和while寫出兩個(gè)程序。參考答案:void m
6、ain() int i,n;long s1=0,s2=0;printf("Please enter N:");scanf("%d",&n);if(n>=0)for(i=n;i<=2*n;i+)s1=s1+i;elsefor(i=n;i>=2*n;i-)s1=s1+i;i=n;if(i>=0)while(i<=2*n)s2=s2+i+;elsewhile(i>=2*n)s2=s2+i-;printf("Result1=%ld result2=%ldn",s1,s2);5、一個(gè)自然數(shù)被8除余1,
7、所得的商被8除也余1,再將第二次的商被8除后余7,最后得到一個(gè)商為。又知這個(gè)自然數(shù)被17除余4,所得的商被17除余15,最后得到一個(gè)商是的2倍。編寫程序求這個(gè)自然數(shù)。參考答案:void main( ) int i,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分硬幣的不同兌換方法。參考答案:
8、void main( ) int f1,f2,f5,count=0;for(f5=0;f5<=20;f5+)for(f2=0;f2<=(100-f5*5)/2;f2+) f1=100-f5*5-f2*2;if(f5*5+f2*2+f1=100)printf("No.%2d >> 5: %4d 2: %2d 1: %2dn",+count,f5,f2,f1); 7、將一個(gè)數(shù)的數(shù)碼倒過來所得到的新數(shù)叫原數(shù)的反序數(shù)。如果一個(gè)數(shù)等于它的反序數(shù),則稱它為對(duì)稱數(shù)。求不超過1993的最大的二進(jìn)制的對(duì)稱數(shù)。參考答案:void main() int i,j,n,k,a
9、16=0;for(i=1;i<=1993;i+) n=i;k=0;while(n>0) /* 將十進(jìn)制數(shù)轉(zhuǎn)變?yōu)槎M(jìn)制數(shù) */ ak+=n%2;n=n/2;for(j=0;j<k;j+)if(aj!=ak-j-1) break;if(j>=k) printf(" %d: ",i);for(j=0;j<k;j+)printf("%2d",aj);printf("n"); 8、十個(gè)小孩圍成一圈分糖果,老師分給第一個(gè)小孩10塊,第二個(gè)小孩2塊,第三個(gè)小孩8塊,第四個(gè)小孩22塊,第五個(gè)小孩16塊,第六個(gè)小孩4塊,第
10、七個(gè)小孩10塊,第八個(gè)小孩6塊,第九個(gè)小孩14 塊,第十個(gè)小孩20塊。然后所有的小孩同時(shí)將自己手中的糖分一半給右邊的小孩;糖塊數(shù)為奇數(shù)的人可向老師要一塊。問經(jīng)過這樣幾次調(diào)整后大家手中的糖的塊數(shù)都一樣?每人各有多少塊糖?參考答案:void main() int i,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+;for(i=1;i<10;i+)if(ai!=ai+1) br
11、eak;if(i=10) break;else a0=0;count+;printf("count=%d number=%dn",count,a1);9、輸入5×5的數(shù)組,編寫程序?qū)崿F(xiàn):(1)求出對(duì)角線上各元素的和;(2)求出對(duì)角線上行、列下標(biāo)均為偶數(shù)的各元素的積;(3)找出對(duì)角線上其值最大的元素和它在數(shù)組中的位置。參考答案:void main() int i,j,s1=0,s2=1,a55;for(i=0;i<5;i+)for(j=0;j<5;j+) printf("%d %d: ",i,j);scanf("%d&quo
12、t;,&aij);for(i=0;i<5;i+) for(j=0;j<5;j+)printf("%5d",aij);printf("n");j=0;for(i=0;i<5;i+) s1=s1+aii;if(i%2=0) s2=s2*aii;if(aii>ajj) j=i;printf("SUN=%dnACCOM=%dna%d=%dn",s1,s2,j,ajj); 10、編寫程序,以字符形式輸入一個(gè)十六進(jìn)制數(shù),將其變換為一個(gè)十進(jìn)制整數(shù)后輸出。參考答案:#include "stdio.h"
13、;void main() int i,n=0,a4=0;printf("Please enter a digit:");for(i=0;i<4 && (ai=getchar()!='n';i+) ;for(i=0;i<4;i+)if(ai>=48&&ai<=57) ai=ai-48;else if(ai>=65&&ai<=69) ai=ai-55;else if(ai>=97&&ai<=102) ai=ai-87;else printf("
14、;input Error!");for(i=0;i<4;i+)n=n*16+ai;printf("%d",n); 11、編寫程序,輸入一個(gè)十進(jìn)制整數(shù),將其變換為二進(jìn)制后儲(chǔ)存在一個(gè)字符數(shù)組中。參考答案:void main() int i,n,k=16,a16=0;printf("Please enter a digit:");scanf("%d",&n);while(n>0) /* 將十進(jìn)制數(shù)轉(zhuǎn)變?yōu)槎M(jìn)制數(shù) */ a-k=n%2;n=n/2;for(i=0;i<16;i+)printf("%
15、2d",ai); 12、對(duì)數(shù)組A中的N(0N100個(gè)整數(shù)從小到大進(jìn)行連續(xù)編號(hào),輸出各個(gè)元素的編號(hào)。要求不能改變數(shù)組中元素的順序,且相同的整數(shù)要具有相同的編號(hào)。例如數(shù)組是:A=(5,3,4,7,3,5,6) 則輸出為:(3,1,2,5,1,3,4)參考答案:void main() int i,j,k,n,m=1,r=1,a2100=0; printf("Please enter n:");scanf("%d",&n);for(i=0;i<n;i+) printf("a%d= ",i);scanf("%d
16、",&a0i);while(m<=n) /* m記錄已經(jīng)登記過的數(shù)的個(gè)數(shù) */ for(i=0;i<n;i+) /* 記錄未登記過的數(shù)的大小 */ if(a1i!=0) /* 已登記過的數(shù)空過 */continue;k=i;for(j=i;j<n;j+) /* 在未登記過數(shù)中找最小數(shù) */if(a1j=0 && a0j<a0k) k=j;a1k=r+; /* 記錄名次,r為名次 */m+; /* 登記過的數(shù)增1 */for(j=0;j<n;j+) /* 記錄同名次 */if(a1j=0 && a0j=a0k) a1
17、j=a1k;m+;break;for(i=0;i<n;i+)printf("a%d=%d, %dn",i,a0i,a1i);13、求這樣一個(gè)三位數(shù),該三位數(shù)等于其每位數(shù)字的階乘之和。即:abc = a! + b! + c!參考答案:void main() int a5,i,t,k;for (i=100;i<1000;i+) for(t=0,k=1000;k>=10;t+) at=(i%k)/(k/10);k/=10;if(f(a0)+f(a1)+f(a2)=i)printf("%d ",i);f(m)int m; int i=0,t=1
18、;while(+i<=m) t*=i;return(t); 14、編寫一個(gè)函數(shù)實(shí)現(xiàn)將字符串str1和字符串str2合并,合并后的字符串按其ASCII碼值從小到大進(jìn)行排序,相同的字符在新字符串中只出現(xiàn)一次。參考答案:#include "string.h"strcmbn(a,b,c) /* 數(shù)組合并函數(shù):將數(shù)組a、b合并到 */char a,b,c; char tmp;int i,j,k,m,n;m=strlen(a);n=strlen(b);for(i=0;i<m-1;i+) /* 對(duì)數(shù)組a排序 */ for(j=i+1,k=i;j<m;j+)if(aj&l
19、t;ak) k=j;tmp=ai; ai=ak; ak=tmp;for(i=0;i<n-1;i+) /* 對(duì)數(shù)組b排序 */ for(j=i+1,k=i;j<n;j+)if(bj<bk) k=j;tmp=bi; bi=bk; bk=tmp;i=0;j=0;k=0;while(i<m&&j<n) /* 合并 */if(ai>bj)ck+=bj+; /* 將ai、bj中的小者存入ck */else ck+=ai+; if(ai-1=bj) j+; /* 如果a、b當(dāng)前元素相等,刪掉一個(gè) */while(i<m) ck+=ai+; /* 將a
20、或b中剩余的數(shù)存入c */while(j<n) ck+=bj+;ck='0';15、編寫函數(shù),采用遞歸方法實(shí)現(xiàn)將輸入的字符串按反序輸出。參考答案:#include "stdio.h"strout(s)char *s; if(*s!='0') strout(s+1); /* 遞歸調(diào)用strout函數(shù),字符串首地址前移一個(gè)字符 */putch(*s); /* 輸出字符串首地址所指向的字符 */else return; /* 遇到字符串結(jié)束標(biāo)志結(jié)束遞歸調(diào)用 */16、編寫函數(shù),采用遞歸方法將任一整數(shù)轉(zhuǎn)換為二進(jìn)制形式。參考答案:turn(n,a
21、,k)int n,a ,k; if(n>0) ak=n%2;turn(n/2,a,k-1);else return;void main() int i,n,a16=0;printf("nPlease enter n:");scanf("%d",&n);turn(n,a,15);for(i=0;i<16;i+)printf("%d",ai);17、將一個(gè)數(shù)的數(shù)碼倒過來所得到的新數(shù),叫作原數(shù)的反序數(shù),如果一個(gè)數(shù)等于它的反序數(shù),則稱它為對(duì)稱數(shù)。編寫程序,采用遞歸算法求不超過1993的最大的二進(jìn)制的對(duì)稱數(shù)。參考答案:smm
22、t ( char s ) /* 指針s指向字符串的第一個(gè)字符 */ char *p;p=s;while(*p!='0') p+;p-; /* 指針p指向字符串的最后一個(gè)字符 */if(p=s) return(1); /* 兩個(gè)指針指向同一個(gè)字符表示字符串對(duì)稱 */else if(*s!=*p) return(0); /* 兩個(gè)指針指向字符不等表示字符串不對(duì)稱 */else *p='0';smmt(s+1); /* 取掉首尾比較過的字符繼續(xù)比較 */18、編寫程序,讀入一個(gè)以符號(hào)"."結(jié)束的長(zhǎng)度小于20字節(jié)的英文句子,檢查其是否為回文(即正讀和
23、反讀都是一樣的,不考慮空格和標(biāo)點(diǎn)符號(hào))。例如: 讀入句子:MADAM I'M ADAM. 它是回文,所以輸出:YES讀入句子:ABCDBA). 它不是回文,所以輸出:NO參考答案:#include "stdio.h"void main( ) char s21,*p,*q;gets(s);p=s;q=s;while(*q!='0') q+;q-=2;while(p<q) /* 指針p指向字符串首,指針q指向串未 */if(*p+ != *q-) /* 指針p、q同時(shí)向中間移動(dòng),比較對(duì)稱的兩個(gè)字符 */ printf("NOn"
24、);break;if(p>=q)printf("YESn");19、編寫程序,其中包括一個(gè)函數(shù),此函數(shù)的功能是:對(duì)一個(gè)長(zhǎng)度為N 的字符串從其第K個(gè)字符起,刪去M個(gè)字符,組成長(zhǎng)度為N-M的新字符串(其中N、M<=80,K<=N)。例如輸入字符串"We are poor students.",利用此函數(shù)進(jìn)行刪除"poor"的處理,輸出處理后的字符串是"We are students."。參考答案:strcut(s,m,k)char s ;int m,k; char *p;int i;p=s+m; /*
25、 指針p指向要被刪除的字符 */while(*p=*(p+k)!='0') /* p+k指向要前移的字符 */p+;20、編寫一個(gè)函數(shù)insert(s1,s2,ch),實(shí)現(xiàn)在字符串s1中的指定字符ch位置處插入字符串s2。參考答案:insert(s1,s2,ch)char s1,s2,ch; char *p,*q;p=s1;while(*p+!=ch) ;while(*s2!='0') q=p;while(*q!='0') q+;while(q>=p)*(q+1)=*q-;*+q=*s2+;p+;21、編寫程序?qū)⑤斎氲膬尚凶址B接后,將串
26、中全部空格移到串首后輸出。參考答案:strcnb(s1,s2)char s1,s2; char *p;int i=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)
27、; /* 將非空格移于當(dāng)前字符處 */*(p+i)=' '; /* 被移字符處換為空格 */else break; /* 尋找非空格時(shí)到字符串尾,移位過程結(jié)束 */p+;22、編寫程序,輸入字符串,分別統(tǒng)計(jì)字符串中所包含的各個(gè)不同的字符及其各自字符的數(shù)量。如:輸入字符串: abcedabcdcd則輸出:a=2 b=2 c=3 d=3 e=1。參考答案:#include "stdio.h"struct strnum int i;char ch;void main( ) char c;int i=0,k=0;struct strnum s100=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.i>0) printf("%c=%d &
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 第二章 脊柱疾病的分類與檢查法課件
- 第二章 動(dòng)物的運(yùn)動(dòng)和行為-復(fù)習(xí)課件
- 浙教版2021-2022學(xué)年度七年級(jí)數(shù)學(xué)上冊(cè)模擬測(cè)試卷 (827)【含簡(jiǎn)略答案】
- Mesotrione-Standard-生命科學(xué)試劑-MCE
- 工程質(zhì)量管理責(zé)任追究制度
- 財(cái)務(wù)半年的工作總結(jié)三篇-半年工作總結(jié)
- 教師節(jié)音樂課程設(shè)計(jì)
- 公司員工生日驚喜策劃方案
- 教師培訓(xùn)國(guó)畫課程設(shè)計(jì)
- 教師專業(yè)發(fā)展課程設(shè)計(jì)
- 信息可視化概述課件
- DB61-224-2018陜西省黃河流域污水綜合排放標(biāo)準(zhǔn)
- 我會(huì)洗手(洗手知識(shí)科普)課件
- 【教學(xué)課件】第3單元《土和火的藝術(shù)》示范課件
- (新高考)高考英語(yǔ)基礎(chǔ)知識(shí)默寫本必修第二冊(cè) Unit 1 Cultural Heritage
- 小學(xué)生新聞播報(bào)動(dòng)態(tài)PPT
- 中藥藥理學(xué)(全套課件)
- 冀教版年級(jí)數(shù)學(xué)下冊(cè)期末考試試卷分析
- 魯科版五四制七年級(jí)上冊(cè)生物全冊(cè)單元測(cè)試卷
- 如何-我為什么選擇安惠
- 同意未成年人姓名變更的聲明
評(píng)論
0/150
提交評(píng)論