吉大軟體專碩896-2008
阿新 • • 發佈:2018-11-01
年份比較久遠的,卷子代號都有些不一樣了
有關分數化簡的題:
軟專2012年的第二題(http://blog.csdn.net/qq_21149391/article/details/79430462)
軟專2013年的第四題(http://blog.csdn.net/qq_21149391/article/details/79417404)
化簡分數,即求最大公約數
#include<stdio.h> int main(){ int max_CommonDivisor(int x,int y); int n,m,max_commonDivisor; printf("請輸入分子m:"); scanf("%d",&m); printf("請輸入分母n:"); scanf("%d",&n); max_commonDivisor = max_CommonDivisor(m,n); printf("化簡後:(%d,%d)\n",m/max_commonDivisor,n/max_commonDivisor); } /*求x,y的最大公約數*/ int max_CommonDivisor(int x,int y){ int max,min,t; if(x>y){ max = x; min = y; }else{ max = y; min = x; } while(max % min != 0){ t = min; min = max % min; max = t; } return min; }
我的理解是:若此數由1,3,5,7,9之外的數構成,則返回否
若此數由1,3,5,7,9中任意數構成,則返回真
與此題相關:軟專2012年第三題(http://blog.csdn.net/qq_21149391/article/details/79430462)
#include<stdio.h> #include <stdbool.h> #define N 20 int main(){ bool jude(char num[]); char num[N]; printf("請輸入數字:"); scanf("%s",num); if(jude(num)) printf("此數僅由13579構成\n"); else printf("此數由13579以外的數構成\n"); return 0; } bool jude(char *num){ int i; char s; for(i=0;i<strlen(num);i++){ s=num[i]; if(s!='1' &&s!='3' &&s!='5' &&s!='7' &&s!='9') return false; } return true; }
#include<stdio.h> #define N 10 int main(){ int *sort(int *A); int A[N]={2,7,3,1,9,7,8,6,5,11}; int *B = sort(A); int i; //printf("%d---%d\n",odd,even); for(i=0;i<N;i++) printf("%d\t",B[i]); return 0; } int *sort(int *A){ int *B = (int *)malloc(N *sizeof(int));//申請N位空間,不申請會出錯 int i,j,k,odd=N-1,even=0,sign;//odd指向當前B中奇數的最低位,even指向當前B中偶數的最高位 for(i=0;i<N;i++){ sign = 0; if(A[i] % 2 == 0){//偶數,則插入B前列 for(j=0;j<even;j++){//從前往後找比A[i]大的第一個數 if(B[j]>=A[i]){//z找到A[i]要插入的位置位B[j] for(k=even;k>j;k--)//B[j]之後的偶數向後移一位,A[i]插到B[j] B[k] = B[k-1]; B[j] = A[i]; sign = 1; break; } } if(sign == 0) B[even] = A[i];//如果沒找到A[i]的位置,說明A[i]是偶陣列中最大的,插入偶陣列末尾even處 even++;//新插入一個,even向後移一位 }else{//奇數,同上註釋,反過來 for(j=N-1;j>odd;j--){ if(B[j]<=A[i]){ for(k=odd;k<j;k++) B[k]=B[k+1]; B[j]=A[i]; sign = 1; break; } } if(sign == 0) B[odd] = A[i]; odd--; } } return B; }
#include<stdio.h>
#define N 10
int A[N]={2,3,4,8,13,20,23,29,32,43};//定義全域性變數陣列
int main(){
int n;
int search(int i,int j,int n);
printf("請輸入要查詢的數字:");
scanf("%d",&n);
int find = search(0,N-1,n);
printf("數字%d在陣列A中的位置為:第%d個數\n",n,find);
return 0;
}
int search(int i,int j,int n){//遞迴,i,j為二分法的兩端,n為要查詢的數
int k=(i+j)/2;
int find;
if(n>A[k]){
find = search(k,j,n);
}else if(A[k]>n){
find = search(i,k,n);
}else
return k;
return find;
}