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