c语言:用最简单、最常用的方法,从一堆数据中找到所需数据。

一直在思考这个问题,在和学长讨论之后,加上自己不断的实践,总结下来,希望可以帮助到大家##

在一堆数据中找到所需数据:

  • 定义一堆数据;
  • 定义一个找到标志为假;
  • 遍历一堆数据,找到所需数据之后标志改为为真,然后break;;
  • 最后判断标志,判断结果。

其实,就是一种标记的思想。这种标记就像人们的身份证一样,就好区分谁是谁。上述简单说成代码就是这样一种模式

int a = 0;
int s [] = {1,2,3,4,5};
int tag = 0;
int biao;
forint i = 0; i < 5; i ++){
  ifs[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;  //此处即用usernum标记了存储了多少个用户名及密码
}

int  Login( char * user1, char  * password){
        for (int i = 0; i < usernum; i++)  //此循环即运用usernum的标记
        {
            if (strcmp ( user1,user[i].user_name) == 0  &&  strcmp( password , user[i].password) == 0)
            {   
                return flag = 1;  //此处用标记记录是否匹配成功
                break;

            }
        }
        return flag = 2;        //并未成功,将标记设成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)  //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;  //此处运用flag进行系统的推出。
                                    break;
                                default:
                                    printf("input  error! please  input  again!");

                                }   
                             }
                            break;
                     }
                }           

        }
        printf("欢迎再次使用,再见!\n");
        system("pause");
        return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_36657788/article/details/81877999