鱼C论坛

 找回密码
 立即注册
查看: 3975|回复: 12

这段程序有什么问题??!

[复制链接]
发表于 2013-6-21 21:26:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
void del()         /*这段程序想要实现的功能是将之前输入的学生成绩先显示再可以有选择的将学生的信息删除*/不过红色部分                            程序有问题就是不知道错哪。
{
int j,l,k;
system("cls");  /*清屏*/
for(j=0;j<m;j++)
{ printf("%s   %d   %s   %s",stu[j].name,stu[j].num,stu[j].sex,stu[j].cla);
for(l=0;l<5;l++)
  printf("%d\t",stu[j].score[l]);
printf("是否要删除<y/Y>");
k=getche();
if(k=='y')
{
  stu[j].name=' ';
  stu[j].num=' ';
  stu[j].sex=' ';
  stu[j].cla=' ';
  for(l=0;l<5;l++)
   stu[j].score[l]=0;
}
}



小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-21 21:57:20 | 显示全部楼层
为什么不尝试用链表解决呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-6-21 22:33:49 | 显示全部楼层
他肯定还没学到链表,只能用存储单元的清零代替“删除”;
getch()名字错了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-6-21 22:35:42 | 显示全部楼层
都不会看编译错误提示的么?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-6-22 06:17:51 | 显示全部楼层
红字赋值有问题, 你的name, num, sex, cal是怎么定义的, 发定义形式看一 看。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-6-22 06:19:47 | 显示全部楼层
  1. #include <stdio.h>
  2. int main()
  3. {
  4.         char name[4];
  5.         name = "a";
  6.         return 0;
  7. }
复制代码
这样赋值 是有问题的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-22 12:55:31 | 显示全部楼层
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<string.h>   
  4. #include<stdlib.h>
  5. #define N  80
  6. int m=0;
  7. struct student
  8. {        char name[20];
  9.         int num;
  10.         char cla[20];
  11.         char sex[2];
  12.         int score[5];
  13.         int ave;
  14. }stu[100];
  15. void add()
  16. {   int j,k,l;
  17.             system("cls");  /*清屏*/
  18.         printf("请输入要插入的学生成绩的人数:  ");
  19.         scanf("%d",&m);
  20.         for(j=0;j<m;j++)

  21.         {        system("cls");  /*清屏*/
  22.                 printf("请输入学生姓名:  ");
  23.         scanf("%s",stu[j].name);
  24.         printf("请输入学生的学号:  ");
  25.         scanf("%d",&stu[j].num);
  26.         printf("请输入学生性别:  ");
  27.         scanf("%s",stu[j].sex);
  28.         printf("请输入班级:  ");
  29.         scanf("%s",stu[j].cla);
  30.         printf("请输入每个学生各科成绩");
  31.         for(l=0;l<5;l++)
  32.         scanf("%d",&stu[j].score[l]);
  33.         printf("是否继续输入下一条记录,是输入(y/Y)");
  34.         scanf("%*c%c",&k);
  35.         if(k=='y'||k=='Y') continue;

  36.         }
  37. }

  38. void sta()
  39. {
  40.         int j,l,avemax;
  41.         int aave=0;
  42.         system("cls");  /*清屏*/
  43.         for(j=0;j<m;j++)
  44.         {
  45.          stu[j].ave=0;
  46.          for(l=0;l<5;l++)
  47.           stu[j].ave+=stu[j].score[l];
  48.          stu[j].ave/=5;
  49.         }

  50.         for(j=0;j<m;j++)
  51.                 aave+=stu[j].ave;
  52.                 aave/=m;
  53.                 avemax=stu[0].ave;
  54.                 for(j=1;j<=m;j++)
  55.                 {
  56.                         if(avemax<stu[j].ave)  avemax=stu[j].ave;
  57.                 }
  58.      printf("学生姓名          成绩平均分\n");
  59.      for(j=0;j<m;j++)
  60.          {
  61.                 printf("%s              \t%d\n",stu[j].name,stu[j].ave);
  62.          }
  63.          printf("所有学生的平均分:  %d",aave);
  64.          printf("所有学生平均成绩的最高分:  %d",avemax);
  65.         getch();
  66. }

  67. void change()
  68. {
  69.         int j,l,k;
  70.     system("cls");  /*清屏*/
  71.         for(j=0;j<m;j++)
  72.         {        printf("%s   %d   %s   %s",stu[j].name,stu[j].num,stu[j].sex,stu[j].cla);
  73.         printf("是否修改<y/Y>:\n");
  74.         k=getche();
  75.         if(k=='y')
  76.         {printf("是否修改姓名<y/Y>:\n");
  77.         k=getche();
  78.             if(k=='y')
  79.                 {printf("请输入新的姓名:\n");
  80.                 scanf("%s",stu[j].name);}
  81.                 printf("是否修改学号<y/Y>:\n");
  82.                 k=getche();
  83.                 if(k=='y')
  84.                 {printf("请输入新的学号:\n");
  85.                 scanf("%d",&stu[j].num);}
  86.                 printf("是否修改性别<y/n>:\n");
  87.                 k=getche();
  88.                 if(k=='y')
  89.                 {printf("请输入新的性别:\n");
  90.                 scanf("%s",stu[j].cla);}
  91.                 printf("是否修改成绩<y/Y>");
  92.                 k=getche();
  93.                 if(k=='y');
  94.                 for(l=0;l<5;l++)
  95.                 {        printf("\n");                        printf("%d\n",stu[j].score[l]);
  96.                         printf("是否修改该科成绩<y/n>");
  97.                 k=getche();
  98.                 if(k=='y')
  99.                 {        printf("请输入该科修改后的成绩:");
  100.                 scanf("%d",&stu[j].score[l]);}
  101.                 else continue;
  102.                 }
  103.        
  104.         }
  105.         }
  106. }
  107. void del()
  108. {
  109.         int j,l,i;
  110.         char k;
  111.         system("cls");  /*清屏*/
  112.         for(j=0;j<m;j++)
  113.         {        printf("%s   %d   %s   %s\n",stu[j].name,stu[j].num,stu[j].sex,stu[j].cla);
  114.         for(l=0;l<5;l++)
  115.                 printf("  %d",stu[j].score[l]);
  116.             printf("\n");
  117.         printf("是否要删除<y/Y>:");
  118.                 printf("\n");
  119.                 k=getche();
  120.             if(k=='y')
  121.                 {
  122.                         for(i=0;i<10;i++)
  123.                         stu[j].name[i]=stu[j+1].name[i+1];
  124.                         stu[j].num=stu[j+1].num;
  125.                         for(i=0;i<2;i++)
  126.             stu[j].sex[i]=stu[j+1].sex[i];
  127.                         for(i=0;i<5;i++)
  128.                         stu[j].cla[i]=stu[j+1].cla[i+1];
  129.                         for(l=0;l<5;l++)
  130.                                 stu[j].score[l]=stu[j].score[l+1];
  131.                 }j--;
  132.         }
  133.        






  134. }



  135. void display()
  136. {
  137.         int j,l;
  138.     system("cls");  /*清屏*/
  139.         printf("姓名\t学号\t性别\t班级\t\t成绩\n");
  140.         for(j=0;j<m;j++)
  141.        
  142.         {        printf("%s\t%d\t%s\t%s",stu[j].name,stu[j].num,stu[j].sex,stu[j].cla);
  143.                 for(l=0;l<5;l++)       
  144.                 printf("  %d",stu[j].score[l]);
  145.                 printf("\n");
  146.         }
  147.         getch();
  148. }
  149. void sort()
  150. {
  151.         int j,l,temp;
  152.         char k;
  153.         system("cls");  /*清屏*/
  154.         for(j=0;j<m;j++)
  155.                 if(stu[j].ave<stu[j+1].ave)
  156.                 {temp=stu[j].ave;
  157.                  stu[j].ave=stu[j+1].ave;
  158.                  stu[j+1].ave=temp;
  159.                 }
  160.         printf("升序请输入r:降序请输入d:");
  161.         k=getche();
  162.         printf("\n");
  163.         if(k=='r')
  164.         {for(j=m;j>0;j--)
  165.         printf("%d\t",stu[j].ave);}
  166.         if(k=='d')
  167.         {for(j=0;j<m;j++)
  168.         printf("%d\t",stu[j].ave);}
  169.         getch();
  170. }
  171.        




  172. void main()
  173. {        char i;
  174.         printf("\n\n\n\n\n\n\t\t\t   欢迎使用学生成绩管理系统");
  175.     printf("\n\n\n\t\t\t\t\t制作人包盛辉");
  176.     printf("\n\n\t\t\t\t  2013年6月");
  177.     printf("\n\n\n\n\n\t按回车键进入主菜单:");            /*界面*/
  178.     getchar();
  179.         do
  180.         { system("cls");  /*清屏*/
  181.           printf("\n");
  182.           printf("\t\t\t\t ************\n");
  183.           printf("\t\t\t\t *  主菜单  *\n");               /*主菜单*/
  184.           printf("\t\t\t\t ************\n\n\n");
  185.           printf("\t        1.插入学生成绩信息        2.统计学生成绩信息\n\n");
  186.           printf("\t        3.修改学生成绩信息        4.删除学生成绩信息\n\n");
  187.           printf("\t        5.显示所有学生信息        6.学生成绩信息排序\n\n");
  188.           printf("\t        7.退出系统\n\n");
  189.           printf("\n\n");
  190.           printf("\t    请选择[1/2/3/4/5/6/7]: ");
  191.           i=getchar();
  192.           switch(i)
  193.           {
  194.            case '1':   add(); break;    /*返回主菜单*/
  195.            case '2':   sta(); break;
  196.            case '3':   change(); break;
  197.            case '4':   del(); break;
  198.            case '5':   display(); break;
  199.            case '6':         sort(); break;
  200.            case '7':   exit(0);
  201.            default:    break;
  202.           }
  203.         }while(1);
  204. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-22 12:56:43 | 显示全部楼层

你可以帮我看看那块void del()   删除那块为什么实现不了嘛?!{:1_1:}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-6-22 13:07:56 | 显示全部楼层
代码写的不太规范呢,看起来真难看。VC++6.0有个简便的功能可以帮你调整一些小的代码不规范问题。全选内容,然后直接按键盘上的快捷键【Alt】+【F8】(快捷键表示同时按下这两个键)。你的代码我看不太懂,我也是初学者。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-6-22 15:48:29 | 显示全部楼层
里面问题好多,你再检查一下!!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-22 21:11:08 | 显示全部楼层
Skyline 发表于 2013-6-22 15:48
里面问题好多,你再检查一下!!!!

我是初学者。。。就是删除那块有问题    其他地方运行起来没什么问题。。。不过程序整体上难看:(
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-6-22 22:10:53 | 显示全部楼层
小包 发表于 2013-6-22 21:11
我是初学者。。。就是删除那块有问题    其他地方运行起来没什么问题。。。不过程序整体上难看

你的代码是哪里找到的????
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-6-23 05:09:05 | 显示全部楼层
小包 发表于 2013-6-22 21:11
我是初学者。。。就是删除那块有问题    其他地方运行起来没什么问题。。。不过程序整体上难看

你不能这样赋值。 要不你用strcpy实现赋值吧。
char name[20];
name = "abc";这种形式赋值是错误的。
你红字部分就是这种错误。

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-22 10:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表