




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、本文檔如對你有幫助,請幫忙下載支持!C語言程序設計習題(編程類)1、從鍵盤輸入任意的字符,按下列規則進行分類計數。0 , 1 , 2 , 3 , 4 , 5 , 6,7 , 8 , 9其它字符第一類includestdio. h void main() int classl, class2, class3 ; char ch ; classl=class2=class3=0; /* 初始化分類計數器 do ch=getch( ) ; switch(ch)*/ case O : case 1 : case 2, : case 3:case 4 : case 5 : case 6 : case T
2、 :case 8 : case 9: classl+; break; /* 對分類 1 計數 */ case + : case - : case * : case /: case % : case 二:/*對分類2計數*/class2+; break; /*對分類 3 計數 */break ; default:class3+ ;)用h訂e (ch!二/*字符在C程序中要使用轉義符 */第二類 第三類參考答案:printf(z/classl=%d, class2=%d, class3=%dn/z, classl, class2, class3) ;12、從鍵盤輸入十個整數,用插入法對輸入的數據按
3、照從小到大的順序進行排序,將排序后的結果輸出。 參考答案:void main() int i, j, num, a10 ; for(i=0 ; i二0&ajnum ; j- -)aj+l=aj ; aj+l=num ;for (i=0 ; i0) printf (,z%dz/, n%10) ;n=n/10; n4、編寫程序,讀入一個整數N;若N為非負數,則計算N到2XN之間的整數和;若N為一個負數,則求2XN到N之間的整數和。分別利用for和wh訂e寫出兩個程序。參考答案:void main() int i, n ;long sl=0, s2=0 ; printf (z,Please ente
4、r N:) ; scanf(d,&n) ; if(n二0) for (i=n ; i二2*n : i)sl=sl+i ;i=n;if(i 二 0)wh 訂 e(i=2*n)s2=s2+i-;printf (Resultl=%ld result2=%ldn,z, si, s2);)5、一個自然數被8除余1,所得的商被8除也余1,再將第二次的商被8除后余7,最后得到一個商 為a。又知這個自然數被17除余4, ?所得的商被17除余15,最后得到一個商是a的2倍。編寫程序求 這個自然數。參考答案:void main( ) int i, n, a ; for (i=0 ;i+) if(i%8二二1) n
5、=i/8 ; if(n%8=l) 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 (/zresuIt二%dn,i):break;)6、編寫程序,輸出用一元人民幣兌換成1分、2分和5分硬幣的不同兌換方法。參考答案:void main() int fl, f2, f5, count二0 ;for (f5=0 ; f5二20 ; f5+)for (f2=0 ; f2二(100-f5*5)/2 : f2+) fl二 100-f5*5-f2*2 ; if (f5*5+f2*2+f
6、1=100) printf (/zNo. %2d 5: %4d 2: %2d1: %2drT, +count, f5, f2, fl);)7、將一個數的數碼倒過來所得到的新數叫原數的反序數。如果一個數等于它的反序數,則稱它為對稱 數。求不超過1993的最大的二進制的對稱數。參考答案:void main() inti, j, n, k, a160 ; for (i=l ;i0) /*將十進制數轉變為二進制數 ak+=n%2 ;n=n/2 ;)*/for(j=0 ; j=k) printf (/z %d: “,i) ; for (j=0 ;jk ; j+) printf (2d,&j);print
7、f(zzn/z);小8、十個小孩圍成一圈分糖果,孩8塊,第四個小孩22塊,八個小孩6塊,第九個小孩老師分給第一個小孩10塊,第二個小孩2塊,第三個小第五個小孩16塊,第六個小孩4塊,第七個小孩10塊,第14塊,第十個小孩20塊。然后所有的小孩同時將自己手中 的糖分一半給右邊的小孩;糖塊數為奇數的人可向老師要一塊。問經過這樣幾次調整后 大家手中的糖的塊數都一樣?每人各有多少塊糖?參考答案:void main() int i, count=0, all = 0, 10, 2, 8, 22, 16, 4, 10, 6, 14, 20 while (1) for (i=l ; i=10 ; i+) a
8、i-l=ai-l/2+ai/2 ; a10=a10/2+a0 ; for(i=l ;i二 10 ; i+) if(ai%2=l) ai+ ; for (i=l ; i10 ; i+) if (ai !=ai+l) break ; if (i=10) break ; else a0=0 ; count+ ;)printf (count=%d number=%dnz/, count, al);)9、輸入5X5的數組,編寫程序實現:(1) 求出對角線上各元素的和;(2) 求出對角線上行、列下標均為偶數的各元素的積;(3) 找出對角線上其值最大的元素和它在數組屮的位置。參考答案:void main()
9、 int i, j, sl=0, s2=l,a5 5 ; for(i=0 ;i5 ;i+) for (j=0 ; j5; j+) printf(/z%d %d: “,i, j) ; scanf(d, &ai j);1 for(i=0 ; i5; i+) for (j=0 ;j5 ;j+) printf (%5d,ai j) ; prirrtf (n);)j=0; for(i=0 ;iajj) j=i ;1 printf (/zSUN=%dnACCOM=%dna%d =%dnz,, si, s2, j, aj j)10、編寫程序,以字符形式輸入一個十六進制數,將其變換為一個十進制整數后輸出。參考
10、答案:include stdio. hvoid main() int i, n二0, a4二0 ; printf (z,Please enter a digit:); for(i二0 ; i4 & (ai=getchar () !=,n ; i+) ; for (i=0 ; i=48&a i =65&ai=97&ai0) /* 將十進制數轉變為二進制數 a-k =n%2 ;n=n/2 ; Jfor(i=0 ; i16 ; i+)printf (2d,ai);*/12、對數組A中的N (Ov Nv 100二個整數從小到大進行連續編號,輸出各個元素的編號。要求不能改變數組A屮元素的順序,且相同的整
11、數要具有相同的 編號。例如數組是:A二(5, 3, 4, 7, 3, 5, 6)則輸出為:(3, 1, 2, 5, 1, 3, 4)參考答案:void mainO int i, j, k, n, m=l, r=l, a2 100 = 0 printf (Please enter n:);scanf (,z%dz/,&n) ; fot(i二0 ; in;i+) printf (/za%d= , i) ; scanf (,z%d,z, &a0 i);Jwhile(m=n) /* m記錄已經登記過的數的個數*/ for(i=0 ; in ;i+) /*記錄未登記過的數的大小 if (al i !=0
12、) /*已登記過的數空過*/ continue; k=i ;*/for(j=i ; jn ;j+) /* 在未登記過數中找最小數 */ if (al j=0 & a0 jaO k) k=jal k=r+ ;/* 記錄名次,r 為名次 */ m+;/*登記過的數增 1 */ for (j=0;jn;j+) /*記錄同名次 */ if (al j=0 & a0 j=a0 k) al j=al k ;m+;1 break; Hfor (i=0 ; in; i+) printf (,za%d =%d,%dn,z, i, a0 i, al i);13、求這樣一個三位數,該三位數等于其每位數字的階乘之和。
13、即:abc二a! + b! + c!參考答案:void mainO int a5, i, t, k ;for (i=100 ;i=10 ; t+) at = (i%k)/ (k/10);k/=10 ;)if (f (a 0)+f (al)+f (a2) =i)printf (%d “,i);)f(m)int m ; int i二0,t二1 ;while(+i b 合并到 */ char; char tmp ; int i, j,k, m, n ; m二strlen(a);n=st:r.en(b);for (i=0 ; im-l ; i+) /* 對數組 a 排 序*/ for(j=i+l, k
14、=i ; jm ;j+)if(ajak) k=j ; tmp=ai;ai=ak ; ak=tmp ;for (i=0 ; inl ;i+) /* 對數組 b 排序*/jnbk :;tmp=b i;bi二 bki=0;j=0;k=0; wififl(im&jbj) ck+二bj+ ;/*else將ai、bj中的小者存入ck */ ck+二ai+ ; if(ai-l=bjj)J+/*如果a. b當前元素相等,刪掉一個*/while(im) ck+二ai+;/* 將&或 b 中剩余的數存入 c */while(j0) ak=n%2 ; turn(n/2, a, kl) ; else :retu:rn
15、;void mainO int i, n, a16二0 ; printf (nPlease enter n:); scanf(d,&n) ; turn(n, a, 15); for (i=0 ; i16 ; i+) printf (z,%d/z, ai); 17、將一個數的數碼倒過來所得到的新數,叫作原數的反序數,如果一個數等于它的反序數,則稱它為對 稱數。編寫程序,采用遞歸算法求不超過1993的最大的二進制的對稱 數。參考答案:smmt ( char s ) /*指針s指向字符串的第一個字符*/ char *p ; p=s; wh訂e(*p!二0) p+ ; p; /*指針p指向字符串的最后
16、一個字符*/if(p二二s) return(1) ;/*兩個指針指向同一個字符表示字符串對稱else if(*s!=*p) return(0) ;/*兩個指針指向字符不等表示字符串不對稱else *p0 ; smmt (s+1):/*取掉首尾比較過的字符繼續比 */較*/*/18、編寫程序,讀入一個以符號結束的長度小于20字節的英文句子,檢查其是否為回文(即正讀 和反讀都是一樣的,不考慮空格和標點符號)。例如:讀入句子:MADAM IM ADAM它是回文,所以輸 出:YES讀入句子:ABCDBA).它不是回文,所以輸出:N0參考答案:include stdio. h void main() c
17、har s21,*p, *q ; gets(s): p=s;q=s;while(*q!二0) q+ ;q-=2;wh訂e(p=q)printf(YESn);)19、 編寫程序,其中包括一個函數,此函數的功能是:對一個長度為N的字符串從其第K個字符起,刪去M個字符,組成長度為N-M的新字符串(其中N、M=80, K=p) *(q+l)二*q- ; *+q=*s2+ ; p+;)21、編寫程序將輸入的兩行字符串連接后,將串屮全部空格移到串首后輸出。參考答案: strcnb(sl, s2)char si , s2: char *p ;int i二1 ;P=sl;while(*p!二0) p+ ;wh
18、ile (*p+=*s2+) !二0)/*將 s2 接于 si 后面*/P=sl;while(*p!0) /*掃描整個字符串*/ if(*p二二)/*當前字符是空格進行移位*/ while(*(p+i)二二)i+;/*尋找當前字符后面的第一個非空格*/if(*(p+i) !二0) *p=*(p+i) ;/*將非空格移于當前字符處*/ *(p+i);/*被移字符處換為空格*/ elsebreak; /*尋找非空格時到字符串尾,移位過程結束*+;22、編寫程序,輸入字符串,分別統計字符串屮所包含的各個不同*/的字符及其各自字符的數量。如:輸入字符串:abcedabcdcd則輸出:a=2 b=2 c
19、=3 d=3 e=l。 參考答案: include stdi o. h st rue t st rnum int i ;char ch ;)void main() char c ;int i二0, k=0 ;struct strnum s100 = 0, NULL ; while(c=getchar 0)!=,n ) for (i=0 ;si. i!=0 ;i+) if(c二二si ch) si i+ :break;)if(si i=0) s k ch=c ;sk+. i=l ;)i=0;while(si. i0) printf (/z%c=%d , si ch, s ii);i+;)23、編寫程序,讀入磁盤上C語言源程序文件test8c,刪去程序中的注釋后顯示。參考答案:ttinclude stdio. h FILE *fp ; void ma
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 政策制定中的利益相關者地圖分析試題及答案
- 強化政策執行中的問責機制研究試題及答案
- 機電工程市場計劃與執行試題及答案
- 網絡工程師職業生涯發展試題及答案
- 如何建立有效的國家治理體系試題及答案
- 2024年血液凈化耗材資金申請報告代可行性研究報告
- 描述2025年西方政治制度的有效性試題及答案
- 西方國家的性別平等與政治試題及答案
- 迎接變革的2025年軟件設計師考試及試題及答案
- 項目管理中的前后期分析對比試題及答案
- 2024園藝師考試栽培方法試題及答案
- 工程結算審核實務:重點難點解析及解決方案
- 小學數學課堂互動教學模式探究
- 外架承包合同完整版
- CHINET2024年全年細菌耐藥監測結果
- 2025年河北建投能源投資股份有限公司招聘筆試參考題庫含答案解析
- 住房城鄉建設行政處罰自由裁量基準(2023版)城鄉規劃建設類
- 班組創新管理之安全管理
- 2025年全國導游資格考試大綱科目一至四
- 華僑港澳臺生2025年入學考試模擬歷史試卷試題(含答案詳解)
- 養老院老年人健康監測實施方案
評論
0/150
提交評論