2008年北航机考题

1.素数

输入一个整数,要求输出所有从1到这个整数之间个位为1的素数,如果没有则输出-1(30分)

#include<stdio.h>

int main()
{
    int x;
    int flag=0,k=0;
    int i,j;
    while(scanf("%d",&x)!=EOF){
    int a[x];
    for( j=1;j<x;j++){
    for( i=2;i<j;i++){
        if(j%i==0){
            break;
        }
    }
    if(i==j&&j%10==1){
        a[k++] = j;
        flag++;
    }
    }
    if(!flag)printf("-1");
    else {
        for(int i=0;i<k-1;i++){
            printf("%d\t",a[i]);
        }
        printf("%d\n",a[k-1]);
    }
    k = 0;
    flag = 0;
    }
    return 0;
}

2.旋转矩阵

任意输入两个9阶以下矩阵,要求判断第二个是否是第一个的旋转矩阵,如果是,输出旋转角度(0、90、180、270),如果不是,输出-1。

要求先输入矩阵阶数,然后输入两个矩阵,每行两个数之间可以用任意个空格分隔。行之间用回车分隔,两个矩阵间用任意的回车分隔。

#include<stdio.h>

int main()
{
    int m;
    int flag = 0;
    while(scanf("%d",&m)!=EOF){

    int a[m][m];
    int b[m][m];

    for(int i=0;i<m;i++)
    for(int j=0;j<m;j++){
        scanf("%d",&a[i][j]);
    }

    for(int i=0;i<m;i++)
    for(int j=0;j<m;j++){
        scanf("%d",&b[i][j]);
    }

    for(int i=0;i<m;i++)
    for(int j=0;j<m;j++){
        if(a[i][j]==b[i][j]){
            flag++;
        }
    }
    if(flag==m*m)printf("0\n");
    flag =0;

    for(int i=0;i<m;i++)
    for(int j=0;j<m;j++){
        if(a[i][j]==b[j][m-1-i]){
            flag++;
        }
    }
    if(flag==m*m)printf("90\n");
    flag =0;

    for(int i=0;i<m;i++)
    for(int j=0;j<m;j++){
        if(a[i][j]==b[m-1-i][m-1-j]){
            flag++;
        }
    }
    if(flag==m*m)printf("180\n");
    flag =0;

    for(int i=0;i<m;i++)
    for(int j=0;j<m;j++){
        if(a[i][j]==b[m-1-j][i]){
            flag++;
        }
    }
    if(flag==m*m)printf("270\n");
    flag =0;
   }
    return 0;
}


3.字符串匹配

从string.in中读入数据,然后用户输入一个短字符串。要求查找string.in中和短字符串的所有匹配,输出行号、匹配字符串到string.out文件中。匹配时不区分大小写,并且可以有一个用中括号表示的模式匹配。如“aa[123]bb”,就是说aa1bb、aa2bb、aa3bb都算匹配。(60分)




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值