发布网友 发布时间:2022-04-22 01:17
共4个回答
热心网友 时间:2023-07-15 23:39
#include <stdio.h>
#include<string.h>
struct st{
char a[15];
long b;
};
int main ()
{
struct st s[111];
long end[111];
char t[50][14],other[14]={'333'},son[50][14],gson[50][14];
char x[11];
int n;
scanf("%d",&n);
getchar();
for(int i=0;i<n;i++)
{
scanf("%s%ld",s[i].a,&s[i].b);
}
for(int i=0;i<n;i++)//排序
{
for(int j=0;j<n-1-i;j++)
{
if(strcmp(s[j].a,s[j+1].a)>0)
{
strcpy(x,s[j].a);
strcpy(s[j].a,s[j+1].a);
strcpy(s[j+1].a,x);
}
}
}
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(strcmp(s[i].a,s[j].a)==0&&s[i].b==s[j].b)
{
strcpy(s[i].a,other);//去名字和号码同时重复的
s[i].b=0;
}
}
}
int k=0;
for(int i=0;i<n;i++)
{
if(strcmp(s[i].a,other)!=0)
{
strcpy(t[k],s[i].a);
end[k]=s[i].b;
k++;
}
}
for(int i=0;i<k;i++)
{
strcpy(son[i],t[i]);
}
for(int i=0;i<k-1;i++)//在上面的基础上再去名字重复的;
{
for(int j=i+1;j<k;j++)
{
if(strcmp(son[i],son[j])==0)
{
strcpy(son[i],other);
}
}
}
int word=0;
for(int i=0;i<k;i++)
{
if(strcmp(son[i],other)!=0)
{
strcpy(gson[word],son[i]);
word++;
}
}
printf("\n");
int sum=0;
for(int i=0;i<word;i++)
{
sum=0;
for(int j=0;j<k;j++)
{
if(strcmp(gson[i],t[j])==0)
{
if(sum==0)
printf("%s %ld\n",gson[i],end[j]);
if(sum!=0)
printf("%s_%d %ld\n",gson[i],sum,end[j]);
sum++;
}
}
}
return 0;
}
热心网友 时间:2023-07-15 23:40
struct s
{ int i;
struct s *i2;
};
static struct s a[3]={1, &a[1],2,&a[2],3,&a[0]};
static struct s *ptr;
ptr=&a[1];
A)ptr->i++ B)ptr++->I C)*ptr->i D)++ptr->i
A选项:ptr指向的是a[1],ptr->i可表示为a[1].i,也就是2。i++运算是先用后加,所以A表达式的值为2
D选项:++ptr->i的意思是将指针ptr向后移一个元素,再取这个元素中i的值,也就是a[2].i的值3
#include <stdio.h>
typedef union
{ long i; //4字节
int k[5]; //2*5=10字节
char c; //1字节
} DATE; //DATA类型的变量将占用10字节
struct date
{ int cat; //2字节
DATE cow; //10字节
double dog;//8字节
} too; //too占用2+10+8=20字节
DATE max;
main()
{ printf("%d\n",sizeof(struct date)+sizeof(max));
sizeof()的功能是求某种数据类型或某个变量所占字节数
struct data类型的数据占20个字节。max占10个字节。相加为30
}
A)25 B)30 C)18 D)8追问struct s *i2;和static struct s a[3]={1, &a[1],2,&a[2],3,&a[0]};static struct s *ptr;都是什么意思?而且i是几怎么知道,另外为什么a[1].i也就是2?
追答struct s *i2的意思是定义一个指针变量i2,这个变量的类型是结构体struct s类型的.
static struct s a[3]定义了一个静态结构体类型struct s数组.数组中有三个元素,值为{}中的值.
static struct s *ptr定义了一个静态的结构体struct s类型的指针.
程序中ptr指向的是a[1]的地址.*ptr就是a[1]中的值,a[1]的值由两部分组成,即a[1].i和a[1].*i2
用ptr表示为ptr->i和ptr->*i2.
a[0].i=1
a[0].*i2=&a[1]
a[1].i=2
a[1].*i2=&a[2]
热心网友 时间:2023-07-15 23:40
5:typedef union
{ long i;// 4字节数
int k[5];//10字节数
char c;//1 字节数
} DATE;
union 总字节数为10 ; union共同体占同一个内存区域(共享) 内存为成员内最大的内存=10
struct date
{ int cat; //2字节数
DATE cow;//10字节数
double dog;//8字节数
} too;
struct : 结构体中 各个成员占()占有内存,结构体大小为各个成员的和 (2+10+8=20)
DATE max; //10字节 因为为union内成员
printf("%d\n",sizeof(struct date)+sizeof(max) // 20+10=30;
热心网友 时间:2023-07-15 23:41
a=2,a的含义是(ptr->i)++
b=2,b的含义是(ptr++)->i
c的写法是错误,c的表示是*(ptr->i)
d=3,d的含义是++(ptr->i)
->的优先级最高,++和*的优先级比->低