鱼C论坛

 找回密码
 立即注册
查看: 1248|回复: 4

[已解决]C语言输出的数据怎么可以对其 不会乱

[复制链接]
发表于 2021-4-23 16:28:25 | 显示全部楼层 |阅读模式

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

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

x
// 请问怎么让输入的数据 输出出来可以对其 我现在的效果会随着输入的字数变化 对不齐 我是直接用|竖线做的 各位大佬可以运行我的代码看一下

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 100

struct xueshengkaoqin
{
        char kc[10][10];       
          char name[N];
    int id;
} xskq[N]; /*   学生考勤    */

void tou();      /*   头部    */
void kaoqin();   /* 日常考勤  */
void kqxh();     /* 考勤循环  */
void kqcz();    /* 考勤查找  */
void ckkc();    /* 查看考情  */
void jiuqin();   /* 就寝记录  */
void weisheng(); /* 日常卫生  */
void daode();    /* 道德品质  */
void biaoxian(); /* 课堂表现  */
void zhiye();    /* 作业完成  */
void zhoukao();  /*   周考    */
void yuekao();   /*   月考    */
void xiangmu();  /* 课程项目  */
void zongchengji();  /*课程总成绩 */
void baogao();   /* 打印报告  */
void shezhi();  /* 系统设置  */

int main()

{
       
//         while(1)
        tou();
       
}

void tou()

  {
          int n;
          printf("\n");
          printf("\n");
          printf("\n");
        printf("****************************欢迎来到学生管理系统***************************  \n");
        printf("\n");
        printf("\t\t\t      请输入所需操作\n");
        printf("\n");
        printf("\t\t\t      1.日常考勤\n");
        printf("\t\t\t      2.就寝记录\n");
        printf("\t\t\t      3.日常卫生\n");
        printf("\t\t\t      4.道德品质\n");
        printf("\t\t\t      5.课堂表现\n");
        printf("\t\t\t      6.作业完成\n");
        printf("\t\t\t      7.周考\n");
        printf("\t\t\t      8.月考\n");
        printf("\t\t\t      9.课程项目\n");
        printf("\t\t\t      10.课程总成绩\n");
        printf("\t\t\t      11.打印报告\n");
        printf("\t\t\t      12.系统设置\n");
        printf("\n");
        printf("***************************************************************************  \n");
        printf("\n");
       
    scanf("%d",&n);   
    printf("\n");
        switch(n)       
        {
               
        case 1 :
            kaoqin();
                break;
               
        default:
            printf("请重新输入(1-12)\n");
            break;
        }
       
}

void kaoqin()

  {       
    int i;
    for(i=0;i<N;i++)
    {
    printf("\n");       
        printf("*************    请输入日常考勤    *************\n");
        printf("\t考勤违规情况(迟到、早退、旷课、请假缺课)\t\n");
          printf("\n");
          printf("请输入学生名字\n");
          scanf("%s",xskq[i].name);
          fflush(stdin);

          printf("请输入学生四位数的学号\n");
          scanf("%d",&xskq[i].id);
          fflush(stdin);
         
          printf("请输入第一节课\n");
          scanf("%s",&xskq[i].kc[0]);
          fflush(stdin);
         
          printf("请输入第二节课\n");
          scanf("%s",&xskq[i].kc[1]);
          fflush(stdin);
         
          printf("请输入第三节课\n");
          scanf("%s",&xskq[i].kc[2]);
          fflush(stdin);
         
          printf("请输入第四节课\n");
          scanf("%s",&xskq[i].kc[3]);
          fflush(stdin);
         
          printf("请输入第五节课\n");
          scanf("%s",&xskq[i].kc[4]);
          fflush(stdin);
         
          printf("请输入第六节课\n");
          scanf("%s",&xskq[i].kc[5]);
          fflush(stdin);
         
          printf("请输入第七节课\n");
          scanf("%s",&xskq[i].kc[6]);
          fflush(stdin);
         
          printf("请输入第八节课\n");
          scanf("%s",&xskq[i].kc[7]);
          fflush(stdin);
         
          printf("请输入第九节课\n");
          scanf("%s",&xskq[i].kc[8]);
          fflush(stdin);
         
          printf("请输入第十节课\n");
          scanf("%s",&xskq[i].kc[9]);
          fflush(stdin);
         
    kqxh();
        break;
        }
              
  }
  
  
void kqxh() //考勤循环
{
        char c;
        int i;
        for(i=0;i<N;i++)
        {
                 printf("\n");
                  printf("是否继续添加学生考勤(y或n)\n");
                  fflush(stdin);
                  scanf("%c",&c);
                 if(c=='y')
              {
                    kaoqin();
                  }
                else if(c=='n')
                {
                            ckkc();
                }
                else if(c!='y' || c!='n')
                {
                            printf("\n");
                            printf("温馨提示输入错误 请重新输入\n");
                            printf("\n");
                      kqxh();
                }
       
        }
}   

void ckkc()  /* 查看考情  */
{
        char z;
        int j;
        for(j=0;j<N;j++)
        {
                 printf("\n");
                  printf("是否需要查看学生的考勤情况(y或n)\n");
                  fflush(stdin);
                  scanf("%c",&z);
                 if(z=='y')
              {
                    kqcz();
                    break;
                  }
                  else if(z=='n')
                  {
                            tou();
                  }
                  else if(z!='y' || z!='n')
                  {
                            printf("\n");
                            printf("温馨提示输入错误 请重新输入\n");
                            printf("\n");
                      ckkc();
                  }
       
        }
}

void kqcz()//考勤查找
{
//        int z;
        char sname[N];
        int i;
        printf("请输入您要查找的学生\n");
        printf("\n");
        fflush(stdin);
        gets(sname);
        printf("\n");
                                               
        if(strcmp(sname,xskq[i].name)==0)
        {
                printf("|| 名字 || 学号 || 第一节 || 第二节 || 第三节 || 第四节 || 第五节 || 第六节 || 第七节 || 第八节 || 第九节 || 第十节 ||\n");
                printf
                (               
                "|| %s || %-10d||  %s  ||  %s  ||  %s  ||  %s  ||  %s  ||  %s  ||  %s  ||  %s  ||  %s  ||  %s  ||\n",
                xskq[i].name,xskq[i].id,xskq[i].kc[0],xskq[i].kc[1],xskq[i].kc[2],xskq[i].kc[3],
                xskq[i].kc[4],xskq[i].kc[5],xskq[i].kc[6],xskq[i].kc[7],xskq[i].kc[8],xskq[i].kc[9],
                xskq[i].kc[10]
                );               
//        tou();
}
}



最佳答案
2021-4-23 17:14:52
可以试试sprintf,我觉得应该可以解决你的问题,或者对输入的字符数进行判断
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-23 16:37:54 | 显示全部楼层
统一用空格分格。。。上下字符长度对应就对齐了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-23 16:53:49 | 显示全部楼层
ba21 发表于 2021-4-23 16:37
统一用空格分格。。。上下字符长度对应就对齐了

因为我这个是先自己手动输入学生信息 ,然后选择查询可以查看,有些名字是三个字 有些是两个字的 不管是用空格还是\t 因为输入的字的数目不一样 它们每一行就对不齐不是会往后面退 ,就是往前面缩进  每一行输入的字数不一样 就会对不齐
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-23 17:06:06 | 显示全部楼层
ba21 发表于 2021-4-23 16:37
统一用空格分格。。。上下字符长度对应就对齐了

C:\Users\29681\Desktop
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-23 17:14:52 | 显示全部楼层    本楼为最佳答案   
可以试试sprintf,我觉得应该可以解决你的问题,或者对输入的字符数进行判断
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-14 15:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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