#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;
}