请问为什么输入14位的数字学号却显示10位乱组数字,改如何更改呢

//采用顺序线性表解决宿舍管理问题 (C语言)
#include
#include
#include
#define N 40 //线性表存储空间的初始分配量
#define increase 10 //线性表存储空间的分配量增量
int f,t=0; //定义全局变量
typedef struct

{
char name[20];
int num; //学号和房号都为整型
int room;
}stu;
stu stud;
typedef struct
{
int length; //当前长度
stu elem; //存储空间基址
int listsize; //当前分配的存储容量
}linklist;

void init(linklist &l)//线性表初始化
{
l.length=0;
l.elem=(stu *)malloc(N*sizeof(stu ));
l.listsize=N;
}
void menu()//操作菜单
{
printf("\n");
printf(" *
*************请按键选择操作****************\n");
printf("\n");printf("\n");
printf(" 1 按姓名排序 2 按学号排序\n");
printf("\n");
printf(" 3 按房号排序 4 按姓名查找\n");
printf("\n");
printf(" 5 按学号查找 6 按房号查找\n");
printf("\n");
printf(" 7 按学号插入 8 按学号删除\n");
printf("\n"); printf("\n"); printf("\n"); printf("\n");
printf("提示:当输入的数字键为0时,退出操作\n");
if(t==1)
{
printf("请输入数字键(1~8为操作键):");//1~8为有效数字操作键
scanf("%d",&f);
if(f9)
{
system("cls");
printf("\n");
printf("输入数字不对,请在原处重输!\n"); printf("\n");
menu();
}
}

}

void disp() //返回主界面
{
char c;
fflush(stdin);
printf("\n");
printf("请按任意键进入主界面:");
scanf("%c",&c);
system("cls");
}
void panduan3() //如果已无学生记录则返回主界面
{
printf("\n");
printf("已无学生记录\n");
printf("\n");
disp();
menu();
}

void shuru(linklist l) //输入学生的信息
{
printf("请输入姓名:");
fflush(stdin); // 清空输入缓冲区,得到正确的输入数据
gets(stud.name); //输入一行字符串(姓名)
printf("请输入学号:");
scanf("%d",&stud.num);
printf("请输入房号:");
scanf("%d",&stud.room);
}
void create(linklist &l)//创建学生信息表
{
if(l.length>=l.listsize) //判断学生的人数是否超过初值,如果超过,则重新分配
{
stu newbase;
newbase=(stu
)realloc11111(l.elem,(N+increase)*sizeof(stu ));
l.elem=newbase;
l.listsize+=increase;
}
int i=2;
char ch;
printf("\n");
printf(" **************************开始创建线性表***************************\n");printf("\n");
printf("请输入第1个学生的信息\n");
shuru(l); //调用输入函数
ch=getchar();
strcpy111(l.elem[l.length].name,stud.name);
l.elem[l.length].num=stud.num;
l.elem[l.length].room=stud.room;
l.length++;
printf("\n");
printf("是否继续输入?:");
scanf("%c",&ch);
printf("\n");printf("\n");
while(ch=='y')
{

   printf("请输入第%d个学生的信息\n",i);
   shuru(l);
strcpy(l.elem[l.length].name,stud.name);
    l.elem[l.length].num=stud.num;
    l.elem[l.length].room=stud.room;
    l.length++;
i++;
ch=getchar(); printf("\n");
printf("是否继续输入?<y/n>:");
scanf("%c",&ch);
printf("\n");printf("\n");
}

if(ch=='n') system111("cls");

}
void sort3(linklist &l)//按房号排序(采用冒泡排序)
{
int i,j;
stu temp;
for(i=0;i for(j=i+1;j if(l.elem[i].room>l.elem[j].room)
{
temp=l.elem[i];
l.elem[i]=l.elem[j];
l.elem[j]=temp;
}

}

void sort2(linklist &l)//按学号排序(采用冒泡排序)
{
int i,j;
stu temp;
for(i=0;i for(j=i+1;j if(l.elem[i].num>l.elem[j].num)
{
temp=l.elem[i];
l.elem[i]=l.elem[j];
l.elem[j]=temp;
}

}
void sort1(linklist &l)//按姓名排序(采用冒泡排序)
{
int i,j;
stu temp;
for(i=0;i for(j=i+1;j if(strcmp(l.elem[i].name,l.elem[j].name)>0)
{
temp=l.elem[i];
l.elem[i]=l.elem[j];
l.elem[j]=temp;
}

}
void print1(linklist &l)//打印学生信息
{
int i;
printf("\n");
printf("姓名 学号 房号\n");printf("\n");
for(i=0;i<l.length;i++)
printf("%-15s %-3d %5d\n",l.elem[i].name,l.elem[i].num,l.elem[i].room);
}
void print2(linklist &l,int mid) //打印查找到的学生信息
{

    printf("查找成功----->该学生信息为:\n");
    printf("姓名          学号     房号\n");printf("\n");
    printf("%-15s %-5d %-5d\n",l.elem[mid].name,l.elem[mid].num,l.elem[mid].room);

}
int panduan1(char ch) //判断是否继续查找
{

scanf("%c",&ch);
    printf("是否继续查找?<y/n>:");
    fflush(stdin);
    scanf("%c",&ch);
    if(ch=='y')
    {
        system("cls");
        return(1);
    }

else
    return 0;

}
int panduan2(char ch) //如果学生不存在,判断是否继续查找
{
scanf("%c",&ch);
printf("该学生不存在,是否继续查找?:");
fflush(stdin);
scanf("%c",&ch);
if(ch=='y')
{
system("cls");
return(1);
}

else
    return 0;

}
void chazhao3(linklist &l)//按房号从小到大查找(采用二分查找)
{
if(l.length==0) panduan3(); //此函数功能为:返回主界面
else
{
int low=0,high=l.length,mid,flag=0;//flag作为标志符,为1则表示查找成功,否则没有所要查找的学生
int m;
char ch;
printf("\n");printf("\n");
printf("按房号查找----->请输入要查找的房号:");

    scanf("%d",&m);
    printf("\n");
    while(low<=high)
    {
         mid=(low+high)/2;
        if(m==l.elem[mid].room)
        {
            flag=1;
            break;
        }
        else if(m>l.elem[mid].room)
        low=mid+1;
        else 
            high=mid-1;
    }
    if(flag==1) 
    {
        print2(l,mid);
        if(panduan1(ch))    //调用判断函数1
            chazhao3(l);
        else 
        {
            system("cls");
            menu();
        }

    }
    else 
    {

        if(panduan2(ch))  //调用判断函数2
            chazhao3(l);
           else 
        {
            system("cls");
            menu();
        }
    }
}

}
void chazhao2(linklist &l)//按学号从小到大查找(采用二分查找)
{
if(l.length==0) panduan3();
else
{
int low=0,high=l.length,mid,flag=0;
int n;
char ch;
printf("\n");printf("\n");
printf("按学号查找----->请输入要查找的学号:");

    scanf("%d",&n);
    printf("\n");
    while(low<=high)
    {
         mid=(low+high)/2;
        if(n==l.elem[mid].num)
        {
            flag=1;
            break;
        }
    else if(n>l.elem[mid].num)
        low=mid+1;
        else 
            high=mid-1;
    }
    if(flag==1) 
    {
        print2(l,mid);
    if(panduan1(ch)) 
        chazhao2(l);
    else 
        {
            system("cls");
            menu();
        }

    }
    else
    {
           if(panduan2(ch))     chazhao2(l);

           else 
           {
            system("cls");
            menu();
           }
    }
}

}
void chazhao1(linklist &l)//按姓名从小到大查找(采用二分查找)
{

if(l.length==0) panduan3();
else
{
int low=0,high=l.length,mid,flag=0;
printf("\n");printf("\n");
printf("按姓名查找----->请输入要查找的姓名:");
char a[15],ch;
scanf("%s",a);
printf("\n");
while(low<=high)
{
mid=(low+high)/2;
if(strcmp(a,l.elem[mid].name)==0)
{
flag=1;
break;
}
else if(strcmp(a,l.elem[mid].name)>0)
low=mid+1;
else
high=mid-1;
}
if(flag==1)
{
print2(l,mid); //打印查找到的学生的信息
if(panduan1(ch)) chazhao1(l);
else
{
system("cls");
menu();
}
}

    else
    {
            if(panduan2(ch))    chazhao1(l);
            else 
            {
                system("cls");
                menu();
            }
    }
}

}
void insert(linklist &l)//按学号从小到大插入该学生
{
int i,j,k;
char ch;
printf("\n");
printf("插入的学生信息为:\n");
printf("姓名:");
fflush(stdin);// 清空输入缓冲区,得到正确的输入数据
gets(stud.name);

printf("学号:"); scanf("%d",&stud.num);
printf("房号:"); scanf("%d",&stud.room);
if(l.length==0)
{
strcpy(l.elem[l.length].name,stud.name);
l.elem[l.length].num=stud.num;
l.elem[l.length].room=stud.room;

    }   
for(i=0;i<l.length;i++)
{
 if(stud.num<l.elem[i].num)
    {
        k=i;
        for(j=l.length;j>k;j--)
            l.elem[j]=l.elem[j-1];
        strcpy(l.elem[k].name,stud.name);
        l.elem[k].num=stud.num;
        l.elem[k].room=stud.room;
        break;
    }
    else 
    {
        strcpy(l.elem[l.length].name,stud.name);
        l.elem[l.length].num=stud.num;
        l.elem[l.length].room=stud.room;
    }   

}
    l.length++;
    fflush(stdin);
    printf("\n");
    printf("是否继续插入?<y/n>:");
    scanf("%c",&ch);
    if(ch=='y') insert(l);
    else system("cls");

}

void Delete(linklist &l)//按学号删除该学生
{
int i,j,k=-1;
char ch;
printf("\n");printf("\n");
printf("请输入要删除学生的学号:");
scanf("%d",&stud.num);
for(i=0;i<l.length;i++)
{
if(stud.num==l.elem[i].num)
{
printf("该学生的信息为:\n");printf("\n");
printf("%-15s %-3d %7d\n",l.elem[i].name,l.elem[i].num,l.elem[i].room);
k=i;
for(j=k;j<l.length-1;j++)
l.elem[j]=l.elem[j+1];

            printf("\n");
            break;
        }

    }
    if(i>=l.length) printf("该学生不存在\n");
    if(k>=0)l.length--;
    fflush(stdin);
    printf("\n");
    printf("是否继续删除?<y/n>:");
    scanf("%c",&ch);
    system("cls");
    if(ch=='y') Delete(l);
    else system("cls");

}
int main() //主函数
{
linklist l; //定义线性表 l
init(l); //调用初始化函数
char ch;
system("color a");
printf("\n");
printf(" *************************欢迎进入宿舍管理查询系统*************************\n");
printf("\n");
printf("请按任意键开始操作:");
scanf("%c",&ch);
system("cls");//将屏幕先前显示的内容清理掉
create(l); //调用线性表创建函数
system("cls");
t=1;
menu(); //调用主菜单函数

while(f!=0)
{

system("cls");
    switch(f)
    {
    case 1: sort1(l);    //调用按姓名排序函数  
        printf("\n");
           if(l.length==0)
           {
               printf("已无学生记录\n");
               printf("\n");
               disp();
               menu();
           }
            else
            {
            printf("按姓名排序:\n");
            print1(l);
            disp();   //调用返回主界面
            menu();    

            }
            break;

    case 2: sort2(l);   //调用按学号排序函数 
        printf("\n");
            if(l.length==0) 
            {
                printf("已无学生记录\n");
                printf("\n");
                disp();
                menu();
            }
            else
            {
            printf("按学号排序:\n");
            print1(l);
            disp();
            menu();
            }break;

    case 3: sort3(l);   //调用按房号排序函数 
        printf("\n");
           if(l.length==0) 
           {
               printf("已无学生记录\n");
               printf("\n");
               disp();
               menu();
           }
            else
            {
            printf("按房号排序:\n");
            print1(l);
            disp();
            menu();
            }break; 

    case 4:sort1(l);      //先调用按姓名排序函数进行排序 
        chazhao1(l);   //再调用按姓名查找函数进行(二分)查找 
           break;   
    case 5: sort2(l);     //先调用按学号排序函数进行排序 
           chazhao2(l);    //再调用按学号查找函数进行(二分)查找 
           break;
    case 6: sort3(l);      //先调用按房号排序函数进行排序 
          chazhao3(l);     //再调用按房号查找函数进行(二分)查找
          break;
    case 7: sort2(l);      //调用插入函数
          insert(l);      
          system("cls");
        printf("显示插入后的学生信息:\n");print1(l);
        disp();
           menu();
           break;
    case 8: Delete(l);     //调用删除函数

        if(l.length==0)
        {
            printf("\n");
            printf("学生记录已被删除完\n");
            printf("\n");
            disp();
           menu();
        }
        else
        {
        printf("显示删除后的学生信息:\n");
        print1(l);
        disp();
        menu();
        }

        break;
    }
}return 0; 

}

1个回答

整数表示范围是-21亿~21亿(2的31次方),不能表示14位。

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 学号应该用字符串
2 年多之前 回复
fight_in_dl
战在春秋 回复qq_37408011: 能否把题目相关的代码摘出来? 既复现问题,又是最少代码量。
2 年多之前 回复
qq_37408011
hht238000 我改成longlong长整型还是不对呀
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
利用DOS系统功能调用编写汇编程序,在屏幕上显示自己学号的后4个数字符号
利用DOS系统功能调用编写汇编程序,在屏幕上显示自己学号的后4个数字符号。例如,你的学号如果是20191234,则在屏幕上显示出‘1234’。具体要求如下: (1)编写出完整的汇编语言程序; (2)利用宏汇编程序MASM和连接程序LINK对所编写的程序进行汇编和连接,生成可执行文件,并在DOS下运行程序。 (3)打印出相应的列表文件(后缀lst的文件)清单,并对调试运行结果进行截图,以证明程序调试成功。
怎么实现输入名字学号以回车换行?
【问题描述】 请编写一个程序,不断接收用户输入的学生姓名和学号,两者之间采用空格间隔。当用户不输入任何内容,也即直接回车后数据录入结束。程序对于输入的数据按学号从大到小的顺序输出对应的前3个学生的姓名,结果写入文件result.txt中。 【样例输入】 Mike 2019001 Bob 2019002 Lucy 2019003 Lily 2019004 John 2019005 回车 【样例输出文件result.txt内容】 John Lily Lucy 【提醒】 对于中文姓名,需要保证文件使用utf-8编码方式打开,并在代码开头加上下列语句 import sys import io sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf8') sys.stdin = io.TextIOWrapper(sys.stdin.buffer, encoding='utf8')
采用结构体类型数组来存储5名学生的学号、姓名、以及4门课的成绩, 输出各个学生4门课程的平均分,统计平均80分以上学生的人数,并将上述结果写入一个文件并保存
采用结构体类型数组来存储5名学生的学号、姓名、以及4门课的成绩, 输出各个学生4门课程的平均分,统计平均80分以上学生的人数,并将上述结果写入一个文件并保存
为什么按学号查询,查哪个学号都显示所有
public List<Xuesheng> getList(int xh) { String where=""; if(xh!=0) { where=where+" where xuehao="+xh+""; } return this.findAll(where); } 下边是findAll方法 private List<Xuesheng> findAll(String where) { Session sess = this.getSessionFactory().openSession(); try { Query query = sess.createQuery(" From Xuesheng " + where + " order by id "); return query.list(); } finally { sess.close(); } }
php:使用Cookie实现用户登录。判断用户名和密码是否输入正确(用户名:你的姓名,密码:你的学号)。如果不正确,输出“你输入的用户名和密码不正确,请尝试重新输入”。如果正确,输出“恭喜你登录成功!”。
php:使用Cookie实现用户登录。判断用户名和密码是否输入正确(用户名:你的姓名,密码:你的学号)。如果不正确,输出“你输入的用户名和密码不正确,请尝试重新输入”。如果正确,输出“恭喜你登录成功!”。
用结构体数组存储某班的30名学生的信息,每个学生的数据项有学号
用结构体数组存储某班的30名学生的信息,每个学生的数据项有学号、姓名、性别和四门课的成绩。编写程序计算四门课的平均成绩,要求用键盘输入学生数据,再按平均成绩排序,并输出含平均成绩的报表。
sqlite数据导出为csv格式19位数字是科学计数法怎么解决
如题,用sqlite存储了很多数据,写了个程序导出数据,学号为19位的数字,导出时就会出现科学计数法,请问这个问题该怎么解决
Java程序,输入学生学号成绩啥的,用数组,可以生成class但不能运行
import java.util.*; public class array { public static void main(String[] args) { int num; int i; Scanner scanner = new Scanner(System.in); do{ System.out.println("请输入全班人数:"); num=scanner.nextInt(); } while (num<=0); int[][] grade=new int[num][2]; for(i=0;i<num;i++); {for(int j=0;j<=1;j++) { switch(j) { case 0: System.out.println("请输入第"+(i+1)+"位同学的学号"); break; case 1: System.out.println("请输入第"+(i+1)+"位同学的Java成绩"); break; } grade[i][j]=scanner.nextInt(); } } System.out.println("所有同学成绩输入完毕。"); System.out.println("各位同学的java成绩如下:"); System.out.println("序号 学号 Java成绩"); for(i=0;i<num;i++); { System.out.print(i+1); for(int j=0;j<=1;j++) { System.out.print(" "+grade[i][j]+" "); } System.out.println(""); } } }![图片说明](https://img-ask.csdn.net/upload/201903/14/1552555283_616862.png)![图片说明](https://img-ask.csdn.net/upload/201903/14/1552555288_185279.png)![图片说明](https://img-ask.csdn.net/upload/201903/14/1552555299_660649.png)
获取登录的学号 然后根据学号去student表里查到获取class 通过class查找score表里的成绩。
获取user表的学号 然后根据学号去student表里查到获取class 通过class查找score表里同class的成绩。。 这 mysql 语句怎么写 列出同一个班级所有学生的成绩
怎样从一组学号中筛选出在表中查不到的学号?
对于一万个学号(XH)为A00001~A10000的学生, 想要知道在数据库的某个表(例如表stu)中, 这一万个学号中,有哪些是在stu表中查不到的。 除了建临时表,有没有什么简便快捷的方法?
请问用c++怎么打出这个?
使用动态链表方式建立节点,输入三个学生的学号姓名和成绩,求出成绩最高的那位同学的学号和姓名
SQL查询没有选择某门课的所有学生的姓名学号
从S(学号,姓名,年龄,生日)表和SC(学号,课程号,成绩)表中查询出没有选择课程号为1001的课程的所有学生的学号和姓名。 请问这个查询SQL语句该怎么写?
按学号递增排序;当 C=2时,按姓名的非递减字典序排序,运用的是C语言怎么做,谢谢
Problem Description Excel可以对一组纪录按任意指定列排序。现请你编写程序实现类似功能。 Input 测试输入包含若干测试用例。每个测试用例的第1行包含两个整数 N (<=100000) 和 C,其中 N 是纪录的条数,C 是指定排序的列号。以下有 N 行,每行包含一条学生纪录。每条学生纪录由学号(6位数字,同组测试中没有重复的学号)、姓名(不超过8位且不包含空格的字符串)、成绩(闭区间[0, 100]内的整数)组成,每个项目间用1个空格隔开。当读到 N=0 时,全部输入结束,相应的结果不要输出。 Output 对每个测试用例,首先输出1行“Case i:”,其中 i 是测试用例的编号(从1开始)。随后在 N 行中输出按要求排序后的结果,即:当 C=1 时,按学号递增排序;当 C=2时,按姓名的非递减字典序排序;当 C=3 时,按成绩的非递减排序。当若干学生具有相同姓名或者相同成绩时,则按他们的学号递增排序。 Sample Input 3 1 000007 James 85 000010 Amy 90 000001 Zoe 60 4 2 000007 James 85 000010 Amy 90 000001 Zoe 60 000002 James 98 4 3 000007 James 85 000010 Amy 90 000001 Zoe 60 000002 James 90 0 0 Sample Output Case 1: 000001 Zoe 60 000007 James 85 000010 Amy 90 Case 2: 000010 Amy 90 000002 James 98 000007 James 85 000001 Zoe 60 Case 3: 000001 Zoe 60 000007 James 85 000002 James 90 000010 Amy 90
C语言数据结构输出学号,表示各个学生的成绩,以学号递增顺序给出,第一个学生学号为1
Problem Description 转眼又到了一年的年末,Lele又一次迎来了期末考试。虽然说每年都要考试,不过今年的这场考试对Lele来说却意义重大。 因为经济原因,如果今年没有排在班级前几名,而拿不到奖学金的话,家里便无力再供他继续读书。而且家里帮他都想好出路了——回家种田!! 虽说Lele心里有一百个不愿意,不过父母的话不能不听。 忐忑不安地考完试,Lele拿到了全班的成绩单,这张成绩单是按学号顺序排好的。Lele很想知道班里到底有多少人分数比他高,现在就请你帮帮他,帮他数一下到底有多少人的分数比他高吧。 Input 数据的第一行有一个正整数T,表示测试的组数。接下来有T组测试。 每组数据包括两行。 第一行有两个正整数N K(0<N<1000,0<K<=N),分别表示成绩单上一共的学生数目,和Lele的学号。 第二行有N个整数Xi(0<=Xi<=100)分别表示各个学生的成绩,以学号递增顺序给出,第一个学生学号为1。 Output 对于每组数据,请在一行里输出班里一共有多少个学生成绩高于Lele Sample Input 1 3 2 81 72 63 Sample Output 1
c语言/c++回答输入学号,名字(字符串),分数,按分数排序
今天举行了一场比赛,邀请大一的学生参加比赛,实际来了m个学生,当他们做好自己的位置的时候,一个老师小z按照顺序登记他们的信息(学号,姓名),当他们比赛完之后按照小z登记的信息填写他们的成绩;现在问题来了,小z只记录大一同学的成绩,不知道排名,但小z想知道他们的排名,他很苦恼,聪明的你帮他写个程序解决一下吧。 输入 第一行是一个整数T表示测试数据的组数 每组测试数据的第一行 有一个整数m(m<=100)表示大一比赛的人数,之后m行,每行包含三个数据表示一个学生的信息,分别表示学生的学号,姓名,比赛成绩。 输出 输出每组学生排过序的名单(成绩相同谁在前面先输出谁) 样例输入 1 3 12066 zhangming 23 11077 wangming 45 13088 zhaoqian 15 样例输出 11077 wangming 45 12066 zhangming 23 13088 zhaoqian 15
今年刚刚学的C语言,没有学过链表希望大佬可以帮忙写一下源代码,谢谢了
3、定义一个用于存储学生信息的结构体,结构体内包括学号(10位数字)、姓名(字符串)、英语及数学成绩(为结构体)、总成绩等信息。编写程序,实现使用链表输入若干学生的信息,并通过链表根据总成绩对学生信息进行排序,将排好序的学生信息在控制台进行显示并将相关信息存储到文件中。(55分)
小组合作做了一个简陋的学生信息管理系统,修改学生信息的部分一直有问题,麻烦大神帮我看一下到底有什么问题,我真找不出来。
#include<stdio.h> #include<conio.h> #include<string.h> #include<ctype.h> #include<stdlib.h> #define N 10000 typedef struct student { char ID[20]; // 学号 char name[20]; // 姓名 char sex; // 性别 double score[3]; // 三科成绩 double total; // 总分 double avg; // 平均分 }STUDENT; void memu(void); void load(STUDENT stu[],int *nptr); // 将学生信息加载到数组stu中 void save(STUDENT stu[],int n); // 将学生信息保存在磁盘中 void add(STUDENT stu[],int *nptr); // 添加学生信息 void output(STUDENT stu[],int n); // 输出所有学生信息 void InputRecord(STUDENT stu[],int i);// 添加第n+1个学生的信息 void PrintRecord(STUDENT *sptr); // 输出指针sptr所指记录的内容 void edit(STUDENT stu[],int n); // 修改学生信息 void statis(STUDENT stu[], int n); void del(STUDENT stu[],int *nPtr); // 删除学生信息 int main() { int select; int n; STUDENT stu[N]; load(stu,&n); while(1) { memu(); scanf("%d",&select); switch(select) { case 1: // 录入学生成绩 add(stu,&n); break; case 2: // 显示学生信息 output(stu, n); break; case 3: // 修改学生信息 edit(stu,n); break; case 4: // 删除学生信息 del(stu,&n); break; case 5: // 查找学生信息 break; case 6: statis(stu, n); // 统计个科目最高分 break; case 7: // 按总分顺序排序 break; case 0: // 退出系统 break; default: printf("你输入的有误,请重新输入"); break; } } } void memu(void) { system("cls"); printf(" 欢迎使用高校学生管理系统 "); printf("\t\t 菜单 \n"); printf("\t\t1.录入学生的成绩\n"); printf("\t\t2.显示学生信息\n"); printf("\t\t3.修改学生信息\n"); printf("\t\t4.删除学生信息\n"); printf("\t\t5.查找学生信息\n"); printf("\t\t6.统计各科目最高分、平均分和不及格人数\n"); printf("\t\t7.按总分排序\n"); printf("\t\t0.退出系统\n"); } //将学生信息加载到数组stu中 void load(STUDENT stu[],int *nptr) { FILE *fp; //定义文件指针 int i; if((fp=fopen("D:\\student.txt","r"))==NULL) { *nptr=0; return ; } for(i=0; fread(&stu[i],sizeof(STUDENT),1,fp)!=0; i++) { *nptr=i; //*nptr记录文件中当前学生数量 } fclose(fp); //关闭文件 } //将学生信息保存在磁盘中 void save(STUDENT stu[],int n) { FILE *fp; //定义文件指针 if((fp=fopen("D:\\student.txt","w"))==NULL) // { printf("打开文件失败\n"); exit(0); } fwrite(stu,n*sizeof(stu[0]),1,fp); fclose(fp); //关闭文件 } //添加学生信息 void add(STUDENT stu[],int *nptr) { int i=0; char sel = 'Y'; while(sel=='Y') { InputRecord(stu,(*nptr)++); //添加第n+1个学生的信息 printf("if you want stop ? yes(Y) or no(N)\n"); scanf(" %c",&sel); } save(stu,*nptr); } //输入一个学生信息,存到score[i]中 void InputRecord(STUDENT stu[],int i) { int j; //输入学号,并验证合法性 printf("输入第%d个学生的信息\n",i+1); printf("输入学生学号(学号小于9位数字组成)\n"); scanf("%s",&stu[i].ID); printf("请输入学生姓名\n"); scanf("%s",stu[i].name); printf("请输入学生性别(f或m f代表女性 m代表男性)\n"); scanf(" %c",&stu[i].sex); //输入五门课成绩并累加 printf("输入三门课成绩(0~100)\n"); stu[i].total=0; for(j=0;j<3;j++) { scanf("%lf",&stu[i].score[j]); stu[i].total+=stu[i].score[j]; } //计算总成绩 stu[i].avg=stu[i].total/3; } //输出所有学生信息 void output(STUDENT stu[],int n) { int i; //打印表头 printf("%8s%8s%4s%8s%8s%8s%8s%8s%8s%8s\n","ID","NAME","SEX", "SCORE1","SCORE2","SCORE3","SCORE4","SCORE5","total","avg"); //打印所有记录 for(i=0;i<n;i++) { PrintRecord(&stu[i]); } system("pause"); } //输出指针sptr所指记录的内容 void PrintRecord(STUDENT *sptr) { int i; printf("%8s%8s%4c",sptr->ID,sptr->name,sptr->sex); for(i=0;i<3;i++) { printf("%8.2f",sptr->score[i]); } printf("%8.2f%8.2f",sptr->total,sptr->avg); printf("\n"); } void edit(STUDENT stu[],int n) { int i,index; char sel; char str[20]; printf("输入学号"); scanf("%s",str); index=FindByNum(stu,n,str); if(index<0) { printf("该学生信息不存在\n"); //信息不存在的情况 return; } printf("请输入需更改的项目\n1.姓名\n2.性别\n3.科目成绩\n4.总成绩\n5.平均成绩/n(输入序号即可)\n"); int a; //菜单栏 scanf("%d",&a); switch(a) { case 1: printf("修改前的姓名如下:\n"); //修改姓名 PrintRecord(&stu[index]); printf("请输入修改后的姓名:\n"); scanf("%s",stu[index].name); case 2: printf("修改前的性别如下:\n"); //修改性别 PrintRecord(&stu[index]); printf("请输入修改后的性别:\n"); scanf("%s",stu[index].sex); case 3: printf("修改前的科目成绩如下:\n"); //修改科目成绩 PrintRecord(&stu[index]); printf("请输入修改后的科目成绩:\n"); scanf("%s",stu[index].score); case 4: printf("修改前的总成绩如下:\n"); //修改总成绩 PrintRecord(&stu[index]); printf("请输入修改后的总成绩:\n"); scanf("%s",stu[index].total); case 5: printf("修改前的平均成绩如下:\n"); //修改平均成绩 PrintRecord(&stu[index]); printf("请输入修改后的平均成绩:\n"); scanf("%s",stu[index].avg); } save(stu,n); } int FindByNum(STUDENT stu[],int n,char *str) { int i; for(i=0;i<n;i++) if(strcmp( stu[i].ID,str)==0) return i; return -1; } void statis(STUDENT stu[], int n) { int i, fail;//“stu[]”为学生 “score[]”为成绩 “n”为人数 max为最高分数 fail 为不及格人数 sum为50人总分 double score[3], max, sum, avg;//“avg”为平均分 avg = 0; max = 0; fail = 0; sum = 0; for(i = 0; i < n; i++) { sum += stu[i].score[0]; avg = sum/n; if(max < stu[i].score[0]) max = stu[i].score[0]; if(stu[i].score[0] < 60) fail++; } printf("C语言最高分=%.2f\n",max); printf("C语言不及格人数=%d\n",fail); printf("C语言平均分=%.2f\n",avg); fail = 0; sum = 0; max = 0; for(i = 0; i < n; i++) { sum += stu[i].score[1]; avg = sum/n; if(max < stu[i].score[1]) max = stu[i].score[1]; if(stu[i].score[1] < 60) fail++; } printf("英语最高分=%.2f\n",max); printf("英语不及格人数=%d\n",fail); printf("英语平均分=%.2f\n",avg); fail = 0; sum = 0; max = 0; for(i = 0; i < n; i++) { sum += stu[i].score[2]; avg = sum/n; if(max < stu[i].score[2]) max = stu[i].score[2]; if(stu[i].score[2] < 60) fail++; } printf("数学最高分=%.2f\n",max); printf("数学不及格人数=%d\n",fail); printf("数学平均分=%.2f\n",avg); system("pause"); fail = 0; sum = 0; max = 0; } // 删除学生信息 void del(STUDENT stu[],int *nPtr) { int i,index; char str[20]; printf("请你输入学号"); scanf("%s",str); index = FindByNum(stu,*nPtr,str); if(index<0) { printf("\n 亲,不好意思,你所选的学生信息不存在\n"); system("pause"); return ; } for (i = index; i < *nPtr-1;i++) stu[i] = stu[i+1]; (*nPtr)--; printf("\n 恭喜恭喜 删除成功 \n"); system("pause"); save(stu,*nPtr); // 保存到文件中 }
C#windows应用程序如何将输入的信息保存在数组中?
3、 设计一个Windows应用程序,在该程序中定义一个学生类和班级类,以处理每个学生的学号、姓名、语文、数学和英语3门课程的期末考试成绩,要求: (1) 能查询每个学生的总成绩; (2) 能显示全班前3名的成绩; (3) 能显示单科成绩最高分和不及格的学生名单; (4) 能统计全班学生的平均成绩; (5) 能显示各科成绩在不同分数段的学生人数百分比。 设计提示: (1) 定义一个Student学生类,包含字段(学号、姓名、语文成绩、数学成绩、英语成绩)和属性(总成绩)等; (2) 定义一个Grade班级类,包含一个Student类型的数组(用来保存全班学生的信息以及若干个实现上述要求的方法等; (3) 设计用户操作界面,首先让用户能输入一个学生的信息,当单击“添加”按钮时把这些信息添加班级对象的学生数组中。当单击“完成”按钮时调用班级类的方法来显示所要求统计的统计结果。当用户在查询框中输入了学生的名字,并单击“查询”按钮时显示该学生的总成绩。 请问"输入一个学生的信息,当单击“添加”按钮时把这些信息添加到班级对象的学生数组中"这是怎么做到的?代码怎么写的?谢谢!!!
C语言C语言的问题 储存五名学生的信息 姓名学号总成绩 输出最高分最低分的
C语言的问题 储存五名学生的信息 姓名学号总成绩 输出最高分最低分的
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
使用 Docker 部署 Spring Boot 项目
Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,这篇文章我们就来简单学习下。首先构建一个简单的 S...
英特尔不为人知的 B 面
从 PC 时代至今,众人只知在 CPU、GPU、XPU、制程、工艺等战场中,英特尔在与同行硬件芯片制造商们的竞争中杀出重围,且在不断的成长进化中,成为全球知名的半导体公司。殊不知,在「刚硬」的背后,英特尔「柔性」的软件早已经做到了全方位的支持与支撑,并持续发挥独特的生态价值,推动产业合作共赢。 而对于这一不知人知的 B 面,很多人将其称之为英特尔隐形的翅膀,虽低调,但是影响力却不容小觑。 那么,在...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
白话阿里巴巴Java开发手册高级篇
不久前,阿里巴巴发布了《阿里巴巴Java开发手册》,总结了阿里巴巴内部实际项目开发过程中开发人员应该遵守的研发流程规范,这些流程规范在一定程度上能够保证最终的项目交付质量,通过在时间中总结模式,并推广给广大开发人员,来避免研发人员在实践中容易犯的错误,确保最终在大规模协作的项目中达成既定目标。 无独有偶,笔者去年在公司里负责升级和制定研发流程、设计模板、设计标准、代码标准等规范,并在实际工作中进行...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
redis分布式锁,面试官请随便问,我都会
文章有点长并且绕,先来个图片缓冲下! 前言 现在的业务场景越来越复杂,使用的架构也就越来越复杂,分布式、高并发已经是业务要求的常态。像腾讯系的不少服务,还有CDN优化、异地多备份等处理。 说到分布式,就必然涉及到分布式锁的概念,如何保证不同机器不同线程的分布式锁同步呢? 实现要点 互斥性,同一时刻,智能有一个客户端持有锁。 防止死锁发生,如果持有锁的客户端崩溃没有主动释放锁,也要保证锁可以正常释...
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
Java世界最常用的工具类库
Apache Commons Apache Commons有很多子项目 Google Guava 参考博客
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员...
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC...
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下...
为什么要学数据结构?
一、前言 在可视化化程序设计的今天,借助于集成开发环境可以很快地生成程序,程序设计不再是计算机专业人员的专利。很多人认为,只要掌握几种开发工具就可以成为编程高手,其实,这是一种误解。要想成为一个专业的开发人员,至少需要以下三个条件: 1) 能够熟练地选择和设计各种数据结构和算法 2) 至少要能够熟练地掌握一门程序设计语言 3) 熟知所涉及的相关应用领域的知识 其中,后两个条件比较容易实现,而第一个...
Android 9.0 init 启动流程
阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android本篇文章主要介绍Android开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:一、启动流程概述一、 启动流程概述Android启动流程跟Linux启动类似,大致分为如下五个阶段。1.开机上电,加载固化的ROM。2.加载BootLoader,拉起Android OS。3.加载Uboot,初始外设,引导Kernel启动等。...
相关热词 c# 二进制截断字符串 c#实现窗体设计器 c#检测是否为微信 c# plc s1200 c#里氏转换原则 c# 主界面 c# do loop c#存为组套 模板 c# 停掉协程 c# rgb 读取图片
立即提问