一直在思考这个问题,在和学长讨论之后,加上自己不断的实践,总结下来,希望可以帮助到大家##
在一堆数据中找到所需数据:
定义一堆数据;
定义一个找到标志为假;
遍历一堆数据,找到所需数据之后标志改为为真,然后 break;
;
最后判断标志,判断结果。
其实,就是一种标记的思想。这种标记就像人们的身份证一样,就好区分谁是谁。上述简单说成代码就是这样一种模式
int a = 0 ;
int s [] = {1 ,2 ,3 ,4 ,5 };
int tag = 0 ;
int biao;
for (int i = 0 ; i < 5 ; i ++){
if (s [i] == i){
tag= 1 ;
biao = i;
break ;
}
}
if ( tag ){
printf ("找到了,下标是:%d”,biao);
}else{
printf(" 没找到!");
}
自己在最近练习Ç的时候编了这样一段验证登入代码,用结构体存储一些用户名和密码,之后输入的用户名和密码与之进行比对,比对成功即进入系统。正好运用了上述这样一个想法!当然,下述代码中结构体里面我只写入了一个用户名及密码,也可以加,主要体现标记思想在这种情况下的作用。
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#define MAX 20
int flag = 2 ;
int usernum = 0 ;
typedef struct USER
{
char user_name[20 ];
char password[20 ];
}userInformation;
userInformation user[MAX];
int initUserList(){
strcpy (user[usernum].user_name ,"张三" );
strcpy (user[usernum].password ,"key" );
usernum++;
return usernum;
}
int Login( char * user1, char * password){
for (int i = 0 ; i < usernum; i++)
{
if (strcmp ( user1,user[i].user_name) == 0 && strcmp ( password , user[i].password) == 0 )
{
return flag = 1 ;
break ;
}
}
return flag = 2 ;
}
void showMenu()
{
printf ( "欢迎来到学生成绩管理系统!\n" );
printf ("\n" );
printf ( "\t\t\t\t********************************\n" );
printf ( "\t\t\t\t 学生成绩管理系统\n" );
printf ( "\t\t\t\t********************************\n" );
printf ("\n" );
printf ( "\t\t\t\t 1---学生输入 \n" );
printf ( "\t\t\t\t 2---学生插入 \n" );
printf ( "\t\t\t\t 3---学生查询 \n" );
printf ( "\t\t\t\t 4---学生删除 \n" );
printf ( "\t\t\t\t 5---学生输出 \n" );
printf ( "\t\t\t\t 6---计算每名学生的平均分并输出 \n" );
printf ( "\t\t\t\t 7---计算每科的平均分并输出 \n" );
printf ( "\t\t\t\t 8---对学生的平均分排序 \n" );
printf ( "\t\t\t\t 9---统计每门课程的及格率并输出 \n" );
printf ( "\t\t\t\t 10---输出各科的补考名单(包括学号、姓名、成绩) \n" );
printf ( "\t\t\t\t 11---对学生按学号排序 \n" );
printf ( "\t\t\t\t 0---退出 \n" );
printf ("\n" );
printf ( "\t\t\t\t**************************************\n" );
}
int main(void ){
int choose = 0 ;
userInformation user;
char user1[20 ], password[20 ];
while (flag)
{
if (flag == 2 )
{
printf ("请输入用户名:\n" );
scanf ("%s" ,&user1);
printf ("请输入用户密码:\n" );
scanf ("%s" ,&password);
printf ("\n" );
Login(user1,password);
if (flag == 1 )
{
while (flag)
{
showMenu();
printf ("请输入想要进行的操作:\n" );
scanf ("%d" ,&choose);
switch (choose)
{
case 1 :
break ;
case 2 :
break ;
case 3 :
break ;
case 4 :
break ;
case 5 :
break ;
case 6 :
break ;
case 7 :
break ;
case 8 :
break ;
case 9 :
break ;
case 10 :
break ;
case 11 :
break ;
case 0 :
flag = 0 ;
break ;
default :
printf ("input error! please input again!" );
}
}
break ;
}
}
}
printf ("欢迎再次使用,再见!\n" );
system("pause" );
return 0 ;
}