版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
C語言程序設(shè)計習(xí)題題(編程題)C語言程序設(shè)計習(xí)題題(編程題)C語言程序設(shè)計習(xí)題題(編程題)語言程序設(shè)計習(xí)題(編程類)1、從鍵盤輸入任意的字符,按以下規(guī)則進(jìn)行分類計數(shù)。第一類'0','1','2','3','4','5','6','7','8','9'第二類'+','-','*','/','%','='第三類其他字符當(dāng)輸入字符'\'時先計數(shù),爾后停止接收輸入,打印計數(shù)的結(jié)果。參照答案:#include<stdio.h>voidmain(){intclass1,class2,class3;charch;class1=class2=class3=0;/*初始化分類計數(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':class1++;break;/*對分類1計數(shù)*/case'+':case'-':case'*':case'/':case'%':case'=':class2++;break;/*對分類2計數(shù)*/default:class3++;break;/*對分類3計數(shù)*/}}while(ch!='\\');/*字符'\'在C程序中要使用轉(zhuǎn)義符'\\'*/printf("class1=%d,class2=%d,class3=%d\n",class1,class2,class3);}2、從鍵盤輸入十個整數(shù),用插入法對輸入的數(shù)據(jù)依照從小到大的序次進(jìn)行排序,將排序后的結(jié)果輸出。參照答案:voidmain(){inti,j,num,a[10];for(i=0;i<10;i++){printf("EnterNo.%d:",i+1);scanf("%d",&num);for(j=i-1;j>=0&&a[j]>num;j--)a[j+1]=a[j];a[j+1]=num;}for(i=0;i<10;i++)printf("No.%d=%d\n",i+1,a[i]);}13、輸入一個正整數(shù),要求以相反的序次輸出該數(shù)。比方輸入12345,輸出位54321。參照答案:voidmain(){intn;printf("Pleaseentern:");scanf("%d",&n);while(n>0){printf("%d",n%10);n=n/10;}}4、編寫程序,讀入一個整數(shù)N;若N為非負(fù)數(shù),則計算N到2×N之間的整數(shù)和;若N為一個負(fù)數(shù),則求2×N到N之間的整數(shù)和。分別利用for和while寫出兩個程序。參照答案: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;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=%ldresult2=%ld\n",s1,s2);}5、一個自然數(shù)被8除余1,所得的商被8除也余1,再將第二次的商被8除后余7,最后獲取一個商為a。又知這個自然數(shù)被17除余4,?所得的商被17除余15,最后獲取一個商是a的2倍。編寫程序求這個自然數(shù)。參照答案:voidmain(){inti,n,a;for(i=0;;i++){if(i%8==1){n=i/8;2if(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=%d\n",i);break;}}}6、編寫程序,輸出用一元人民幣兌換成1分、2分和5分硬幣的不相同兌換方法。參照答案:voidmain(){intf1,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:%4d2:%2d1:%2d\n",++count,f5,f2,f1);}}7、將一個數(shù)的數(shù)碼倒過來所獲取的新數(shù)叫原數(shù)的反序數(shù)。若是一個數(shù)等于它的反序數(shù),則稱它為對稱數(shù)。求不高出1993的最大的二進(jìn)制的對稱數(shù)。參照答案:voidmain(){inti,j,n,k,a[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ù)*/{a[k++]=n%2;n=n/2;}for(j=0;j<k;j++)if(a[j]!=a[k-j-1])break;if(j>=k)3{printf("%d:",i);for(j=0;j<k;j++)printf("%2d",a[j]);printf("\n");}}}8、十個少兒圍成一圈分糖果,老師分給第一個少兒10塊,第二個少兒2塊,第三個小孩8塊,第四個少兒22塊,第五個少兒16塊,第六個少兒4塊,第七個少兒10塊,第八個少兒6塊,第九個少兒14塊,第十個少兒20塊。爾后全部的少兒同時將自己手中的糖分一半給右邊的少兒;糖塊數(shù)為奇數(shù)的人可向老師要一塊。問經(jīng)過這樣幾次調(diào)整后大家手中的糖的塊數(shù)都相同?每人各有多少塊糖?參照答案:voidmain(){inti,count=0,a[11]={0,10,2,8,22,16,4,10,6,14,20};while(1){for(i=1;i<=10;i++)a[i-1]=a[i-1]/2+a[i]/2;a[10]=a[10]/2+a[0];for(i=1;i<=10;i++)if(a[i]%2==1)a[i]++;for(i=1;i<10;i++)if(a[i]!=a[i+1])break;if(i==10)break;else{a[0]=0;count++;}}printf("count=%dnumber=%d\n",count,a[1]);}9、輸入5×5的數(shù)組,編寫程序?qū)崿F(xiàn):(1)求出對角線上各元素的和;(2)求出對角線上行、列下標(biāo)均為偶數(shù)的各元素的積;(3)找出對角線上其值最大的元素和它在數(shù)組中的地址。參照答案:voidmain(){inti,j,s1=0,s2=1,a[5][5];for(i=0;i<5;i++)for(j=0;j<5;j++){printf("%d%d:",i,j);scanf("%d",&a[i][j]);}4for(i=0;i<5;i++){for(j=0;j<5;j++)printf("%5d",a[i][j]);printf("\n");}j=0;for(i=0;i<5;i++){s1=s1+a[i][i];if(i%2==0)s2=s2*a[i][i];if(a[i][i]>a[j][j])j=i;}printf("SUN=%d\nACCOM=%d\na[%d]=%d\n",s1,s2,j,a[j][j]);}10、編寫程序,以字符形式輸入一個十六進(jìn)制數(shù),將其變換為一個十進(jìn)制整數(shù)后輸出。參照答案:#include"stdio.h"voidmain(){inti,n=0,a[4]={0};printf("Pleaseenteradigit:");for(i=0;i<4&&(a[i]=getchar())!='\n';i++);for(i=0;i<4;i++)if(a[i]>=48&&a[i]<=57)a[i]=a[i]-48;elseif(a[i]>=65&&a[i]<=69)a[i]=a[i]-55;elseif(a[i]>=97&&a[i]<=102)a[i]=a[i]-87;elseprintf("inputError!");for(i=0;i<4;i++)n=n*16+a[i];printf("%d",n);}11、編寫程序,輸入一個十進(jìn)制整數(shù),將其變換為二進(jìn)制后儲蓄在一個字符數(shù)組中。參照答案:voidmain(){inti,n,k=16,a[16]={0};printf("Pleaseenteradigit:");scanf("%d",&n);while(n>0)/*將十進(jìn)制數(shù)轉(zhuǎn)變?yōu)槎M(jìn)制數(shù)*/{a[--k]=n%2;n=n/2;5}for(i=0;i<16;i++)printf("%2d",a[i]);}12、對數(shù)組A中的N(0<N<100=個整數(shù)從小到大進(jìn)行連續(xù)編號,輸出各個元素的編號。要求不能夠改變數(shù)組A中元素的序次,且相同的整數(shù)要擁有相同的編號。比方數(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,a[2][100]={0};printf("Pleaseentern:");scanf("%d",&n);for(i=0;i<n;i++){printf("a[%d]=",i);scanf("%d",&a[0][i]);}while(m<=n)/*m記錄已經(jīng)登記過的數(shù)的個數(shù)*/{for(i=0;i<n;i++)/*記錄未登記過的數(shù)的大小*/{if(a[1][i]!=0)/*已登記過的數(shù)空過*/continue;k=i;for(j=i;j<n;j++)/*在未登記過數(shù)中找最小數(shù)*/if(a[1][j]==0&&a[0][j]<a[0][k])k=j;a[1][k]=r++;/*記錄名次,r為名次*/m++;/*登記過的數(shù)增1*/for(j=0;j<n;j++)/*記錄同名次*/if(a[1][j]==0&&a[0][j]==a[0][k]){a[1][j]=a[1][k];m++;}break;}}for(i=0;i<n;i++)printf("a[%d]=%d,%d\n",i,a[0][i],a[1][i]);}13、求這樣一個三位數(shù),該三位數(shù)等于其每位數(shù)字的階乘之和。即:abc=a!+b!+c!參照答案:voidmain(){inta[5],i,t,k;for(i=100;i<1000;i++){for(t=0,k=1000;k>=10;t++){a[t]=(i%k)/(k/10);6k/=10;}if(f(a[0])+f(a[1])+f(a[2])==i)printf("%d",i);}}f(m)intm;{inti=0,t=1;while(++i<=m)t*=i;return(t);}14、編寫一個函數(shù)實現(xiàn)將字符串str1和字符串str2合并,合并后的字符串按其ASCII碼值從小到大進(jìn)行排序,相同的字符在新字符串中只出現(xiàn)一次。參照答案:#include"string.h"strcmbn(a,b,c)/*數(shù)組合并函數(shù):將數(shù)組a、b合并到*/chara[],b[],c[];{chartmp;inti,j,k,m,n;m=strlen(a);n=strlen(b);for(i=0;i<m-1;i++)/*對數(shù)組a排序*/{for(j=i+1,k=i;j<m;j++)if(a[j]<a[k])k=j;tmp=a[i];a[i]=a[k];a[k]=tmp;}for(i=0;i<n-1;i++)/*對數(shù)組b排序*/{for(j=i+1,k=i;j<n;j++)if(b[j]<b[k])k=j;tmp=b[i];b[i]=b[k];b[k]=tmp;}i=0;j=0;k=0;while(i<m&&j<n)/*合并*/if(a[i]>b[j])c[k++]=b[j++];/*將a[i]、b[j]中的小者存入c[k]*/else{c[k++]=a[i++];7if(a[i-1]==b[j])j++;/*若是a、b當(dāng)前元素相等,刪掉一個*/}while(i<m)c[k++]=a[i++];/*將a或b中節(jié)余的數(shù)存入c*/while(j<n)c[k++]=b[j++];c[k]='\0';}15、編寫函數(shù),采用遞歸方法實現(xiàn)將輸入的字符串按反序輸出。參照答案:#include"stdio.h"strout(s)char*s;{if(*s!='\0'){strout(s+1);/*遞歸調(diào)用strout函數(shù),字符串首地址前移一個字符*/putch(*s);/*輸出字符串首地址所指向的字符*/}elsereturn;/*遇到字符串結(jié)束標(biāo)志結(jié)束遞歸調(diào)用*/}16、編寫函數(shù),采用遞歸方法將任一整數(shù)變換為二進(jìn)制形式。參照答案:turn(n,a,k)intn,a[],k;{if(n>0){a[k]=n%2;turn(n/2,a,k-1);}elsereturn;}voidmain(){inti,n,a[16]={0};printf("\nPleaseentern:");scanf("%d",&n);turn(n,a,15);for(i=0;i<16;i++)printf("%d",a[i]);}17、將一個數(shù)的數(shù)碼倒過來所獲取的新數(shù),叫作原數(shù)的反序數(shù),若是一個數(shù)等于它的反序數(shù),則稱它為對稱數(shù)。編寫程序,采用遞歸算法求不高出1993的最大的二進(jìn)制的對稱數(shù)。參照答案:smmt(chars[])/*指針s指向字符串的第一個字符*/{char*p;p=s;8while(*p!='\0')p++;p--;/*指針p指向字符串的最后一個字符*/if(p==s)return(1);/*兩個指針指向同一個字符表示字符串對稱*/else{if(*s!=*p)return(0);/*兩個指針指向字符不等表示字符串不對稱*/else{*p='\0';smmt(s+1);/*取掉首尾比較過的字符連續(xù)比較*/}}}18、編寫程序,讀入一個以符號"."結(jié)束的長度小于20字節(jié)的英詞句子,檢查其可否為回文(即正讀和反讀都是相同的,不考慮空格和標(biāo)點符號)。比方:讀入句子:MADAMI'MADAM.它是回文,所以輸出:YES讀入句子:ABCDBA).它不是回文,所以輸出:NO參照答案:#include"stdio.h"voidmain(){chars[21],*p,*q;gets(s);p=s;q=s;while(*q!='\0')q++;q-=2;while(p<q)/*指針p指向字符串首,指針q指向串未*/if(*p++!=*q--)/*指針p、q同時向中間搬動,比較對稱的兩個字符*/{printf("NO\n");break;}if(p>=q)printf("YES\n");}19、編寫程序,其中包括一個函數(shù),此函數(shù)的功能是:對一個長度為N的字符串從其第K個字符起,刪去M個字符,組成長度為N-M的新字符串(其中N、M<=80,K<=N)。例如輸入字符串"Wearepoorstudents.",利用此函數(shù)進(jìn)行刪除"poor"的辦理,輸出辦理后的字符串是"Wearestudents."。參照答案:9strcut(s,m,k)chars[];intm,k;{char*p;inti;p=s+m;/*指針p指向要被刪除的字符*/while((*p=*(p+k))!='\0')/*p+k指向要前移的字符*/p++;}20、編寫一個函數(shù)insert(s1,s2,ch),實現(xiàn)在字符串s1中的指定字符ch地址處插入字符串s2。參照答案:insert(s1,s2,ch)chars1[],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ū)⑤斎氲膬尚凶址?lián)接后,將串中全部空格移到串首后輸出。參照答案:strcnb(s1,s2)chars1[],s2[];{char*p;inti=1;p=s1;while(*p!='\0')p++;while((*p++=*s2++)!='\0');/*將s2接于s1后邊*/p=s1;while(*p!='\0')/*掃描整個字符串*/{if(*p=='')/*當(dāng)前字符是空格進(jìn)行移位*/{while(*(p+i)=='')i++;/*搜尋當(dāng)前字符后邊的第一個非空格*/if(*(p+i)!='\0'){*p=*(p+i);/*將非空格移于當(dāng)前字符處*/*(p+i)='';/*被移字符處換為空格*/}10elsebreak;/*搜尋非空格時到字符串尾,移位過程結(jié)束*/}p++;}}22、編寫程序,輸入字符串,分別統(tǒng)計字符串中所包括的各個不相同的字符及其各自字符的數(shù)量。如:輸入字符串:abcedabcdcd則輸出:a=2b=2c=3d=3e=1。參照答案:#include"stdio.h"structstrnum{inti;charch;}voidmain(){charc;inti=0,k=0;structstrnums[100]={0,NULL};while((c=getchar())!='\n'){for(i=0;s[i].i!=0;i++){if(c==s[i].ch){s[i].i++;break;}}if
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024銅門制安工程賠償合同
- 2025年度不銹鋼板材行業(yè)綠色制造與可持續(xù)發(fā)展合同范本2篇
- 2024藥品研發(fā)項目合作開發(fā)與成果轉(zhuǎn)讓合同3篇
- 2025年度智能倉儲物流服務(wù)合同范本二零二五年度4篇
- 《銀伯爵珠寶培訓(xùn)》課件
- 2024版商鋪轉(zhuǎn)讓協(xié)議書范本
- 中國魔芋素食品行業(yè)發(fā)展前景預(yù)測及投資方向研究報告
- 2025年水電工程安裝與智能化改造合同范本
- 2025年鞍鋼集團(tuán)工程技術(shù)有限公司招聘筆試參考題庫含答案解析
- 2025年中咨工程管理咨詢有限公司招聘筆試參考題庫含答案解析
- 導(dǎo)尿及留置導(dǎo)尿技術(shù)
- 情人合同范例
- 建筑公司勞務(wù)合作協(xié)議書范本
- 安徽省合肥市2023-2024學(xué)年高一上學(xué)期物理期末試卷(含答案)
- 《基于杜邦分析法的公司盈利能力研究的國內(nèi)外文獻(xiàn)綜述》2700字
- 儒家思想講解課程設(shè)計
- 2024年個人汽車抵押借款合同范本(四篇)
- 2024-2025學(xué)年九年級化學(xué)上冊 第二單元 單元測試卷(人教版)
- 軌道交通設(shè)備更新項目可行性研究報告-超長期國債
- 2024-2030年中國一氧化二氮氣體行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略分析報告
- NB/T 11446-2023煤礦連采連充技術(shù)要求
評論
0/150
提交評論