C语言输出的数据怎么可以对其 不会乱
// 请问怎么让输入的数据 输出出来可以对其 我现在的效果会随着输入的字数变化 对不齐 我是直接用|竖线做的 各位大佬可以运行我的代码看一下#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 100
struct xueshengkaoqin
{
char kc;
char name;
int id;
} xskq; /* 学生考勤 */
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.name);
fflush(stdin);
printf("请输入学生四位数的学号\n");
scanf("%d",&xskq.id);
fflush(stdin);
printf("请输入第一节课\n");
scanf("%s",&xskq.kc);
fflush(stdin);
printf("请输入第二节课\n");
scanf("%s",&xskq.kc);
fflush(stdin);
printf("请输入第三节课\n");
scanf("%s",&xskq.kc);
fflush(stdin);
printf("请输入第四节课\n");
scanf("%s",&xskq.kc);
fflush(stdin);
printf("请输入第五节课\n");
scanf("%s",&xskq.kc);
fflush(stdin);
printf("请输入第六节课\n");
scanf("%s",&xskq.kc);
fflush(stdin);
printf("请输入第七节课\n");
scanf("%s",&xskq.kc);
fflush(stdin);
printf("请输入第八节课\n");
scanf("%s",&xskq.kc);
fflush(stdin);
printf("请输入第九节课\n");
scanf("%s",&xskq.kc);
fflush(stdin);
printf("请输入第十节课\n");
scanf("%s",&xskq.kc);
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;
int i;
printf("请输入您要查找的学生\n");
printf("\n");
fflush(stdin);
gets(sname);
printf("\n");
if(strcmp(sname,xskq.name)==0)
{
printf("|| 名字 || 学号 || 第一节 || 第二节 || 第三节 || 第四节 || 第五节 || 第六节 || 第七节 || 第八节 || 第九节 || 第十节 ||\n");
printf
(
"|| %s || %-10d||%s||%s||%s||%s||%s||%s||%s||%s||%s||%s||\n",
xskq.name,xskq.id,xskq.kc,xskq.kc,xskq.kc,xskq.kc,
xskq.kc,xskq.kc,xskq.kc,xskq.kc,xskq.kc,xskq.kc,
xskq.kc
);
// tou();
}
}
统一用空格分格。。。上下字符长度对应就对齐了 ba21 发表于 2021-4-23 16:37
统一用空格分格。。。上下字符长度对应就对齐了
因为我这个是先自己手动输入学生信息 ,然后选择查询可以查看,有些名字是三个字 有些是两个字的 不管是用空格还是\t 因为输入的字的数目不一样 它们每一行就对不齐不是会往后面退 ,就是往前面缩进每一行输入的字数不一样 就会对不齐 ba21 发表于 2021-4-23 16:37
统一用空格分格。。。上下字符长度对应就对齐了
C:\Users\29681\Desktop 可以试试sprintf,我觉得应该可以解决你的问题,或者对输入的字符数进行判断
页:
[1]