吉大软件专硕976-2016年

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

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Manigoldo_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值