c语言有关结构体的问题

img

img

img


为什么我这样的代码输出不了,不知道哪里有问题。求解答,谢谢。

#include <iostream>
#include <cstdio>
#include <string.h>
using namespace std;

struct name
{
    char a[10];
    char b[10];
    char c[10];
};

int main()
{
    int t = 0, f = 0, g = 0;
    int n, i ;
    char ch[100];
    scanf("%d", &n);
    struct name p1;
    strcpy(p1.a, "li");
    strcpy(p1.b, "zhang");
    strcpy(p1.c, "sun");

    for(i = 0; i < n; i++)
    {
        scanf("%s", ch);
        if(strcmp(ch, p1.a) == 0) t++;
        if(strcmp(ch, p1.b) == 0) f++;
        if(strcmp(ch, p1.c) == 0) g++;
    }
    printf("%d %d %d\n", t, f, g);
    return 0;

运行之后还要自己输入值的

a,b,c数组必须指定长度的

供参考!

img

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

typedef struct person
{
    char s1[20];
    int n1;

    char s2[20];
    int n2;

    char s3[20];
    int n3;
} per;

int main(int argc, char *argv[])
{
    int n;

    per p;
    strcpy(p.s1, "Ling");
    p.n1 = 0;

    strcpy(p.s2, "Zhang");
    p.n2 = 0;

    strcpy(p.s3, "Sun");
    p.n3 = 0;

    do
    {
        scanf("%d", &n);
    } while (n < 0);

    char tmp[20];
    for (int i = 0; i < n; i++)
    {
        scanf("%19s", tmp);
        if (!strcmp(tmp, p.s1))
        {
            p.n1++;
        }
        else if (!strcmp(tmp, p.s2))
        {
            p.n2++;
        }
        else if (!strcmp(tmp, p.s3))
        {
            p.n3++;
        }
    }
    puts("\n");
    printf("%s:%d\n%s:%d\n%s:%d\n", p.s1, p.n1, p.s2, p.n2, p.s3, p.n3);

    return 0;
}