《算法笔记》codeup_100000572_C

解答:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct person{
    int num;
    char name[10];
    char sex;
    char job;
    union {
        int clas;
        char position[10];
    }category;
};

int main() {
	int n;
	scanf("%d", &n);
	getchar();
	
	person* person_array = (person*)malloc(sizeof(person));	

    int num;
    char name[10];
    char sex;
    char job;
    char detail[10];
    
    int clas;
    char position[10];
    
    
	for(int i=0; i<=n-1; i++) {
		char s[30];
		gets(s);
		sscanf(s, "%d %s %c %c %s", &num, name, &sex, &job, &detail);
		
		(*(person_array+i)).num = num;                 //.的优先级比*高 
		strcpy((*(person_array+i)).name, name);
		(*(person_array+i)).sex = sex;
		(*(person_array+i)).job = job;
		
		if(job=='s') {
			sscanf(detail, "%d", &clas);
			(*(person_array+i)).category.clas = clas;
			printf("%d %s %c %c %d\n", (*(person_array+i)).num, (*(person_array+i)).name, (*(person_array+i)).sex, (*(person_array+i)).job, (*(person_array+i)).category.clas);
		}
		else if(job == 't') {
			strcpy(position, detail);
			strcpy((*(person_array+i)).category.position, position);
			printf("%d %s %c %c %s\n", (*(person_array+i)).num, (*(person_array+i)).name, (*(person_array+i)).sex, (*(person_array+i)).job, (*(person_array+i)).category.position);
		}
	}
	
	return 0;
}

总结:

  1. union的用法
  2. 题目中的class变量会引起冲突
  3. ""包括字符串,''包括字符
  4. 使用sscanf实现字符串转整型
发布了36 篇原创文章 · 获赞 3 · 访问量 1242

猜你喜欢

转载自blog.csdn.net/Zen_Ivan/article/details/105341692