devc++
#include<stdio.h>
#define N 2
struct tele
{
char name;
int telenumber;
char email;
};
struct tele tel[N];
int main()
{
void print(struct tele tel[N]);
int i;
for(i=0;i<N;i++)
{
printf("\n请输入第%d个同学的通讯录:\n",i+1);
printf("姓名:");scanf("%c",&tel[i].name);
printf("电话号码:");scanf("%d",&tel[i].telenumber);
printf("电子邮件地址:");scanf("%c",&tel[i].email);
}
printf("\n");
print(tel);
}
void print(struct tele tel[N])
{
int i;
printf("\n姓名 电话号码 电子邮件地址\n");
for(i=0;i<N;i++)
{
printf("%c %d %c",tel[i].name,tel[i].telenumber,tel[i].email);
printf("\n");
}
}
```题目是建立简单的同学通讯录,输入10个同学的通讯信息(通讯录信息包括姓名、电话号码、电子邮箱)并输出。
为了方便测试,把代码中的人数改少了,代码如下:
#include<stdio.h>
#define N 2
struct tele
{
char name;
int telenumber;
char email;
};
struct tele tel[N];
int main()
{
void print(struct tele tel[N]);
int i;
for(i=0;i<N;i++)
{
printf("\n请输入第%d个同学的通讯录:\n",i+1);
printf("姓名:");scanf("%c",&tel[i].name);
printf("电话号码:");scanf("%d",&tel[i].telenumber);
printf("电子邮件地址:");scanf("%c",&tel[i].email);
}
printf("\n");
print(tel);
}
void print(struct tele tel[N])
{
int i;
printf("\n姓名 电话号码 电子邮件地址\n");
for(i=0;i<N;i++)
{
printf("%c %d %c",tel[i].name,tel[i].telenumber,tel[i].email);
printf("\n");
}
}
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/682554456936172.png "#left")
输入到电子邮件部分(也就是一个字符)就会自动跳过,真的百思不得其解,求解答
另外,为什么scanf函数里面不加&(取地址运算符)就不行呢?我看到书本上的有些可以不加,不知道为什么