printf("请输入学生姓名:"); scanf("%s", s->stu.name);以上代码为什么不加&符号
时间: 2024-06-18 11:04:30 浏览: 138
在C语言中,数组名本身就是一个指针,指向数组的首元素,所以在使用scanf()函数读取数组时不需要加上&符号。在该代码中,s->stu.name是一个字符数组,它可以被视为指向该数组首元素的指针。因此,如果在scanf()函数中加上&符号,则会将&s->stu.name解释为一个字符指针的地址,而不是字符数组的地址。这样会导致程序发生错误。
相关问题
// 增加学生记录 void add_stu(SqList *l) { printf("请输入学号:"); scanf("%s", l->stu[l->studentCount].NO); printf("请输入姓名:"); scanf("%s", l->stu[l->studentCount].name); printf("请输入性别(M表示男性,F表示女性):"); scanf(" %c", &l->stu[l->studentCount].sex); printf("请输入成绩:"); scanf("%f", &l->stu[l->studentCount].score); l->studentCount++; }
这段代码是关于学生记录的,具体来说是在向一个线性表中添加学生记录。通过用户输入学号、姓名、性别和成绩,然后将这些信息存储到线性表中。其中,NO、name、sex和score分别表示学生的学号、姓名、性别和成绩,studentCount表示当前线性表中已经有的学生记录数。这段代码中的操作是往线性表中添加一条新的学生记录。
C语言如何改进这段代码void id(){ int sID; printf("请输入要查找的学生学号: \n"); scanf("%d",&sID); Node* p=g_head; while(p!=NULL){ if(p->stu1.ID==sID){ printf("\t%d\t,%s\t,%s\t,%s\t,%s\t,%s\t,%s\t\n",p->stu1.ID,p->stu1.name,p->stu1.sex,p->stu1.Class,p->stu1.date,p->stu1.Tel,p->stu1.home); } p=p->pNext; } if(p==NULL){ printf("无该学生信息"); } } void Name(){ char sName[20]; printf("请输入要查找的学生姓名: \n"); scanf("%s",&sName); Node* p=g_head; while(p!=NULL){ if(strcmp(p->stu1.name,sName)==0){ printf("\t%d\t,%s\t,%s\t,%s\t,%s\t,%s\t,%s\t\n",p->stu1.ID,p->stu1.name,p->stu1.sex,p->stu1.Class,p->stu1.date,p->stu1.Tel,p->stu1.home); } p=p->pNext; } if(p==NULL){ printf("无该学生信息"); } } void tel(){ char sTel[20]; printf("请输入要查找的学生联系方式: \n"); scanf("%s",&sTel); Node* p=g_head; while(p!=NULL){ if(strcmp(p->stu1.Tel,sTel)==0){ printf("\t%d\t,%s\t,%s\t,%s\t,%s\t,%s\t,%s\t\n",p->stu1.ID,p->stu1.name,p->stu1.sex,p->stu1.Class,p->stu1.date,p->stu1.Tel,p->stu1.home); } p=p->pNext; } if(p==NULL){ printf("无该学生信息"); } } void find() { printf("按学号查询请按1\n"); printf("按姓名查询请按2\n"); printf("按联系方式查询请按3\n"); int i; scanf("%d",&i); switch(i) { case 1: id(); break; case 2: Name(); break; case 3: tel(); break; } }使其能在学生信息管理系统中运行
这段代码看起来是在学生信息管理系统中实现了按学号、姓名、联系方式查询学生信息的功能。为了使其能在学生信息管理系统中运行,你需要在该系统的主函数中调用find()函数。具体来说,在主函数中添加如下代码即可:
```c
int main()
{
// 其他代码
find(); // 调用查询函数
// 其他代码
return 0;
}
```
这样,在运行学生信息管理系统时,程序会提示用户按照不同的查询方式进行查询,用户输入相应的数字后,程序会调用相应的查询函数进行查询。注意,为了使查询函数能正确地读取学生信息,你需要在查询函数的开头添加如下代码:
```c
extern Node* g_head; // 声明全局变量g_head
```
这样,查询函数就能正确地读取g_head指向的链表了。
阅读全文