【問題描述】調整輸入數組A[0..n],將其分爲兩部分,左邊全部元素爲奇數,右邊全部元素爲偶數
【輸入形式】a0,b1,b2,a1,a2,b3,a3,a4
【輸出形式】a0,a1,a2,a3,a4,b1,b2,b3
【樣例輸入】1,2,33,8,5
【樣例輸出】1,33,5,2,8編程
代碼:數組
#include<stdio.h> int main() { int a[100]; int n=100,i,j,count=1,m; for(i=0;i<n;i++) //循環輸入數組數據 { scanf("%d",&a[i]); char c=getchar();//getchar函數,從鍵盤的緩衝區中獲得一個字符常量並賦值給c if(c=='\n') //當鍵盤輸入回車時結束輸入輸入 { break; } count++; } scanf("%d",&m); for(i=0;i<=count;i++) { for(j=i+1;j<=count;j++) { if(m==(a[i]+a[j])) { printf("%d %d",a[i],a[j]); i=count+1; break; } } } printf("\n"); return 0; }
【問題描述】函數
輸入一個已經按升序排序過的數組和一個數字,在數組中查找兩個數,使得它們的和正好是輸入的那個數字。要求時間複雜度是O(n)。若是有多對數字的和等於輸入的數字,輸出任意一對便可。
【輸入形式】code
一個升序排序的數組以空格隔開,以及一個目標數字,換行輸入
【輸出形式】排序
若是存在數組中兩個數字和爲目標數字,則輸出數字對;ip
若是存在多個知足條件的數字對,輸入一對便可;get
不存在則不輸出;
【樣例輸入】io
1 2 4 7 11 15ast
15class
【樣例輸出】
4 11
【樣例說明】
4+11=15
【評分標準】
時間複雜度必須爲 O(n),不然酌情給分。
#include<stdio.h> int main() { int a[100],b[100],c[100]; int i,count=0,j=0,k=0; char s; for(i=0;i<100;i++) { scanf("%d",&a[i]); char c=getchar(); if(c=='\n') break; scanf("%c",&s); count++; } for(i=0;i<=count;i++) { if(a[i]%2==1||a[i]%2==-1) { b[j]=a[i]; j++; } if(a[i]%2==0) { c[k]=a[i]; k++; } } printf("%d",b[0]); for(i=0;i<j;i++) printf(",%d",b[i]); for(i=0;i<k;i++) printf(",%d",c[i]); printf("\n"); return 0; }
【問題描述】
N只猴子選大王,選舉方法以下:全部猴子按1,2,3,… ,N編號圍坐一圈,從第1個猴子開始報數,報到M號退出圈外,如此循環報數,直到圈內只剩下一個猴子,即爲大王。編程輸出大王的原始序號。N和M的值由鍵盤輸入。若是你想成爲剩下的那一個,在N必定的狀況下,你應該站在什麼位置上?編程實現位置的求解。
【輸入形式】
輸入兩個數字N和M,N爲猴子的個數,M爲報到後退出圈外的數字。
【輸出形式】
顯示最後剩下的猴子的原始序號。
【樣例輸入】
5 3
【樣例輸出】
4
【樣例說明】
共5個猴子圍成一圈,報到3號退出圈外,最後留下的猴子的原始編號爲4
【評分標準】
當輸入的M,N不合法時應當給出錯誤提示“請輸入合法的M,N值!”。
#include<stdio.h> int main() { int n,m; int last = 0; scanf("%d %d",&m,&n); if(n<1 || m<1 ) { printf("請輸入合法的M,N值!\n"); }else{ for (int i=2;i<=m;i++) { last = (last+n)%i; } printf("%d\n",last+1); } return 0; }