高级语言程序设计课程第六次个人作业

2024高级语言程序设计:https://edu.cnblogs.com/campus/fzu/2024C
高级语言程序设计课程第六次个人作业:https://edu.cnblogs.com/campus/fzu/2024C/homework/13303
学号:102400226
姓名:石华波

//1104.1
#include<stdio.h>

void fun(int m,int *k,int xx[]);

int main(){
    int m,k=0,xx[1001];
    scanf("%d",&m);
    fun(m,&k,xx);
    printf("%d\n",k);
    for(int i=0;i<k;i++){
        printf("%d ",xx[i]);
    }
    return 0;
}

void fun(int m,int *k,int xx[]){
    xx[(*k)++]=1;
    for(int i=3;i<m;i++){
        for(int j=2;j<=i*i;j++){
            if(i%j==0){
                xx[(*k)++]=i;
                break;
            }
        }
    }
}

//1104.2
#include<stdio.h>
#include<string.h>

void StringCopy_m_from_n(char str1[],char str2[],int n,int m);

int main(){
    char str1[1001],str2[1001];
    int m;
    scanf("%s %d",str1,&m);
    StringCopy_m_from_n(str1,str2,strlen(str1),m);
    printf("%s",str2);
    return 0;
}

void StringCopy_m_from_n(char str1[],char str2[],int n,int m){
    int c=0;
    for(int i=m-1;i<=n;i++) str2[c++]=str1[i];
}

//1104.3
#include<stdio.h>

int main(){
    int num[1001],n=0,isSwapped,temp;
    while(scanf("%d",&num[n++])!=EOF);
    for(int i=0;i<n-1;i++){
        isSwapped=0;
        for(int j=0;j<n-i-1;j++){
            if(num[j]>num[j+1]){
                temp=num[j];
                num[j]=num[j+1];
                num[j+1]=temp;
                isSwapped=1;
            }
        }
        if(!isSwapped) break;
    }
    for(int i=0;i<n-1;i++) printf("%d ",num[i]);
    return 0;
}

//1104.4
#include<stdio.h>

void ReverseSort(int *start,int *end); 

int main(){
    int arr[1001],n=0;
    while(scanf("%d",&arr[n++])!=EOF);
    int *start=arr,*end=arr+n-2;
    ReverseSort(start,end);
    for(int i=0;i<n-1;i++) printf("%d ",arr[i]);
    return 0;
}

void ReverseSort(int *start,int *end){
    int temp;
    while(start<end){
        temp=*start;
        *start=*end;
        *end=temp;
        start++;
        end--;
    }
}

//1104.5
#include<stdio.h>

void printarr(char *arr);

int main(){
    char arr[1001];
    scanf("%s",arr);
    printarr(arr);
    return 0;
}

void printarr(char *arr){
    while(*arr!='\0') printf("%c",*arr++);
}

//1104.6
#include<stdio.h>
#include<limits.h>

void LookValue(int *arr,int n,int m);

int main(){
    int n,m,is=0;
    scanf("%d %d",&n,&m);
    int arr[n][m]; 
    while(1){
        for(int i=0;i<n;i++) {
            for(int j=0;j<m;j++) {
                if(scanf("%d",&arr[i][j])==EOF) {
                    is=1;
                    break;
                }
            }
            if(is) break;
        }
        if(is) break;
        LookValue(&arr[0][0],n,m);
    }
    return 0;
}

void LookValue(int *arr,int n,int m){
    int max=INT_MIN,min=INT_MAX,maxr=0,maxc=0,minr=0,minc=0;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(arr[i*m+j]>max){
                max=arr[i*m+j];
                maxr=i;
                maxc=j;
            }
            if(arr[i*m+j]<min){
                min=arr[i*m+j];
                minr=i;
                minc=j;
            }
        }
    }
    printf("Max=arr[%d][%d]=%d,Min=arr[%d][%d]=%d\n",maxr,maxc,max,minr,minc,min);
}

//1104.7
#include<stdio.h>

int main(){
    int T,n,Tab[11][11]={0},judge;
    scanf("%d",&T);
    while(T--){
        judge=1;
        scanf("%d",&n);
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                scanf("%d",&Tab[i][j]);
            }
        }
        for(int h=2;h<=n;h++) {
            if(!judge) break;
            for(int l=1;l<h;l++) {
                if(Tab[h][l]!=0) {
                    printf("No\n");
                    judge=0;
                    break;
                }
            }
        }
        if(judge) printf("Yes\n");
    }
    return 0;
}

//1104.8
#include<stdio.h>
#include <stdlib.h>
#include <time.h>

int isInArr(int l,const int *arr);
int compare(const void *a, const void *b);

int main(){
    srand(time(NULL));
    int arr[5][5],k=0;
    for(int i=0;i<5;i++) {
        for(int j=0;j<5;j++) {
            arr[i][j]=rand()%100+1;
        }
    }
    qsort(arr,25,sizeof(int),compare);
    for(int i=0;i<5;i++) {
        for(int j=0;j<5;j++) {
            printf("%d ",arr[i][j]);
        }
        printf("\n");
    }
    while(scanf("%d",&k)!=EOF) {
        if(isInArr(k,&arr[0][0])) printf("YES\n");
        else printf("NO\n");
    }
    return 0;
}

int isInArr(int l,const int *arr) {
    int start=0,end=24;
    if(l<arr[start]||l>arr[end]) return 0;
    while(start<=end) {
        int mid=(start+end)/2;
        if(arr[mid]==l) return 1;
        if(arr[mid]>l) end=mid-1;
        else start=mid+1;
    }
    return 0;
}

int compare(const void *a, const void *b) {
    return (*(int*)a - *(int*)b);
}

//1104.9
#include<stdio.h>

int isPrime(int a) {
    if(a==1) return 0;
    for(int i=2;i*i<=a;i++) {
        if(a%i==0) {
            return 0;
        }
    }
    return 1;
}

int split(int n,int *a,int *b) {
    if(n<4) return 0;
    for(int i=2;i<=n-2;i++){
        if(isPrime(i)&&isPrime(n-i)){
            *a=i;
            *b=n-i;
            return 1;
        }
    }
    return 0;
}


int main(){
    int N,a,b;
    scanf("%d",&N);
    if(split(N,&a,&b)) printf("%d=%d+%d",N,a,b);
    else printf("Can not be split.");
    return 0;
}

//1104.10
#include <stdio.h>
#include <string.h>

void shift(char *s, int n) {
    int len = strlen(s); 
    n=n%len;
    char temp[n];
    memcpy(temp, s, n);
    memmove(s, s + n, len - n);
    memcpy(s + len - n, temp, n);
}

int main() {
    char str[101];
    int n;
    scanf("%s %d",str,&n);
    shift(str,n);
    printf("%s",str);
    return 0;
}

//1104.11
#include <stdio.h>

int isMagic(int size,int mar[size][size]);
int sumRow(int size,int mar[size][size]);
int sumColumn(int size,int mar[size][size]);
int sumDiagonal(int size,int mar[size][size]);

int main() {
    int size;
    scanf("%d",&size);
    int mar[size][size];
    for(int i=0;i<size;i++) {
        for(int j=0;j<size;j++) {
            scanf("%d",&mar[i][j]);
        }
    }
    if(isMagic(size,mar)) printf("YES\n");
    else printf("NO\n");
    return 0;
}

int isMagic(int size,int mar[size][size]) {
    int sumrow,sumcolumn,sumdiagonal;
    sumrow=sumRow(size,mar);
    sumcolumn=sumColumn(size,mar);
    sumdiagonal=sumDiagonal(size,mar);
    if(sumrow==0||sumcolumn==0||sumdiagonal==0) return 0;
    if(sumrow==sumcolumn&&sumrow==sumdiagonal) return 1;
    return 0;
}
int sumRow(int size,int mar[size][size]) {
    int temp,sum;
    for(int i=0;i<size;i++) {
        sum=0;
        for(int j=0;j<size;j++) {
            sum+=mar[i][j];
            temp=sum;
        }
        if(sum!=temp) return 0;
    }
    return sum;
}

int sumColumn(int size,int mar[size][size]) {
    int temp,sum;
    for(int i=0;i<size;i++) {
        sum=0;
        for(int j=0;j<size;j++) {
            sum+=mar[j][i];
            temp=sum;
        }
        if(sum!=temp) return 0;
    }
    return sum;
}

int sumDiagonal(int size,int mar[size][size]) {
    int sum1=0,sum2=0;
    for(int i=0,j=0;i<size;i++,j++) sum1+=mar[i][j];
    for(int i=size-1,j=0;i>=0;i--,j++) sum2+=mar[i][j];
    if(sum1!=sum2) return 0;
    return sum2;
}

//1104.12
#include<stdio.h>

int StrCmp(char *s1, char *s2){
    while(*s1&&*s1==*s2) {
        s1++;
        s2++;
    }
    if(*s1<*s2) return -1;
    if(*s2<*s1) return 1;
    return 0;
}

int main(){
    char str1[1001],str2[1001];
    scanf("%s %s",str1,str2);
    printf("%d",StrCmp(str1,str2));
    return 0;
}

posted @ 2024-11-08 19:25  102400226石华波  阅读(18)  评论(0编辑  收藏  举报