救救 一个系统设计里的对齐问题

为什么信息和上面标题就是没法对齐啊

全部代码在下面

#include"stdio.h"#include"stdlib.h"#include"string.h"#include"math.h"#define N 30 struct course  {   long int number;   char name[10];   char nature[4];   int totalhour,classhour,experimenthour,credit,term;   }cou[N]={{2101,"math","1",88,44,44,4,2},{2102,"c language","1",88,66,22,3,1},{2103,"english","1",88,55,33,3,2},{2104,"history","0",66,44,22,2,1}},s;//结构体定义int  M=4;//修改记录函数//void modify(struct course cou[]) {   int t=-1;char z;            //t为是否有记录的标志,为-1表示无输入的记录int search(struct course cou[]) ;      t=search(cou);                //调用查找记录函数      if(t!=-1)      {printf("\n\t输入修改后的课程编号:");       scanf("%ld",&cou[t].number);       printf("\t输入修改后的课程名称:");       scanf("%s",cou[t].name);       printf("\t输入修改后的课程性质(公共课0/必修课1/选修课2):");       scanf("%s",cou[t].nature);       printf("\t输入修改后的总学时:");       scanf("%d",&cou[t].totalhour);       printf("\t输入修改后的授课学时:");       scanf("%d",&cou[t].classhour);       printf("\t输入修改后的上机学时:");       scanf("%d",&cou[t].experimenthour);       printf("\t输入修改后的学分:");       scanf("%d",&cou[t].credit);       printf("\t输入修改后的开课学期:");       scanf("%d",&cou[t].term);       printf("\t课程编号\t课程名称\t课程性质\t总学时\t授课学时\t上机学时\t学分\t开课学期\n");          printf("\t%4ld\t",cou[t].number);           printf(" %s\t",cou[t].name);           printf("%s\t",cou[t].nature);                  printf("%4d\t%4d\t%4d\t%4d%8d\n",cou[t].totalhour,cou[t].classhour,cou[t].experimenthour,cou[t].credit,cou[t].term); } printf("\n\t继续修改下一个课程信息吗?请选择y/n???"); scanf("%s",&z);if(z=='y') modify(cou);                 //调用本函数}//输出函数//void output(struct course cou[]) {    int i,t;  printf("\t课程编号\t课程名称\t课程性质\t总学时\t授课学时\t上机学时\t学分\t开课学期\n");    for(i=0;i<M;i++)        {           printf("\t%4ld\t\t",cou[i].number);           printf(" %s\t",cou[i].name);           printf("%s\t\t\t",cou[i].nature);               printf("%4d\t%4d\t%4d\t%4d%8d\n",cou[i].totalhour,cou[i].classhour,cou[i].experimenthour,cou[i].credit,cou[i].term);       }   system("pause");}//排序函数//void sort(struct course cou[]) {   int i,j,t;    printf("\n\t1.按课程编号排序\n\t2.按学分排序\n\t3.按开课学期排序\n");   scanf("%d",&t);   switch(t)     {     case 1:            for(i=0;i<M-1;i++)               for(j=0;j<M-i-1;j++)                  {                   if(cou[j].number<cou[j+1].number)                     {      s=cou[j];      cou[j]=cou[j+1];      cou[j+1]=s;                     }                  }      output(cou);break;     case 2:            for(i=0;i<M-1;i++)               for(j=0;j<M-i-1;j++)                 {                 if(cou[j].credit<cou[j+1].credit)                    {     s=cou[j];     cou[j]=cou[j+1];     cou[j+1]=s;                     }                  }     output(cou);break;     case 3:            for(i=0;i<M-1;i++)               for(j=0;j<M-i-1;j++)                  {                   if(cou[j].term<cou[j+1].term)                     {      s=cou[j];      cou[j]=cou[j+1];      cou[j+1]=s;                     }                  }      output(cou);break;      default:printf("\t输入有误!"); system("pause");      } } //查询记录函数//int search(struct course cou[])  {   long t,i,z,K='y';char nature[4];            //k为是否有输入记录的标志,是y时表示无记录  printf("\t1.按学分查询\n\t2.按课程性质查询\n");   scanf("%d",&z);    switch(z)   {     case 1:     printf("\t请输入要查找课程的学分:\n");     scanf("%ld",&t);     for(i=0;i<M;i++)        {         if(cou[i].credit==t)                 {                     K='x';                    printf("\t课程编号\t课程名称\t课程性质\t总学时\t授课学时\t上机学时\t学分\t开课学期\n");                     printf("\t%4ld\t",cou[i].number);                     printf(" %s\t",cou[i].name);                     printf("%s\t",cou[i].nature);                         printf("%4d\t%4d\t%4d\t%4d%8d\n",cou[t].totalhour,cou[t].classhour,cou[t].experimenthour,cou[t].credit,cou[t].term);                    system("pause");                     return(i);                 }         }     if(K='y')       {        printf("\t无此记录!");        return -1;        system("pause");      }     break;    case 2:      printf("\t请输入要查找课程的性质:\n");      scanf("%s",nature);      for(i=0;i<M;i++)        {         if(strcmp(cou[i].nature,nature)==0)           {            K='x';                       printf("\t课程编号\t课程名称\t课程性质\t总学时\t授课学时\t上机学时\t学分\t开课学期\n");            printf("\t%4ld\t",cou[i].number);            printf(" %s\t",cou[i].name);            printf("%s\t",cou[i].nature);                printf("%4d\t%4d\t%4d\t%4d%8d\n",cou[t].totalhour,cou[t].classhour,cou[t].experimenthour,cou[t].credit,cou[t].term);           system("pause");            return(i);          }        }      if(K='y')        {        printf("\t无此记录!");                    return -1;            system("pause");       }      break;    default: printf("\t输入有误!"); return -1;   }  } //插入记录函数//void insert(struct student stu[])  {   int i;char z='y';   for(i=M;i<=N&&z=='y';i++)      {       printf("\n\t请输入课程编号:");       scanf("%ld",&cou[i].number);       printf("\t请输入课程名称:");       scanf("%s",cou[i].name);       printf("\t请输入课程性质:");       scanf("%s",cou[i].nature);       printf("\t请输入总学时:");       scanf("%d",&cou[i].totalhour);       printf("\t请输入授课学时:");      scanf("%d",&cou[i].classhour);      printf("\t请输入上机学时:");       scanf("%d",&cou[i].experimenthour);            printf("\n\t要继续输入下一课程信息吗?y/n???");       z=getchar();       if(z!='y')         {          M=i+1;          output(cou);            //调用输出函数        } } } //删除记录函数//void delete(struct course cou[])  {   long flag=0,t,i,z;char l,name[20];                //flag为是否有输入记录的标志,1为有记录,0为无记录  printf("\n\t1.按课程编号删除\n\t2.按课程名称删除\n");   scanf("%d",&z);    switch(z)   {    case 1:     printf("\t请输入课程编号:");     scanf("%ld",&t);     for(i=0;i<M;i++)        {         if(cou[i].number==t)       {    flag=1;           printf("\t课程编号\t课程名称\t课程性质\t总学时\t授课学时\t上机学时\t学分\t开课学期\n");            printf("\t%4ld\t",cou[i].number);            printf(" %s\t",cou[i].name);            printf("%s\t",cou[i].nature);                printf("%4d\t%4d\t%4d\t%4d%8d\n",cou[t].totalhour,cou[t].classhour,cou[t].experimenthour,cou[t].credit,cou[t].term);           break;           }         }      if(flag)     {printf("\t确定删除吗?y/n???");      scanf("%s",&l);      if(l=='y')        {         for(;i<M;i++)             cou[i]=cou[i+1];                  M=M-1;        output(cou);      }}     else        printf("记录不存在!");        break;    case 2:      printf("请输入课程名称:");      scanf("%s",name);     for(i=0;i<M;i++)        {         if(strcmp(cou[i].name,name)==0)           {flag=1;            printf("\t课程编号\t课程名称\t课程性质\t总学时\t授课学时\t上机学时\t学分\t开课学期\n");            printf("\t%4ld\t",cou[i].number);            printf(" %s\t",cou[i].name);            printf("%s\t",cou[i].nature);                printf("%4d\t%4d\t%4d\t%4d%8d\n",cou[t].totalhour,cou[t].classhour,cou[t].experimenthour,cou[t].credit,cou[t].term);           break;           }        }      if(flag)     {printf("\n确定删除吗?y/n???");      scanf("%s",&l);      if(l=='y')        {         for(;i<M;i++)             cou[i]=cou[i+1];        M=M-1;       output(cou);        }      }       else         printf("记录不存在!");        break;    default:printf("\t输入有误!");    } }//主函数//int main() { int choice;for(;;)  { printf("\t\n-------- 学生选修课程系统--------\n"); printf("\t1.  修改课程记录\n"); printf("\t2.  输出课程记录\n"); printf("\t3.  课程记录排序\n"); printf("\t4.  查询课程记录\n"); printf("\t5.  插入课程记录\n"); printf("\t6.  删除课程记录\n"); printf("\t7.  选修课程记录\n");printf("\t8.  退出\n"); printf("\t请选择操作(1-8):\n"); scanf("%d",&choice); switch(choice) { case 1:modify(cou);break;         //调用修改记录函数case 2:output(cou);break;         //调用输记录函数case 3:sort(cou);break;             //调用排序函数case 4:search(cou);break;         //调用查询记录函数case 5:insert(cou);break;         //调用插入记录函数case 6: delete(cou);break;         //调用删除记录函数case 7: exit(0); break;             //退出程序default:printf("\t输入有误!"); }}return 0;}

对不齐的原因是因为你录入的数据有长有短,导致了这个问题哦,建议你循环输出课程名称的后面多加一个\t

 

您的问题已经有小伙伴解答了,请点击【采纳】按钮,采纳帮您提供解决思路的答案,给回答的人一些鼓励哦~~

ps:开通问答VIP,享受5次/月 有问必答服务,了解详情↓↓↓

【电脑端】戳>>>  https://vip.csdn.net/askvip?utm_source=1146287632
【APP 】  戳>>>  https://mall.csdn.net/item/52471?utm_source=1146287632