实例中的某位教师所有信息可以称为一个数据元素,由账号、密码和权限3个数据项组成。首先,教师信息类型采用结构体类型实现,其中成员包括账号、密码和权限3个部分,并且定义一维数组存储多名教师信息,也就是教师信息的初始化,然后,输入当前教师的账号、密码和权限,利用循环结构依次与初始化的教师信息进行比较,比较过程中利用选择嵌套结构进行判断,如果账号和密码均正确,再继续判断权限是否等于1,如果等于1,则显示“教学督导”,否则显示“普通教师”,不再继续比较;如果账号和密码多次验证都是错误,则显示“账号或者密码错误,登录失败!”。
时间: 2023-08-04 16:03:50 浏览: 123
以下是示例代码,供您参考:
```c
#include <stdio.h>
#include <string.h>
#define MAX_TEACHERS 100 // 最大教师数
// 教师信息结构体
struct Teacher {
char account[20]; // 账号
char password[20]; // 密码
int permission; // 权限,1表示教学督导,0表示普通教师
};
int main() {
struct Teacher teachers[MAX_TEACHERS]; // 教师信息数组
int n; // 教师数
printf("请输入教师数:");
scanf("%d", &n);
// 输入教师信息
for (int i = 0; i < n; i++) {
printf("请输入第%d位教师的信息:\n", i+1);
printf("账号:");
scanf("%s", teachers[i].account);
printf("密码:");
scanf("%s", teachers[i].password);
printf("权限(1表示教学督导,0表示普通教师):");
scanf("%d", &teachers[i].permission);
}
// 输入当前教师的账号、密码和权限
char current_account[20], current_password[20];
int current_permission;
printf("\n请输入当前教师的信息:\n");
printf("账号:");
scanf("%s", current_account);
printf("密码:");
scanf("%s", current_password);
printf("权限(1表示教学督导,0表示普通教师):");
scanf("%d", ¤t_permission);
// 比较教师信息
int found = 0; // 是否找到对应教师信息
for (int i = 0; i < n; i++) {
if (strcmp(current_account, teachers[i].account) == 0 && strcmp(current_password, teachers[i].password) == 0) {
found = 1;
if (current_permission == teachers[i].permission) {
printf("登录成功!您的身份是%s。\n", current_permission == 1 ? "教学督导" : "普通教师");
} else {
printf("账号或者密码错误,登录失败!\n");
}
break;
}
}
if (!found) {
printf("账号或者密码错误,登录失败!\n");
}
return 0;
}
```