吉大軟體專碩976-2016年
阿新 • • 發佈:2018-11-01
#include<stdio.h> int main(){ int find(int *a,int n,int k); int a[10]={18,3,6,9,4,5,3,2,8,1};//18,9,8,6,5,4,3,3,2,1 int k; printf("請輸入K:"); scanf("%d",&k); printf("第K大的數為:%d\n",find(a,10,k)); return 0; } int find(int a[],int n,int k){ int i,j,t; for(i=0;i<n;i++)//氣泡排序 for(j=0;j<n-i-1;j++) if(a[j]<a[j+1]){ t = a[j]; a[j] = a[j+1]; a[j+1] = t; } return a[k-1]; }
#include<stdio.h> #include <time.h> #include <stdlib.h> #define N 4 int main(){ int *Add(int *a); int a[N]={1,1,1,1}; int i; int *b = Add(a); printf("加一後:-------------------\n"); if(b[N]!=0) printf("%d",b[N]); for(i=N-1;i>=0;i--) printf("%d",b[i]); printf("\n"); } int *Add(int *a){ int i; int *b=(int *)malloc((N+1)*sizeof(int));//加一後可能出現增加一位的情況,需要多開闢一個空間 a[N-1]++;//加一 for(i=N-1;i>0;i--){ a[i-1] += a[i] / 2; a[i] = a[i] % 2; b[i] = a[i]; } if(a[0]==2){//若結果多一位,放在b[0] b[1] = 0; b[0] = 1; } else b[1] = a[0]; return b; }
當a[N]中存放1011時
當a[N]中存放1111時
#include<stdio.h> #define A 7//陣列a的長度 #define B 8//陣列b的長度 int main(){ int *Interse(int a[],int b[],int min); int *Union(int a[],int b[],int max); int a[A]={0,1,0,1,0,1,1};// {1,3,5,6} int b[B]={0,0,0,1,1,1,0,1,1};// {3,4,5,7,8} int max,min,i; if(A>B){ max = A; min = B; }else{ max = B; min = A; } printf("交集為:\n"); int *in = Interse(a, b, min); for(i=0;i<min;i++) printf("%d\t",in[i]); printf("\n並集為:\n"); int *un = Union(a, b, max); for(i=0;i<max;i++) printf("%d\t",un[i]); printf("\n"); } int *Interse(int a[],int b[],int min){ int i; int *interse = (int *)malloc(min * sizeof(int)); for(i=0;i<min;i++){ if(a[i] == b[i]) interse[i] = a[i]; else interse[i] = 0; } return interse; } int *Union(int a[],int b[],int max){ int i; int *unio = (int *)malloc(max * sizeof(int)); for(i=0;i<max;i++){ if(a[i]==1 || b[i]==1) unio[i] = 1; else unio[i] = 0; } return unio; }
思路:
1、第一位word[0]只能是Y|N|2
2、若word[I]=Y|N => word[i+1]只能為Y|N|2
若word[I]=2 => word[i+1]只能為y|n|1|空
若word[I]=y|n => word[i+1]只能為y|n|1
若word[I]=1 => word[i+1]只能為Y|N|2|空
滿足以上兩條則是兩機器人對話,否則不是
#include<stdio.h>
#include<stdbool.h>
#define N 100
int main(){
bool jude(char talk[]);
char talk[N];
printf("輸入對話:");
gets(talk);
if(jude(talk))
printf("是兩機器人的對話");
else
printf("不是兩機器人的對話");
printf("\n");
}
bool jude(char talk[]){
int i;
if(talk[0]!='Y' && talk[0]!='N' && talk[0]!='2')
return false;
for(i=0;talk[i]!='\0';i++){
if(talk[i]=='Y'||talk[i]=='N'){
if(talk[i+1]!='Y'&&talk[i+1]!='N'&&talk[i+1]!='2')
return false;
}else if(talk[i]=='2'){
if(talk[i+1]!='y'&&talk[i+1]!='n'&&talk[i+1]!='1'&&talk[i+1]!='\0')
return false;
}else if(talk[i]=='y'||talk[i]=='n'){
if(talk[i+1]!='y'&&talk[i+1]!='n'&&talk[i+1]!='1')
return false;
}else if(talk[i]=='1'){
if(talk[i+1]!='Y'&&talk[i+1]!='N'&&talk[i+1]!='2'&&talk[i+1]!='\0')
return false;
}else
return false;
}
return true;
}