zoukankan      html  css  js  c++  java
  • 作业十二

    一。知识点:

    字符串和字符指针:如果定义一个字符指针接收字符串常量的值,该指针就指向字符串的首字符。这样,字符数组和字符指针都可以用来处理字符串。

    字符数组与字符指针都可以处理字符串,但两者之间有重要区别。

    char sa[]=''this is a ttring";

    char *sp="this is astring";

    定义自古指针后,如果没有对它赋值,指针的值是不确定的,不能明确它指向的内存单元。因此,如果引用未赋值的指针,可能会出现难以预料的结果。例如:

    char *;

    scanf(“%s“,s);

    为尽量避免引用为赋值的指针所造成的危害,在定义指针时,可先将它的初值为空,如char *s=NULL;

    二。常用的字符串处理函数

    字符串的输入和输出:函数scanf()和gets()可用来输入字符串,而printf()和puts()输出字符串。它们在系统文件stdio.h中定义。

    1.scanf:格式控制字符串中使用格式控制说明%s,输入参数必须是字符型组名。该函数遇回车或空格输入结束,并自动将输入的数据和字符串结束符‘’送入数组中.

    2.printf:格式控制字符串中相应的格式控制说明用%s,输出参数可以是字符数组名或字符串常量。输出‘’结束。例如:printf(“%s”,s);

    3.字符串输入函数gets(s):参数s是字符数组名。函数从输入得到一个字符串,遇回车输入结束,自动将输入的数据和‘’送入数组中。采用函数gets()输入的字符串允许带空格。实际上函数gets()有返回值,如果输入成功则返回值是字符串第一个字符的地址,如果输入失败则返回NULL。但一般情况下使用gets()主要是为了输入字符串,而不关心它的返回值.

    4.字符串输出函数puts(s):参数s可以是字符数组名或字符串常量。输出时遇‘’自动将其转换为‘ ’,即输出字符串后换行。同样函数puts()也有返回值,如果成功执行了输出字符串的操作,则返回换行符号‘ ’,否则返回EOF.

    字符串比较函数strcmp(s1,s2)

    和函数strcpy()中对参数的要求不同,函数strcmp()中的参数s1和s2可以是字符数组名或字符串常量。函数strcmp()返回一个整数,给出字符串s1和s2的比较结果:

    若s1和s2相等,返回0。

    若s1大于s2,返回一个正数。

    若s1小于s2,则返回一个负数。

     三。结构的概念与定义:

    结构是C语言中一种新的构造数据类型,它能够把有内在联系的不同类型的数据汇聚成一个整体,使它们相互关联;同时,结构又是一个变量的集合,可以按照对基本数据类型的操作方法单独使用其成员变量。

    结构的嵌套定义:

    在定义嵌套的结构类型时,必须先定义成员的结构类型,再定义主结构类型。

    结构变量的定义和初始化:

    1)单独定义:先定义结构类型,再定义具有这种结构类型的变量;

    2)混合定义:在定义结构类型的同时定义结构体变量;

    struct 结构名{

    类型名 结构成员名1;

    类型名 结构成员2;

    }结构变量名表;

    3)无类型名定义:在定义结构体变量时省略结构体名;

    struct{

    类型名 结构成员1;

    类型名 结构成员2;

    结构变量名表;

    1.找出最长的字符串:输入5个字符串,输出其中最长的字符串。

    #include<stdio.h>
    #include<string.h>
    int main()
    {
    	int i;
    	printf("输入五个字符串:");
    	char sx[80],smax[80];
    	scanf("%s",sx);
    	strcpy(smax,sx);
    	for(i=1;i<5;i++){
    		scanf("%s",sx);
    		if(strcmp(smax,sx)<0)
    		strcpy(smax,sx);
    		}
    		
    	printf("max is %s
    ",smax);
    	return 0;		
    }
    

      

    2.分类统计字符个数:输入一行文字,统计其中的大写字母、小写字母、空格、数字以及其他字符各有多少。

    #include"stdio.h" 
    int main()
    {
        int  a,dx=0,xx=0,kg=0,sz=0,qt=0;
        while((a=getchar())!='
    ')
    
        {
            if(a>='A'&&a<='Z')
                dx++;
            else if(a>='a'&&a<='z')
                xx++;
            else if(a==' ')
                kg++;
            else if(a>='0'&&a<='9')
                 sz++;
             else
                 qt++;
            
        }
        printf("大写字母有:%d
    ",dx);
        printf("小写字母有:%d
    ",xx);
        printf("空格有:%d
    ",kg);
        printf("数字有:%d
    ",sz);
        printf("其他字符有:%d
    ",qt);
    
        return 0;    
    }

    3. 学生信息管理系统。

    假设学生的基本信息包括学号、姓名,三门课程成绩以及个人平均成绩,且最多需要处理50名学生的数据,实现如下功能。

    (1)输入学生基本信息

    (2)输出学生基本信息

    (3)计算每个学生的平均成绩

    (4)按姓名查找学生基本信息

    #include"stdio.h"
    #include"string.h"
    struct student_list{
        int num;
        char name[50];
        int computer,english,math;
        double average;
    };
    int count = 0;
    void new_student(struct student_list students[] );
    void search_student(struct student_list students[],char *name);
    void print_student(struct student_list students[]);
    int main()
    
    {    
        int choice; char name[50];
        struct student_list students[50];
        do{
            printf("******学生的基本信息******
    "); 
            printf("	1:新建
    ");
            printf("	2:查询
    ");
            printf("	3:输出
    ");
            printf("	0:退出
    ");
            printf("请选择功能:");
            scanf("%d",&choice);
            switch(choice){
             case 1: 
                 new_student(students); 
                break;
            case 2:
                printf("请输入要查找的学生姓名:");
                scanf("%s",name);    
                search_student(students,name);
                break;
            case 3:print_student(students);
                break;
            case 0:
                break;
            }
        }while(choice !=0);
        printf("谢谢!
    ");
    
        return 0;
    }
    void print_student(struct student_list students[])
    {
        printf("学生信息列表的学生信息如下:
    ");
        int i;
        for(i=0;i<count;i++)
        {
            printf("%s    %d %d %d %.2lf %d
    ",students[i].name,students[i].computer,students[i].english,students[i].math,students[i].average,students[i].num);
        }
    }
    void new_student(struct student_list students[])
    {
        struct student_list f;
        if(count ==50){
            printf("信息表已满!
    ");
            return;    
        }
        printf("请输入新学生的姓名:");
        scanf("%s",f.name);
        printf("请输入新学生的学号:");
        scanf("%d",&f.num);
        printf("请输入新新学生的计算机成绩:");
        scanf("%d",&f.computer);
        printf("请输入新新学生的英语成绩:");
        scanf("%d",&f.math);
        printf("请输入新新学生的数学成绩:");
        scanf("%d",&f.english);
        students[count]=f;
        count++;
    }
    void search_student(struct student_list students[],char*name)
    {
        int i,flag=0;
        if(count ==0){
            printf("学生信息列表是空的
    ");
            return;
        }
        for(i=0;i<count;i++)
        if(strcmp(name,students[i].name)==0){
            flag=1;
                break;
        }
        if(flag){
            printf("姓名:%s	",students[i].name);
            printf("计算机成绩:%d	",students[i].computer);
            printf("数学成绩:%d	",students[i].math);
            printf("英语成绩:%d	",students[i].english);
            printf("平均成绩:%.2lf	",students[i].average=(students[i].computer+students[i].math+students[i].english)/3.0);                    
            printf("学号:%d
    ",students[i].num);    
        }
        else 
        printf("无此学生信息");
    }

    二。实验心得

    这次作业真的好难,应用了许许多多的知识点。在应用的同时,也出现了不少的错误,经过同学的帮助,解决了问题。

  • 相关阅读:
    DBSCAN密度聚类
    特征工程之特征预处理
    特征工程之特征表达
    特征工程之特征选择
    Adaboost,GBDT和XGboost算法
    036 Go操作NSQ
    035 Go操作Redis
    034 Go操作MySQL
    033 protobuf初识
    032 二进制协议gob及msgpack介绍
  • 原文地址:https://www.cnblogs.com/jiejunxu/p/6170992.html
Copyright © 2011-2022 走看看