2008机试

发布时间:2024年01月06日

第一题??素数

输入一个整数,要求输出所有从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;
}

第二题??旋转矩阵

任意输入两个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;
}

第三题??字符串匹配

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

文章来源:https://blog.csdn.net/m0_56366826/article/details/135328582
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。