c语言简单运用,简单运用

img

img


写了90%了,运行不了,一直报错


#include
#include
typedef struct{
    char name[10];
    int qq;
    char xb;
    int dj;
    char tx[10];
}gg;
int main(){
    gg a[20],b[20];
    int n,m,i,j,num;
    scanf("%d %d",&n,&m);
    for(i=0;iscanf("%s %d %s %d %s",a[i].name,&a[i].qq,a[i].xb,&a[i].dj,a[i].tx);
    }
    for(i=0;iscanf("%d %d",&b[i].qq,&num);
        for(j=0;jif(strcmp(b[j].qq,a[i].qq)==0)
                break;
        }
    
        
        switch(num){
            case 1:{
                scanf("%s",b[j].name);
                strcpy(b[j].name,a[i].name);
            }break;
              
            case 2:{
                scanf("%c",&b[j].xb);
                b[j].xb=a[i].xb;
            }break;
            case 3:{
                scanf("%d",&b[j].dj);
                b[j].dj=a[i].dj;
            }break;
            case 4:{
                scanf("%s",b[j].tx);
                strcpy(b[j].tx,a[i].tx);
            }break;
        }
    }
    for(i=0;iprintf("[%d]:%s %d %s %d %s\n",i+1,a[i].name,&a[i].qq,a[i].xb,&a[i].dj,a[i].tx);
    }
}

修改如下,供参考:

#include<stdio.h>
#include<string.h>
typedef struct {
    char name[10];
    long long qq;  //int 
    char xb;
    int  dj;
    char tx[10];
}gg;
int main() {
    gg a[20], b[20];
    int n, m, i, j, num;
    scanf("%d %d", &n, &m);
    for (i = 0; i < n; i++) {
        scanf("%s %lld %c %d %s", a[i].name, &a[i].qq, &a[i].xb, &a[i].dj, a[i].tx);
        //scanf("%s %d %s %d %s", a[i].name, &a[i].qq, &a[i].xb, &a[i].dj, a[i].tx);
    }
    for (i = 0; i < m; i++) {
        scanf("%lld %d", &b[i].qq, &num);
        for (j = 0; j < n; j++) {
            if (b[i].qq == a[j].qq) //if (strcmp(b[j].qq, a[i].qq) == 0)
                break;
        }
        switch (num) {
        case 1: {
            scanf("%s", b[i].name);  //scanf("%s", b[j].name);
            strcpy(a[j].name, b[i].name); //strcpy(b[j].name, a[i].name);
        }break;

        case 2: {
            scanf(" %c", &b[i].xb); // &b[j].xb
            a[j].xb = b[i].xb;     //b[j].xb = a[i].xb; 
        }break;
        case 3: {
            scanf("%d", &b[i].dj);  // &b[j].dj
            a[j].dj = b[i].dj;   //b[j].dj = a[i].dj;
        }break;
        case 4: {
            scanf("%s", b[i].tx); //b[j].tx
            strcpy(a[j].tx, b[i].tx); //strcpy(b[j].tx, a[i].tx);
        }break;
        }
    }
    for (i = 0; i < n; i++) {
        printf("[%d]:%s-%lld-%c-%d-%s\n", i + 1, a[i].name, a[i].qq, a[i].xb, a[i].dj, a[i].tx);
        // printf("[%d]:%s %d %s %d %s\n",i+1,a[i].name,&a[i].qq,a[i].xb,&a[i].dj,a[i].tx);
    }
    return 0;
}

是不是最后输出语句的问题,该这样试试:

#include<stdio.h>
#include<string.h>
typedef struct {
    char name[10];
    long long qq;  
    char xb;
    int  dj;
    char tx[10];
}gg;
int main() {
    gg a[20], b[20];
    int n, m, i, j, num;
    scanf("%d %d", &n, &m);
    for (i = 0; i < n; i++) {
        scanf("%s %lld %c %d %s", a[i].name, &a[i].qq, &a[i].xb, &a[i].dj, a[i].tx);
    }
    for (i = 0; i < m; i++) {
        scanf("%lld %d", &b[i].qq, &num);
        for (j = 0; j < n; j++) {
            if (b[i].qq == a[j].qq)
                break;
        }
        switch (num) {
        case 1: {
            scanf("%s", b[i].name);  
            strcpy(a[j].name, b[i].name);
        }break;

        case 2: {
            scanf(" %c", &b[i].xb); 
            a[j].xb = b[i].xb;    
        }break;
        case 3: {
            scanf("%d", &b[i].dj);
            a[j].dj = b[i].dj;  
        }break;
        case 4: {
            scanf("%s", b[i].tx); 
            strcpy(a[j].tx, b[i].tx); 
        }break;
        }
    }
    for (i = 0; i < n; i++) {
        printf(i == 0 ? "[%d]:%s-%lld-%c-%d-%s" : "\n[%d]:%s-%lld-%c-%d-%s", 
                        i + 1, a[i].name, a[i].qq, a[i].xb, a[i].dj, a[i].tx);
    }
    return 0;
}