




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
精選優質文檔-----傾情為你奉上精選優質文檔-----傾情為你奉上專心---專注---專業專心---專注---專業精選優質文檔-----傾情為你奉上專心---專注---專業基礎練習數列排序
時間限制:1.0s
內存限制:512.0MB問題描述給定一個長度為n的數列,將這個數列按從小到大的順序排列。1<=n<=200輸入格式第一行為一個整數n。
第二行包含n個整數,為待排序的數,每個整數的絕對值小于10000。輸出格式輸出一行,按從小到大的順序輸出排序后的數列。樣例輸入5
83649樣例輸出34689錦囊1使用排序算法。錦囊2可以使用冒泡排序、排入排序等,也可以使用快速排序等更快的,還可以直接調用系統的函數。#include<stdio.h>#include<stdlib.h>voidPrint(int*data,intn){ inti; for(i=0;i<n;i++) { printf("%d",data[i]); } printf("\n");}intSplit(int*data,intpre,intrear){ intvalue=data[pre]; while(pre<rear) { while(data[rear]>=value&&pre<rear)rear--; data[pre]=data[rear]; while(data[pre]<value&&pre<rear)pre++; data[rear]=data[pre]; } data[pre]=value; returnpre;}//快速排序voidQuickSort(int*data,intpre,intrear){ if(pre<rear) { intmid=Split(data,pre,rear); QuickSort(data,pre,mid-1); QuickSort(data,mid+1,rear); }}intmain(){ inti; intn; int*data; scanf("%d",&n); data=(int*)malloc(sizeof(int)*n); for(i=0;i<n;i++) { scanf("%d",&data[i]); } QuickSort(data,0,n-1); Print(data,n); return0;}
基礎練習十六進制轉八進制
時間限制:1.0s
內存限制:512.0MB問題描述給定n個十六進制正整數,輸出它們對應的八進制數。輸入格式輸入的第一行為一個正整數n(1<=n<=10)。
接下來n行,每行一個由0~9、大寫字母A~F組成的字符串,表示要轉換的十六進制正整數,每個十六進制數長度不超過。輸出格式輸出n行,每行為輸入對應的八進制正整數。注意輸入的十六進制數不會有前導0,比如012A。
輸出的八進制數也不能有前導0。樣例輸入2
39
123ABC樣例輸出71
提示先將十六進制數轉換成某進制數,再由某進制數轉換成八進制。錦囊1使用二進制。錦囊2先把十六進制轉成二進制,每位十六進制正好轉成4位二進制,然后再將二進制轉成八進制,每三個二進制轉成一個八進制。#include<stdio.h>#include<stdlib.h>#include<string.h>#defineMaxSizevoidsaveB(char*b,charc3,charc2,charc1,charc0,intstart){ b[start]=c3; b[start+1]=c2; b[start+2]=c1; b[start+3]=c0;}inthtob(char*h,char*b){ inti,j; inthl=strlen(h); for(i=0;i<hl;i++) switch(h[i]) { case'0': { saveB(b,'0','0','0','0',4*i); break; } case'1': { saveB(b,'0','0','0','1',4*i); break; } case'2': { saveB(b,'0','0','1','0',4*i); break; } case'3': { saveB(b,'0','0','1','1',4*i); break; } case'4': { saveB(b,'0','1','0','0',4*i); break; } case'5': { saveB(b,'0','1','0','1',4*i); break; } case'6': { saveB(b,'0','1','1','0',4*i); break; } case'7': { saveB(b,'0','1','1','1',4*i); break; } case'8': { saveB(b,'1','0','0','0',4*i); break; } case'9': { saveB(b,'1','0','0','1',4*i); break; } case'A': { saveB(b,'1','0','1','0',4*i); break; } case'B': { saveB(b,'1','0','1','1',4*i); break; } case'C': { saveB(b,'1','1','0','0',4*i); break; } case'D': { saveB(b,'1','1','0','1',4*i); break; } case'E': { saveB(b,'1','1','1','0',4*i); break; } case'F': { saveB(b,'1','1','1','1',4*i); break; } } return4*hl;}intbtoo(char*b,char*o,intbl){ inti,j; intol; intvalue; if(bl%3==0) ol=bl/3; else ol=bl/3+1; j=bl-1; for(i=ol-1;i>=0;i--) { if(i>0) o[i]=b[j]-48+(b[j-1]-48)*2+(b[j-2]-48)*4+48; else { switch(j) { case2: o[i]=b[j]-48+(b[j-1]-48)*2+(b[j-2]-48)*4+48; break; case1: o[i]=b[j]-48+(b[j-1]-48)*2+48; break; case0: o[i]=b[j]; break; } } j=j-3; } returnol;}voidprintO(char*o,intol){ inti=0; if(o[0]=='0') i=1; for(;i<ol;i++) { printf("%c",o[i]); } printf("\n");}main(){ charh[MaxSize]; charb[4*MaxSize]; charo[4*MaxSize/3+1]; intn,i,bl,ol; scanf("%d",&n); getchar(); for(i=0;i<n;i++) { gets(h); bl=htob(h,b); ol=btoo(b,o,bl); printO(o,ol); }}
基礎練習十六進制轉十進制
時間限制:1.0s
內存限制:512.0MB問題描述從鍵盤輸入一個不超過8位的正的十六進制數字符串,將它轉換為正的十進制數后輸出。
注:十六進制數中的10~15分別用大寫的英文字母A、B、C、D、E、F表示。樣例輸入FFFF樣例輸出65535錦囊1按16進制展開。錦囊2按數位依次操作,每次將前面的乘16,再加上當前數位的值。本題的C參考代碼如下:#include<stdio.h>#include<string.h>#include<math.h>intmain(){doublesum=0,x;chara[8];intlen,i=0;gets(a);len=strlen(a);while(len){if(a[len-1]>='A'&&a[len-1]<='F')x=(a[len-1]-'7')*pow(16,i++);else x=(a[len-1]-'0')*pow(16,i++);sum+=x;len--;}printf("%.0lf",sum);return0;}
基礎練習十進制轉十六進制
時間限制:1.0s
內存限制:512.0MB問題描述十六進制數是在程序設計時經常要使用到的一種整數的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16個符號,分別表示十進制數的0至15。十六進制的計數方法是滿16進1,所以十進制數16在十六進制中是10,而十進制的17在十六進制中是11,以此類推,十進制的30在十六進制中是1E。
給出一個非負整數,將它表示成十六進制的形式。輸入格式輸入包含一個非負整數a,表示要轉換的數。0<=a<=輸出格式輸出這個整數的16進制表示樣例輸入30樣例輸出1E錦囊1按除16取余倒數(也可使用格式輸出)。錦囊2可以使用遞歸來處理,遞歸參數為要轉換的數字,如果該數字大于等于16,則將遞歸處理該數整除16的值,然后再輸出最后一位。C/C++語言可以使用格式輸出直接輸出轉換后的結果。本題的C參考代碼如下:#include<stdio.h>#include<stdlib.h>chardata[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};//輸出voidPrint(char*num,intn){ inti; for(i=n-1;i>=0;i--)printf("%c",num[i]); printf("\0"); printf("\n");}//將十六進制數轉換為十進制數intTransform(char*num,longlongvalue){ intn=0; while(value>=16) { num[n++]=data[value%16]; value/=16; } num[n++]=data[value%16]; returnn;}intmain(){ longlongvalue; charnum[10]; intn; scanf("%I64d",&value); n=Transform(num,value); Print(num,n); return0;}
基礎練習特殊回文數
時間限制:1.0s
內存限制:512.0MB問題描述是一個非常特殊的數,它從左邊讀和從右邊讀是一樣的。
輸入一個正整數n,編程求所有這樣的五位和六位十進制數,滿足各位數字之和等于n。輸入格式輸入一行,包含一個正整數n。輸出格式按從小到大的順序輸出滿足條件的整數,每個整數占一行。樣例輸入52樣例輸出
數據規模和約定1<=n<=54。錦囊1枚舉加判斷。錦囊2枚舉所有的五位和六位整數,先判斷它們是否為回文數,然后再計算所有數字和,判斷是否為n。本題的C參考代碼如下:#include<stdio.h>intmain(){ inta,b,c,d,e,f,t,all; scanf("%d",&t); for(a=1;a<10;a++) for(b=0;b<10;b++) for(c=0;c<10;c++) for(d=0;d<10;d++) for(e=0;e<10;e++) { if(a==e) if(b==d) { all=a+b+c+d+e; if(all==t) printf("%d\n",a*10000+b*1000+c*100+d*10+e); } } for(a=1;a<10;a++) for(b=0;b<10;b++) for(c=0;c<10;c++) for(d=0;d<10;d++) for(e=0;e<10;e++) for(f=0;f<10;f++) { if(a==f) if(b==e) if(c==d) { all=a+b+c+d+e+f; if(all==t) printf("%d\n",a*+b*10000+c*1000+d*100+e*10+f); } } return0;}
基礎練習回文數
時間限制:1.0s
內存限制:512.0MB問題描述1221是一個非常特殊的數,它從左邊讀和從右邊讀是一樣的,編程求所有這樣的四位十進制數。輸出格式按從小到大的順序輸出滿足條件的四位十進制數。錦囊1枚舉加判斷。錦囊2枚舉所有的四位整數,將它們的三位分別分離出來,然后判斷是否第一位與第四位相同且第二位和第三位相同。本題的C參考代碼如下:#include<stdio.h>intmain(){inta,b,c,d,i;for(i=1000;i<=9999;i++){a=i/1000;b=i/100%10;c=i/10%10;d=i%10;if(a==d&&b==c)printf("%d\n",i);}return0;}
基礎練習特殊的數字
時間限制:1.0s
內存限制:512.0MB問題描述153是一個非常特殊的數,它等于它的每位數字的立方和,即153=1*1*1+5*5*5+3*3*3。編程求所有滿足這種條件的三位十進制數。輸出格式按從小到大的順序輸出滿足條件的三位十進制數,每個數占一行。#include<stdio.h>intmain(){inti,j,k,n;for(n=100;n<1000;n++){i=n/100;j=n/10%10;k=n%10;if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)printf("%d\n",n);}return0;}
基礎練習楊輝三角形
時間限制:1.0s
內存限制:256.0MB問題描述楊輝三角形又稱Pascal三角形,它的第i+1行是(a+b)i的展開式的系數。它的一個重要性質是:三角形中的每個數字等于它兩肩上的數字相加。下面給出了楊輝三角形的前4行:
1
11
1211331給出n,輸出它的前n行。輸入格式輸入包含一個數n。輸出格式輸出楊輝三角形的前n行。每一行從這一行的第一個數開始依次輸出,中間使用一個空格分隔。請不要在前面輸出多余的空格。樣例輸入4樣例輸出1
11
121
1331數據規模與約定1<=n<=34。錦囊1使用二維數組。錦囊2使用一個二維數組來保存楊輝三角形,先將三角形計算出來,然后再輸出。本題的C參考代碼如下:#include<stdio.h>#defineMAXN40intn;inta[MAXN][MAXN];intmain(){inti,j;scanf("%d",&n);a[0][0]=1;for(i=0;i<n;++i){a[i][0]=a[i][i]=1;for(j=1;j<i;++j)a[i][j]=a[i-1][j-1]+a[i-1][j];}for(i=0;i<n;++i){for(j=0;j<=i;++j)printf("%d",a[i][j]);printf("\n");}return0;}
基礎練習查找整數
時間限制:1.0s
內存限制:256.0MB問題描述給出一個包含n個整數的數列,問整數a在數列中的第一次出現是第幾個。輸入格式第一行包含一個整數n。第二行包含n個非負整數,為給定的數列,數列中的每個數都不大于10000。第三行包含一個整數a,為待查找的數。輸出格式如果a在數列中出現了,輸出它第一次出現的位置(位置從1開始編號),否則輸出-1。樣例輸入6
194839
9樣例輸出2數據規模與約定1<=n<=1000。錦囊1使用循環語句、判斷語句和跳出循環語句。錦囊2將所有數讀入到一個數組中,然后使用循環語句依次枚舉數組中的每個元素,每次和要查找的元素比較,若找到則記錄并跳出循環。本題的C參考代碼如下:#include<stdio.h>#defineMAXN10001intn,a,ans;ints[MAXN];intmain(){inti;scanf("%d",&n);for(i=0;i<n;++i)scanf("%d",&s[i]);scanf("%d",&a);ans=-1;for(i=0;i<n;++i){if(s[i]==a){ans=i+1;break;}}printf("%d",ans);return0;}
基礎練習數列特征
時間限制:1.0s
內存限制:256.0MB問題描述給出n個數,找出這n個數的最大值,最小值,和。輸入格式第一行為整數n,表示數的個數。第二行有n個數,為給定的n個數,每個數的絕對值都小于10000。輸出格式輸出三行,每行一個整數。第一行表示這些數中的最大值,第二行表示這些數中的最小值,第三行表示這些數的和。樣例輸入5
13-245樣例輸出5
-2
3數據規模與約定1<=n<=10000。錦囊1使用循環語句和標志變量。錦囊2將所有數讀入到一個數組中,然后使用循環語句依次枚舉數組中的每個元素,使用三個變量分別表示當前找到的最大值、最小值及前一部分數的和。最后輸出。#include<stdio.h>#include<stdlib.h>#defineMAXSIZE10000intmain(){ inti; intn; intvalue; intmax=-MAXSIZE; intmin=MAXSIZE; intsum=0; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&value); if(value>max)max=value; if(value<min)min=value; sum+=value; } printf("%d\n",max); printf("%d\n",min); printf("%d\n",sum); return0;}
基礎練習字母圖形
時間限制:1.0s
內存限制:256.0MB問題描述利用字母可以組成一些美麗的圖形,下面給出了一個例子:ABCDEFGBABCDEFCBABCDEDCBABCDEDCBABC這是一個5行7列的圖形,請找出這個圖形的規律,并輸出一個n行m列的圖形。輸入格式輸入一行,包含兩個整數n和m,分別表示你要輸出的圖形的行數的列數。輸出格式輸出n行,每個m個字符,為你的圖形。樣例輸入57樣例輸出ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC數據規模與約定1<=n,m<=26。錦囊1字母的序號與兩個坐標的差的絕對值有關。錦囊2用兩重循環來枚舉所有的坐標,使用絕對值函數計算出坐標的差,再輸出對應的字符。#include<stdio.h>#include<stdlib.h>#defineMAXSIZE26//輸出voidPrint(charmatrix[MAXSIZE][MAXSIZE],intn,intm){ inti,j; for(i=0;i<n;i++) { for(j=0;j<m;j++) { printf("%c",matrix[i][j]); } printf("\n"); }}//實現字母圖形voidDrawing(intn,intm){ inti,j; intpoint=0; charstr; charmatrix[MAXSIZE][MAXSIZE]; for(i=0;i<n;i++) { str='A'; for(j=i;j<m;j++) { matrix[i][j]=str++; } str='A'; for(j=i-1;j>=0;j--) { matrix[i][j]=++str; } } Print(matrix,n,m);}intmain(){ intn,m; scanf("%d%d",&n,&m); Drawing(n,m); return0;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論