首页 > 技术文章 > 第十二次作业

zscswd1368 2016-12-13 13:52 原文

1.找出最长的字符串

#include<stdio.h>
#include<string.h>
int main()
{
int max=0,math,i;
char s1[80],s2[80];
for(i=1;i<=5;i++)
{
gets(s2);
math=strlen(s2);
if(math>max)
{
max=math;
strcpy(s1,s2);
}
}
puts(s1);
printf("%d",max);
return 0;
}

 

 

 

 

2.分类统计字符个数

#include<stdio.h>
#include<string.h> 
int main()
{
    char str[50];
    int i,dx,xx,math,kg,qt;
    dx=xx=math=kg=qt=0;
    gets(str);
    for(i=0;i<strlen(str);i++)
    {
        if(str[i]>='A'&&str[i]<='Z')
            dx++;
        else if(str[i]>='a'&&str[i]<='z')
            xx++;
        else if(str[i]>='0'&&str[i]<='9')
            math++;
        else if(str[i]==' ')
            kg++;
        else
            qt++;
    } 
    printf("大写字母%d个    小写字母%d个    数字%d个    空格%d个    其他字符%d个\n",dx,xx,math,kg,qt);
    return 0;
}

 

 

 

 

 

 

 

3.学生信息管理系统

#include<stdio.h>
#include<string.h>
struct studys_list
{
    char name[10];
    char xh[20];
    int math,english,china;
    double average;
};
int count=0;
void new_study(struct studys_list studys[]); 
void print_study(struct studys_list studys[]);
void search_study(struct studys_list studys[],char *name);
void search_study(struct studys_list studys[],char *name);
int main()
{
    int ch;
    char name[10]; 
    struct studys_list studys[50]; 
    do
    {
        printf("\t***学生信息管理系统***\n");
        printf("\t1.输入学生信息\n");
        printf("\t2.输出学生信息\n");
        printf("\t3.按姓名查找学生本信息\n");
        printf("\t0:退出\n");
        scanf("%d",&ch);
            switch(ch)
            {
            case 1:new_study(studys);break;
            case 2:print_study(studys);break;
            case 3:printf("请输入学生姓名\n");
                   scanf("%s",name);
                     search_study(studys,name);
                   break;
            case 0:break;
            }
    }while(ch!=0);
    return 0;
} 
void new_study(struct studys_list studys[])
{
    struct studys_list s;
    if(count==50)
    {
        printf("已达上限!");
        return;
    }
    printf("请输入学生姓名");
    scanf("%s", s.name);
    printf("请输入学生学号");
    scanf("%s",s.xh);
    printf("请输入数学成绩");
    scanf("%d",&s.math);
    printf("请输入英语成绩");
    scanf("%d",&s.english);
    printf("请输入语文成绩");
    scanf("%d",&s.china);
    s.average=(s.math+s.english+s.china)/3;
    studys[count]=s;
    count++;
}


void print_study(struct studys_list studys[])
{
    
    printf("学生基本信息为:\n");
    int i;
    for(i=0;i<count;i++)
    {
        printf("%s    %.1lf  %s\n",studys[i].name,studys[i].average,studys[i].xh);
        printf("%d    %d  %d\n",studys[i].math,studys[i].china,studys[i].english);
    }
}

void search_study(struct studys_list studys[],char *name)
{
    int i,flag=0;
    if(count==0){
        printf("无学生信息\n");
        return;
    }
    for(i=0;i<count;i++)
        if(strcmp(name,studys[i].name)==0){
            flag=1;
                break;
        }
        if(flag){
            printf("姓名:%s\t",studys[i].name);
            printf("语文成绩:%d\t",studys[i].china);
            printf("数学成绩:%d\t",studys[i].math);
            printf("英语成绩:%d\t",studys[i].english);
            printf("平均成绩:%.2lf\t",studys[i].average);
            printf("学号:%s\n",studys[i].xh);
        }
}

 

 

 

 

 

 

知识点

1.puts()gets()的用法

2.strcpy(s1,s2)把2付给1

  strcat(s1,s2)2与1合并付给1

  strcmp(s1,s2)1与2比大小

  strcpy()计算字符串长度

遇到的问题与解决方法

在编写第二个的时候没有找到方向,于是请求了同学的帮助

在编写第三个的时候遇到了很多问题,一部分经过看书解决,一部分经过自己的多次试验,一部分请求老师的帮助,结果发现了是我&符号出现了问题,我并没有很好地理解&的意义

推荐阅读