| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2027 人关注过本帖
标题:此代码编译正确,为什么最后运行到一半闪退,求大神指导
只看楼主 加入收藏
凌夜
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2017-12-12
结帖率:0
收藏
 问题点数:0 回复次数:3 
此代码编译正确,为什么最后运行到一半闪退,求大神指导
#include<stdio.h>
#include<string.h>
#include<process.h>
#include<conio.h>
#define N 30
#define M 3
void shuru();
 void chaxun();
 void xiugai();
 // void paixu();
 void shanchu();
 void menu();
 void main();
typedef struct student
{   char number[10];
    char name[20];
    float score[20];
    char math[20];
    char cyuyan[30];
    char jisuanji[20];
   
 }STU;
 STU stu[N];
 int n;
 
 void main()
{
     short int flag=0;
     menu();
 //    do
 //    {
         flag=1;
         switch(getch())
         {
             case'1':shuru();break;
             case'2':chaxun();break;
             case'3':xiugai();break;
             //case'4':paixu();break;
             case'5':shanchu();break;
             case'6':exit(0);
             default:printf("输入有误\n");
            
            
         }
         printf("按任意继续\n");
         getch();
         menu();
     }
     //while(flag==1);
 //}
 void menu()
 {
     system("cls");
     printf("\n");
     printf("---------学生成绩信息系统----------\n");
    printf("-------- 二班------------------\n");
     printf("----- 知行  董道---------------\n");
     printf("----- 123456789 123456799----------\n");
     printf("----- 二零一七年十二月三十日-------\n");
    printf("    1.输入学生成绩  2.查询学生成绩 \n");
    printf("    3.修改学生成绩  4.排序学生成绩 \n");
    printf("    5.删除学生成绩  6.退出程序     \n");
    printf("-----------------------------------\n");
    printf("---------请输入您的选择------------\n");
   
 }
 void shuru()
 {
     int i,j,n;
     system("cls");
     printf("请输入学生人数:\n");
     scanf("%d",&n);
     printf("提示:输入的学号由三位字母和五位数字组成,共八位\n");
     //scanf("%d",&n);
     
     //for(i=0;i<n;i++)
 //{
     //    printf("请输入学生的学号 姓名:\n",i+1);
     //    scanf("%s%s",stu[i].number,stu[i].name);
     //    printf("请输入学生成绩:\n");
     //    printf("math\tcyuyan\tjisuanji\n");
     printf("number:");
    scanf("%d",&stu[i].number);
    printf("name:");
    scanf("%s",&stu[i].name);
    printf("math:");
    scanf("%d",&stu[i].math);
    printf("cyuyan:");
    scanf("%d",&stu[i].cyuyan);
    printf("jisuanji:");
    scanf("%d",&stu[i].jisuanji);

     //    for(j=0;j<M;j++)
     //    scanf("%f",&stu[i].score[j]);
    // }
     printf("成功输入\n");
 }
 void chaxun()
 {
     char a[10];
     int i,j;
     system("cls");
     printf("请输入需要查询的学生的学号:\n");
     printf("%s",a);
     for(i=0;i<n;i++)
 {
     //    if(strcmp(a,stu[i].number)==0)
     //    {
         /*    printf("学号\t姓名\t数学\tC语言\t计算机\n");
             printf("%d\t%s\t%s\t",i+i,stu[i].number,stu[i].name);
             for(j=0;j<M;j++)
             printf("%.2f\t",stu[i].score);
             printf("\n");
             break;*/
             scanf("%d",&n);   //输入n个学生信息
   
    printf("input the info of NO.%d:\n");
    printf("number:");
    scanf("%d",&stu[i].number);
    printf("name:");
    scanf("%s",&stu[i].name);
    printf("math:");
    scanf("%d",&stu[i].math);
    printf("cyuyan:");
    scanf("%d",&stu[i].cyuyan);
    printf("jisuanji:");
    scanf("%d",&stu[i].jisuanji);
   

            
         }
         //else
         printf("未找到该学生信息\n");
     //}
 }
  void xiugai(void)
  {
      char a[10];
      int i,j;
      system("cls");
      printf("请输入需要修改的学生成绩:\n");
      scanf("%s",a);
      for(i=0;i<n;i++)
      {
          if(strcmp(a,stu[i].number)==0)
          {
              printf("学号\t姓名\t数学\tC语言\t计算机\n");
              printf("%d\t%s\t%s\t",i+1,stu[i].number,stu[i].name);
              for(j=0;j<M;j++)
              printf("%.2f\t",stu[i].score[j]);
              printf("\n");
              printf("请重新输入该学生的学号 姓名:\n");
              scanf("%s%s",stu[i].number,stu[i].name);
              printf("数学\tC语言\t计算机\n");
              for(j=0;j<M;j++)
              scanf("%f",&stu[i].score[j]);
              printf("修改成功\n");
          }
          else
          printf("失败\n");
      }
  }
  void shanchu()
  {
      int i,j,c;
      char m,a[10];
      system("cls");
      printf("请输入学生学号:\n");
      scanf("%s",a);
      for(i=0;i<n;i++)
      {
          if(strcmp(a,stu[i].number)==0)
          {
              printf("学号\t姓名\t数学\tC语言\t计算机\n");
              printf("%d\t%s\t%s\t",i+1,stu[i].number,stu[i].name);
              for(j=0;j<M;j++)
              printf("%.2f\t",stu[i].score[j]);
              printf("\n");
              c=i;
              break;
          }
          else
          printf("未找到该学生信息\n");
      }
      printf("是否删除该学生成绩(y/n)\n");
      scanf("%s",&m);
      if(m=='y')
      {
          for(i=c;i<n-1;i++)
          stu[i]=stu[i+1];
          n=n-1;
          printf("删除成功\n");
      }
      printf("删除失败\n");
  }
搜索更多相关主题的帖子: void STU printf 学生 scanf 
2018-01-03 23:48
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:0 
写了那么多才会闪退
逐块逐条代码调试,看看执行到哪闪退
2018-01-04 00:00
凌夜
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2017-12-12
收藏
得分:0 
回复 2楼 吹水佬
好,谢谢大神,我再试试
2018-01-04 07:33
虫眼
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:314
专家分:1121
注 册:2017-11-29
收藏
得分:0 
应该是你结构体定义错误
程序代码:
typedef struct student
{   char number[10];
    char name[20];
    float score[20];
    char math[20];
    char cyuyan[30];
    char jisuanji[20];
  


 }STU;

 STU stu[N];

 int n;
应该是
程序代码:
struct student
{   char number[10];
    char name[20];
    float score[20];
    char math[20];
    char cyuyan[30];
    char jisuanji[20];
  


 }stu[N];


[此贴子已经被作者于2018-1-4 16:35编辑过]

2018-01-04 16:22
快速回复:此代码编译正确,为什么最后运行到一半闪退,求大神指导
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035544 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved