barriers / 阅读 / 详情

C语言程序设计 班级学生成绩管理系统

2023-06-14 07:16:44
共2条回复
我不懂运营
设计课题一:班级成绩管理系统

一、 问题描述:

对一个有N个学生的班级,每个学生有M门课程。该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。
二、功能要求:

1、本系统采用一个结构体数组,每个数据的结构应当包括:学号、姓名、M门课程名称。
2、本系统显示这样的菜单:
请选择系统功能项:
a、 成绩录入
b、 成绩显示
c、 成绩保存
d、 成绩排序
e、 成绩修改(要求先输入密码)
f、 成绩统计
(1) 显示每门课程成绩最高的学生的基本信息
(2) 显示每门课程的平均成绩
(3) 显示超过某门课程平均成绩的学生人数
g、 退出系统
3、执行一个具体的功能之后,程序将重新显示菜单。
4、将学生成绩保存到文件中。
三、算法提示:

1、数据结构:结构体类型数组。
2、数据库结构:下表构成该系统的基本数据库。

姓名 学号 课程名称1 课程名称2 ●●●●●●
char Char float float

四、测试数据:

学生人数N=10
课程门数M=4
课程名:数学、语文、英语、政治

五、其它
对该系统有兴趣的同学可以在实现上述基本功能后,完善系统的其它功能。
问题补充:
今天谁能给我答案啊!!!!!!!急急!!!!!!!
提问者: 342123465 - 一级
最佳答案
C语言课程设计报告—班级成绩管理系统
需要分析:
学生成绩管理系统有13种功能。把这13个功能做成13个子函数。在主函当数中设计一个菜单对这13个子数进行管理。来实现对整个系统的操作。
根据课题的要求。每一个学生的包括姓名(char)、学号(char)、M门课程的成绩(float).再加上系统功能上的要求每一学生的信息还要总分和名次等。所以自然的想到要用结构体来定义每一个学生的信息结构。然后用链表把它们组成一个有序的整体。用对链表的操作来实现对所有学生信息的统一管理(成绩显示、成绩排序、成绩修改等)。最后为了以后按照处理后的顺序保存到文件中。
. 各函数的功能:
概要设计:
程序的模块组成:
主 函 数: int main()
新建函数:STUDENT *init()
输入函数 :STUDENT *create()
显示函数: void print(STUDENT *head)
删除函数: STUDENT *delete(STUDENT *head)
按名字寻找函数: void lookup(STUDENT *head)
保存函数: void save(STUDENT *head)
按总分排序函数: STUDENT *sort(STUDENT *head)
计算总分和均分函数: void computer(STUDENT *h)
修改函数: STUDENT *Modify(STUDENT *head,STUDENT *new)
按学号排序函数: STUDENT *index(STUDENT *h)
菜单函数:int menu_select()
各个函数的主要功能:
输入函数: 随时输入数据。
菜单函数:显示系统主菜单。
显示函数: 显示所有学生的信息。
寻找函数: 方便学生查找自己的成绩。
删除函数: 删除某学生的信息。
排序函数: 按总成绩排序。
按学号排序函数: 按学号排序。
插入函数: 可以插入新的信息。
保存函数: 保存好学生成绩,以免丢失。
统计函数:
l 显示每门课程成绩最高的学生的基本信息。
l 显示每门课程的平均成绩。
l 显示超过某门课程平均成绩的学生人数。
课题的功能模块的划分:
开始
菜单界面
功能选择
初始化函数
输入学生信息
删除学生信息
显示学生信息
查找学生信息
按成绩排序
保存到文件
从文件读数据
插入学生成绩
分类合计
退出系统
结束
详细设计: 整个系统除了主函数外,另外还有14个函数,实现八大功能:输入功能、显示功能、查找功能、排序功能、插入功能、保存功能、读取功能。各个函数的详细设计说明分别如下:
主函数 main()
利用无限次循环for(;;)和swithch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。
菜单选择函数 int menu_select()
这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的九大功能,根据每个功能前面的序号进行选择。等执行完每一个函数功能后,返回菜单。
代码设计: 初始化函数 STUDENT *init()
这是一个无参函数,里面只有两个语句,它的作用是使链表初始化,使head的值为NULL和一个清屏语句。比如:没有这个函数的话,在你没有输入任何数据的情况下,去执行显示功能的时候会显示一些乱码!
输入记录函数 STUDENT *create() 这是一个无参函数,用来执行学生成绩记录的输入,当学生为@时停止输入,函数结束后,带回一个链表头的指针指向一下个学生的信息插在表头。
N-S流程图如下:
head=NULL无条件循环
指针p指向新开辟的单元
指针p是否为空
是 否
输入学号p->num
输出 p->num是否为@
内存 是 否
溢出 输入姓名p->name
停止 for(i=0;i<3;i++)
输入 输入成绩
返回 p->sum=s;
菜单 p->average=(float)s/3;

显示记录函数 void print(STUDENT *head)

这是一个不返回值的有参函数,形参为“链表头的指针”,负责对全部学生成绩记录的输出,不足之处就是不能对学生成绩进行分页显示。

算法:先将p结点的指针指向第一个结点,将p结点(即第一个结点)的数据输出。然后再将p结点的指针指向p指针的的指针(即下一结点),将p结点(即第一结点)的数据输出。重复执行此步聚直到p指针指向NULL为止。

N-S流程图如下:

p=head,使指向第一个结点

输出p所指向的结点

p指向一下个结点

当p指的不是表尾

程序调试:

由于本课题中的许多知识点都没有学过都要靠自己到课外的资料中去查找。在用的时候难免出现这样那样的错误。如开始设计出来的菜单不是预想的那样,而是总个窗中出现混乱。解决的这个问题的办法是调整。最后还是老师帮我帮我们找到了问题的所在——for 循环的次超过了链表中结点的数量。再就是自定义函数时由于课本的概念不清楚,多写了空格键,以至函数调用不出来。又如:在设计修改学生信息时的密密码时。当用户发现输入密码错误按了退格键后,因为“*”并没有消去。导致用户再次按退格键,又出现前面的情况。最终导致输入密码错误。所以用了两次退格键:

在对链表操作时,要特别链表指针的移动(p=p->next)和链表尾的判断 (p= =NULL)。没有指针的移动,就很容易出现死循环。而在运行过程中不能控制。所以你就会认为是死机。如果没有链表尾的判断。就会在运行过程出现想不到的错误。如:在显示链表信息时,后面就会出现乱码。

一个系统的菜单和提示信息非常重要。如果没有这些用户根本不知道怎么用你设计的这个系统。在设计的调试过程中也无法顺利的完成调试工作。有了一个清晰简单的菜单和一些提示信息这后,调试过程完成的非常顺利。

予我耐心解答的老师和同学,是他们为我小程序的成功起到了关键性的作用,那么多个日夜,如此多的困难,同学们勤恳塌实,从开始到结束,没有显出一点倦意,始终热情高涨,我感谢这种氛围,感谢学校提供的良好条件。

回顾起此次课程设计,至今我仍感慨颇多,的确,从拿到题目到完成整个编程,从理论到实践,在整整半个学期的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识重新温故。

本次课程设计结束了,对于我的影响很大。我通过这次实践学到了许多知识。学到了设计一个简单的系统。要注意哪些方面。也使我知道自己哪些方面做得还不够。

但我出总结出了一点点的经验如下:

1、要对系统的功能和要求做出详细的分析,并合理分解任务。
2、把分解出来的子任务,做给一个相对独立的模块。
3、在设计一个模块之前,要简单构想一下总界面的显视情况。
4、针对构想出来的界面进行程序的编写。
最后,感谢老师您对我的指导和从百忙中抽空看我的设计,谢谢!

附件:
源程序:
#include "stdio.h" /*I/O函数*/
#include "stdlib.h" /*其它说明*/
#include "string.h" /*字符串函数*/
#include "conio.h" /*屏幕操作函数*/
#include "mem.h" /*内存操作函数*/
#include "ctype.h" /*字符操作函数*/
#include "alloc.h" /*动态地址分配函数*/
#include "dos.h"
#define N 4 /*定义常数*/
typedef struct z1 /*定义数据结构*/
{
char no[12];
char name[20];
int score[N];
float sum;
float average;
int order;
struct z1 *next;
}STUDENT;
/*以下是函数原型*/
STUDENT *init(); /*初始化函数*/
STUDENT *create(); /*创建链表*/
STUDENT *delete(STUDENT *h); /*删除记录*/
void print(STUDENT *h); /* 显示所有记录*/
void lookup(STUDENT *h); /*查找*/
void save(STUDENT *h); /*保存*/
STUDENT *load(); /*读入记录*/
void computer(STUDENT *h); /*计算总分和均分*/
STUDENT *Modify(STUDENT *h); /*修改记录*/
void append(); /*追加记录*/
STUDENT *sort(STUDENT *h); /*按总分排序*/
STUDENT *index(STUDENT *h); /*按学号排序*/
int menu_select(); /*菜单函数*/
/******主函数开始*******/
main()
{
int i;
STUDENT *head; /*链表定义头指针*/
printf(" ");
printf(" * * ******* * ***** ***** * * ******* ");
printf(" * * * * * * * ** * * * ");
printf(" * * * * ******* * * * * * *** * ******* " );
printf(" * * * * * * * * * * * * * ");
printf(" * * ******* ******* ***** * *** * * * ******* ");
printf(" ");
printf(" ");
printf(" ");
sleep(2);
head=init(); /*初始化链表*/
clrscr(); /*清屏*/
for(;;) /*无限循环*/
{
switch(menu_select()) /*调用主菜单函数,返回值整数作开关语句的条件*/
{ /*值不同,执行的函数不同,break 不能省略*/
case 0:head=init();break; /*执行初始化*/
case 1:head=create();break; /*创建链表*/
case 2:print(head);break; /*显示全部记录*/
case 3:head=delete(head);break; /*删除记录*/
case 4:lookup(head);break; /*按名字查找记录*/
case 5:save(head);break; /*保存文件*/
case 6:head=load(); break; /*读文件*/
case 7:computer(head);break; /*计算总分和均分*/
case 8:head=Modify(head); break; /*修改记录,一般会插在表尾*/
case 9:head=sort(head);break; /*按部分排序*/
case 10:append();break; /*追加记录*/
case 11:head=index(head);break; /*按学号排序*/
case 12: exit(0); /*如菜单返回值为12程序结束*/
}
}
}
/*菜单函数,返回值为整数*/
menu_select()
{
char *menu[]={"***************MENU***************", /*定义菜单字符串数组*/
" 00. init list", /*初始化*/
" 01. Enter list", /*输入记录*/
" 02. print list ", /*显示单链表中所有记录*/
" 03. Delete a record from list", /*从表中删除记录*/
" 04. Search record on name", /*按照姓名查找记录*/
" 05. Save the file", /*将单链表中记录保存到文件中*/
" 06. Load the file", /*从文件中读入记录*/
" 07. compute the score", /*计算所有学生的总分和均分*/
" 08. Modify an information ", /*修改某学号的信息*/
" 09. sort to make new file", /*排序*/
" 10. append record to file", /*追加记录到文件中*/
" 11. index on nomber", /*按学号排序*/
" 12. Quit"}; /*退出*/
char s[3]; /*以字符形式保存选择号*/
int c,i; /*定义整形变量*/
gotoxy(1,1); /*移动光标*/
textcolor(YELLOW); /*设置文本显示颜色为黄色*/
textbackground(BLUE); /*设置背景颜色为蓝色*/
gotoxy(10,2); /*移动光标*/
putch(0xc9); /*输出左上角边框┏*/
for(i=1;i<44;i++)
putch(0xcd); /*输出上边框水平线*/
putch(0xbb); /*输出右上角边框 ┓*/
for(i=3;i<20;i++)
{
gotoxy(10,i);putch(0xba); /*输出左垂直线*/
gotoxy(54,i);putch(0xba); /*输出右垂直线*/
}
gotoxy(10,20);putch(0xc8); /*输出左上角边框┗*/
for(i=1;i<44;i++)
putch(0xcd); /*输出下边框水平线*/
putch(0xbc); /*输出右下角边框┛*/
window(11,3,53,19); /* 制作显示菜单的窗口,大小根据菜单条数设计*/
clrscr(); /*清屏*/
for(i=0;i<16;i++) /*输出主菜单数组*/
{
gotoxy(10,i+1);
cprintf("%s",menu[i]);
}
textbackground(BLACK); /*设置背景颜色为黑色*/
window(1,1,80,25); /*恢复原窗口大小*/
gotoxy(10,21); /*移动光标*/
do{printf(" make by wenwei");
printf(" Enter you choice(0~13):"); /*在菜单窗口外显示提示信息*/
scanf("%s",s); /*输入选择项*/
c=atoi(s); /*将输入的字符串转化为整形数*/
}while(c<0||c>14); /*选择项不在0~14之间重输*/
return c; /*返回选择项,主程序根据该数调用相应的函数*/
}
STUDENT *init()
{ clrscr();
return NULL;
}
/*创建链表*/
STUDENT *create()
{
int i; int s;
STUDENT *h=NULL,*info; /* STUDENT指向结构体的指针*/
clrscr();
for(;;)
{
info=(STUDENT *)malloc(sizeof(STUDENT)); /*申请空间*/
if(!info) /*如果指针info为空*/
{
printf(" out of memory"); /*输出内存溢出*/
return NULL; /*返回空指针*/
}
inputs("enter no:",info->no,11); /*输入学号并校验*/
if(info->no[0]=="@") { clrscr();break; } /*如果学号首字符为@则结束输入,清屏后返回*/
inputs("enter name:",info->name,15); /*输入姓名,并进行校验*/
printf("please input %d score ",N); /*提示开始输入成绩*/
s=0; /*计算每个学生的总分,初值为0*/
for(i=0;i<N;i++) /*N门课程循环N次*/
{
do{
printf("score%d:",i+1); /*提示输入第几门课程*/
scanf("%d",&info->score[i]); /*输入成绩*/
if(info->score[i]>100||info->score[i]<0) /*确保成绩在0~100之间*/
printf("bad data,repeat input "); /*出错提示信息*/
}while(info->score[i]>100||info->score[i]<0);
s=s+info->score[i]; /*累加各门课程成绩*/
}
info->sum=s; /*将总分保存*/
info->average=(float)s/N; /*求出平均值*/
info->order=0; /*未排序前此值为0*/
info->next=h; /*将头结点做为新输入结点的后继结点*/
h=info; /*新输入结点为新的头结点*/
clrscr();
}
return(h); /*返回头指针*/
}
/*输入字符串,并进行长度验证*/
inputs(char *prompt, char *s, int count)
{
char p[255];
do{
printf(prompt); /*显示提示信息*/
scanf("%s",p); /*输入字符串*/
if(strlen(p)>count)printf(" too long! "); /*进行长度校验,超过count值重输入*/
}while(strlen(p)>count);
strcpy(s,p); /*将输入的字符串拷贝到字符串s中*/
}
/*输出链表中结点信息*/
void print(STUDENT *h)
{
int i=0; /* 统计记录条数*/
STUDENT *p; /*移动指针*/
clrscr(); /*清屏*/
p=h; /*初值为头指针*/
printf(" *********************************STUDENT************************************ ");
printf("|rec|nO | name | sc1| sc2| sc3| sc4| sum | ave |order| ");
printf("|---|----------|---------------|----|----|----|----|--------|--------|-----| ");
while(p!=NULL) /*只要p不是尾结点,就输出记录*/
{
i++;
printf("|%3d|%-10s|%-15s|%4d|%4d|%4d|%4d| %6.2f | %6.2f | %3d | ", i, p->no,p->name,p->score[0],p->score[1],p->score[2],p->score[3],p->sum,p->average,p->order);
p=p->next;
}
printf("***********************************end************************************** ");
getch(); /*输入任一键返回主菜单*/
clrscr(); /*清屏*/
}
/*删除记录*/
STUDENT *delete(STUDENT *h)
{
STUDENT *p,*q; /*p为查找到要删除的结点指针,q为其前驱指针*/
char s[12]; /*存放学号*/
char *pass="wenwei28";
char a[20],b=NULL;
int i=0;
clrscr();
printf("Input your password:");
while((i<20)&&(b!=" "))
{ b=getch(); /*无回显输入*/
if(b==8)
{ if(i>0)
{a[--i]=NULL;
putchar(8); /*退格键*/
putchar(" "); /*以空格代替*/
putchar(8);
}
else putchar(7); /*没有任何字符的退格,响铃警告*/
}
else if(b!=" ")
{ a[i++]=b; /*只要不是退格和回车就接受*/
putchar("*");
}
else
{a[i]=NULL; break; /*密码输入完了,记得加个NULL到后面*/
}
}
if(strcmp(a,pass)!=0)
{clrscr();
printf("Password is mistake Tow seconds to return!");
sleep(2);clrscr();return h;
}
else {printf("Password is OK! Welcome to come!"); sleep(3);
}
clrscr(); /*清屏*/
printf("please deleted no "); /*显示提示信息*/
scanf("%s",s); /*输入要删除记录的学号*/
q=p=h; /*给q和p赋初值头指针*/
while(strcmp(p->no,s)&&p!=NULL) /*当记录的学号不是要找的,或指针不为空时*/
{
q=p; /*将p指针值赋给q作为p的前驱指针*/
p=p->next; /*将p指针指向下一条记录*/
}
if(p==NULL) /*如果p为空,说明链表中没有该结点*/
{ printf(" list no %s student ",s);sleep(2);clrscr();return h;}
else /*p不为空,显示找到的记录信息*/
{
printf("*********************************have found******************************** ");
printf("|no | name | sc1| sc2| sc3| sc4| sum | ave |order| ");
printf("|------------|---------------|----|----|----|----|--------|--------|-----| ");
printf("|%-12s|%-15s|%4d|%4d|%4d|%4d| %6.2f | %6-5.2f | %3d | ", p->no,
p->name,p->score[0],p->score[1],p->score[ q=p; /*保存当前结点的指针,作为下一结点的前驱*/
p=p->next; /*指针后移,新读入数据链到当前表尾*/
tt白

#include <stdio.h>

#include <malloc.h>

#include <string.h>

#include <conio.h>

#define ADDRFILE "c:\addrlist.txt"

typedef struct tagLinkedList

{

char name[30];

char tel[30];

char addr[100];

struct tagLinkedList *prev;

struct tagLinkedLIst *next;

}ADDR;

ADDR *g_pAddrHead = NULL;

ADDR *g_pFind;

int g_bSaved = 1;

void get_addrlist(void);

int add_list(const ADDR *addr);

int find_list(const char *name);

void SetHeadPosition(void);

void SetTailPosition(void);

void Add_addr(void);

void Find_addr(void);

void Modify_addr(void);

void Delete_addr(void);

void Print_addr(void);

void Save_addr(void);

void Remove_addr(void);

void main(void)

{

int ch;

get_addrlist();

puts("通讯录程序 Version 1.0");

while(1)

{

printf(" [1]新增 [2]搜索 [3]修改 [4]删除 [5]输出 [S]储存 [Q]退出");

ch = getch();

switch(ch)

{

case "1": Add_addr();break;

case "2": Find_addr();break;

case "3": Modify_addr();break;

case "4": Delete_addr();break;

case "5": Print_addr();break;

case "s":

case "S": Save_addr();break;

case "q":

case "Q":

if(g_bSaved == 0)

{

printf(" 修改后的数据需要储存吗?(y/n)?");

ch = getchar();

if(ch == "Y" || ch == "y") Save_addr();

}

Remove_addr(); exit(1);

default : printf(" 请按1~5或S/Q健. ");break;

}

}

}

void get_addrlist(void)

{

ADDR addr;

FILE *fp;

fp = fopen(ADDRFILE,"rb");

if(fp == NULL)

{

perror("open file error;");

return;

}

while(!feof(fp))

{

fread(&addr,1,sizeof(ADDR),fp);

if(ferror(fp))

{

fclose(fp);

perror("file read error;");

return;

}

if(feof(fp))break;

if(add_list(&addr) == 0)

{

printf(". ");

}

}

fclose(fp);

}

int add_list(const ADDR *addr)

{

ADDR *plocal,*pn = g_pAddrHead;

SetHeadPosition();

if(g_pAddrHead == NULL)

{

plocal = malloc(sizeof(ADDR));

memset(plocal,0,sizeof(ADDR));

if(plocal == NULL)

{

return 0;

}

g_pAddrHead = plocal;

g_pAddrHead->prev = NULL;

g_pAddrHead->next = NULL;

}

else

{

plocal = malloc(sizeof(ADDR));

memset(plocal,0,sizeof(ADDR));

if(plocal == NULL)

{

return 0;

}

while(pn->next)

{

pn = pn->next;

}

pn->next = plocal;

plocal->prev = pn;

plocal->next = NULL;

}

strcpy(plocal->name,addr->name);

strcpy(plocal->tel,addr->tel);

strcpy(plocal->addr,addr->addr);

return 1;

}

int find_list(const char *name)

{

ADDR *plocal;

SetHeadPosition();

plocal = g_pAddrHead;

while(plocal)

{

if(strstr(plocal->name,name))

{

g_pFind = plocal;

return 1;

}

plocal = plocal->next;

}

return 0;

}

void SetHeadPosition(void)

{

if(g_pAddrHead == NULL) return;

while(g_pAddrHead->prev)

{

g_pAddrHead = g_pAddrHead->prev;

}

}

void SetTailPosition(void)

{

if(g_pAddrHead == NULL) return;

while(g_pAddrHead->next)

{

g_pAddrHead = g_pAddrHead->next;

}

}

void Remove_addr(void)

{

ADDR *plocal;

if(g_pAddrHead == NULL) return;

SetHeadPosition();

while(g_pAddrHead)

{

plocal = g_pAddrHead->next;

free(g_pAddrHead);

g_pAddrHead = plocal;

}

g_pAddrHead = NULL;

}

void Add_addr(void)

{

ADDR addr;

memset(&addr,0,sizeof(ADDR));

printf(" Name: ");gets(addr.name);

if(strlen(addr.name) == 0) return;

printf("TEL: ");gets(addr.tel);

printf("ADDR: ");gets(addr.addr);

if(find_list(addr.name) == 1)

{

printf(" 已经存在的姓名. ");

puts(g_pFind->name);

puts(g_pFind->tel);

puts(g_pFind->addr);

return;

}

if(add_list(&addr))

{

g_bSaved = 0;

printf(" 储存完毕. ");

}

}

void Find_addr(void)

{

char buff[100] ={0,};

ADDR *plocal;

printf(" 请输入要查找的姓名/电话/地址. ");

printf("姓名/电话/地址 :");gets(buff);

if(strlen(buff) == 0) return;

SetHeadPosition();

plocal = g_pAddrHead;

g_pFind = NULL;

while(plocal)

{

if(strstr(plocal->name,buff))

{

g_pFind = plocal;

break;

}

if(strstr(plocal->tel,buff))

{

g_pFind = plocal;

break;

}

if(strstr(plocal->addr,buff))

{

g_pFind = plocal;

break;

}

plocal = plocal->next;

}

if(g_pFind)

{

puts(g_pFind->name);

puts(g_pFind->tel);

puts(g_pFind->addr);

}

else

{

printf(" 搜索不到要找的%s. ",buff);

}

}

void Modify_addr(void)

{

char name[100] = {0,};

ADDR addr;

while(1)

{

printf(" 要修改的姓名: ");gets(name);

if(strlen(name) == 0) return;

if(find_list(name) == 0)

{

puts("输入的姓名不存在.");

continue;

}

break;

}

printf(" %s的通讯录如下: ",name);

puts(g_pFind->name);

puts(g_pFind->tel);

puts(g_pFind->addr);

printf(" 输入要修改的姓名/电话/地址. ");

printf("NAME: ");gets(addr.name);

printf("TEL : ");gets(addr.tel);

printf("ADDR: ");gets(addr.addr);

if(strlen(addr.name)==0) strcpy(addr.name,name);

strcpy(g_pFind->name,addr.name);

strcpy(g_pFind->tel,addr.tel);

strcpy(g_pFind->addr,addr.addr);

g_bSaved = 0;

printf("%s的通讯录修改成功. ",name);

}

void Delete_addr(void)

{

char name[100] ={0,};

ADDR *plocal;

int ch;

while(1)

{

printf(" 要删除的姓名: ");gets(name);

if(strlen(name)==0) return;

if(find_list(name) == 0)

{

puts("要删除的通讯录不存在.");

continue;

}

break;

}

puts(g_pFind->name);

puts(g_pFind->tel);

puts(g_pFind->addr);

printf("确定要删除%s的通讯录吗(y/n)?",name);

ch = getch();

fflush(stdin);

if(ch == "Y"||ch == "y")

{

if(g_pFind->prev == NULL)

{

if(g_pFind->next == NULL)

{

free(g_pFind);

g_pAddrHead = NULL;

}

else

{

plocal = g_pFind->next;

free(g_pFind);

plocal->prev =NULL;

g_pAddrHead = plocal;

}

}

else if(g_pFind->next == NULL)

{

plocal = g_pFind->prev;

free(g_pFind);

plocal->next =NULL;

g_pAddrHead = plocal;

}

else

{

plocal = g_pFind->prev;

plocal->next = g_pFind->next;

plocal = g_pFind->next;

plocal->prev = g_pFind->prev;

free(g_pFind);

g_pAddrHead = plocal;

}

g_bSaved = 0;

printf(" 删除完毕. ");

}

}

void Print_addr(void)

{

int count = 1;

ADDR *plocal;

SetHeadPosition();

if(g_pAddrHead == NULL)

{

printf(" 无任何数据 ");

return;

}

plocal = g_pAddrHead;

while(plocal->prev)

{

plocal=plocal->prev;

}

printf(" ");

while(plocal)

{

printf("NO.%d ",count++);

puts(plocal->name);

puts(plocal->tel);

printf("%s ",plocal->addr);

printf("请按任意一健(结束:q) ");

getch();

if(getch() == "q")return;

plocal=plocal->next;

}

}

void Save_addr(void)

{

ADDR *plocal, *pn;

FILE *fp;

if(g_pAddrHead == NULL) return;

fp = fopen(ADDRFILE,"w+b");

if(fp == NULL)

{

perror("file open error;");

return;

}

SetHeadPosition();

plocal = g_pAddrHead;

while(plocal)

{

pn = plocal->next;

plocal = pn;

}

printf(" 所有数据已经储存完毕.");

g_bSaved = 1;

fclose(fp);

}

相关推荐

C语言中clrscr()是什么意思?

清除文本模式窗口 清屏的意思 就是把之前显示出的文字字符去掉 跟cmd里面的清屏的功能是一样的 实际上是clear screen的简写
2023-06-13 15:08:133

clrscr是什么东西?

C语言控制台程序中清屏幕的函数,是Clear Screen的缩略语,一般包含在conio.h头文件中。没记错的话,似乎Visual C++ 6或7等新版本已经没这个了,可以用system("cls");代替。
2023-06-13 15:08:441

C语言中加入clrscr();为什么报错?

没有这个系统命令。。。
2023-06-13 15:08:563

c语言中的清屏函数clrscr()应该怎么用?

#include <conio.h>void main(){ system("cls"); }
2023-06-13 15:09:318

c 语言中clrscr();函数是什么意思啊?

就是清屏
2023-06-13 15:10:055

C语言中的clrscr()函数有什么作用

clrscr() 顾名思义 “清屏幕”函数。 要头文件 #include <conio.h>clr -- clearing 清scr -- screen 屏幕这是非常非常古老的Borland C 里的函数。现在的编译器 未必支持。现在的 windows 系统 可用 system("cls"); 代替它。
2023-06-13 15:10:231

C语言中的 clrscr() 函数有什么作用?

清屏
2023-06-13 15:10:337

clrscr是什么东西?

分类: 教育/科学 >> 科学技术 问题描述: 这是不是编程中的一个函数? 解析: C语言控制台程序中清屏幕的函数,是Clear Screen的缩略语,一般包含在conio.h头文件中。没记错的话,似乎Visual C++ 6或7等新版本已经没这个了,可以用system("cls");代替。
2023-06-13 15:10:541

clrscr 是哪个头文件包含的

clrscr是TC特有的,其它的C语言环境没有这个函数,也就没有头文件包含这个函数。建议使用system("cls");来取代clrscr();比较通用,兼容性好一点。system()函数在#include <stdlib.h>里面。
2023-06-13 15:11:031

clrscr的定义

clrscr不是标准C语言的函数.它是TC的清屏幕函数.PC可以用system("cls");UNIX linux 用system("clear");
2023-06-13 15:11:102

C语言中清屏函数是什么?

clrscr();
2023-06-13 15:11:334

clrscr函数如何定义

这个函数不用定义,它是tc或bc的清屏函数,在dos.h头文件中声明。#include<dos.h>int main(){ .... clrscr(); ......}
2023-06-13 15:11:481

c语言 清屏函数

vc里面的是stalib头文件......
2023-06-13 15:11:5911

请问 clrscr(); 这个函数在哪个头文件里的?

在<conio.h>里,TC中能通过编译但不能在VC中通过编译,不知道为什么
2023-06-13 15:13:152

请问下Devc++中如何才能使用clrscr()函数

#include "stdlib.hsystem("cls");
2023-06-13 15:13:251

clrscr()与gotoxy()函数在C++中怎么用

clrscr()清屏函数gotoxy(x,y)说具体点就是在当前窗口内移动光标到指定位置(x,y),如果未自定义窗口,那么当前窗口缺省为整个文本屏,补充一下,光标坐标从窗口的左上角第一个字符(1,1)(在文本方式下编写窗口方式的程序,都会用到这个函数)VisualC++中使用gotoxy()/clrscr()等函数#include<windows.h>voidclrscr(void);voidclreol(void);voidclreoscr(void);voidgotoxy(int,int);//---Funktionsimplementierung/*********************************************************************************/voidclrscr(void)//clearscreen:gesamtenBildschirmleeren{CONSOLE_SCREEN_BUFFER_INFOcsbiInfo;//variablendklarationHANDLEhConsoleOut;COORDHome={0,0};DWORDdummy;hConsoleOut=GetStdHandle(STD_OUTPUT_HANDLE);GetConsoleScreenBufferInfo(hConsoleOut,&csbiInfo);FillConsoleOutputCharacter(hConsoleOut,"",csbiInfo.dwSize.X*csbiInfo.dwSize.Y,Home,&dummy);//biscursorpositionleerzeichenausgebencsbiInfo.dwCursorPosition.X=0;//cursorpositionXkoordinatefestlegencsbiInfo.dwCursorPosition.Y=0;//cursorpositionYkoordinatefestlegenSetConsoleCursorPosition(hConsoleOut,csbiInfo.dwCursorPosition);//dencursorandiefestgelegtekoordinatesetzen}/*********************************************************************************/voidclreol(void)//clearendofline:denrestderZeilenachdemcursorl鲾chen{CONSOLE_SCREEN_BUFFER_INFOcsbiInfo;//variablendklarationHANDLEhConsoleOut;COORDHome,pos;DWORDdummy;hConsoleOut=GetStdHandle(STD_OUTPUT_HANDLE);GetConsoleScreenBufferInfo(hConsoleOut,&csbiInfo);Home=csbiInfo.dwCursorPosition;pos.X=80-csbiInfo.dwCursorPosition.X;FillConsoleOutputCharacter(hConsoleOut,"",pos.X,Home,&dummy);}/*********************************************************************************/voidclreoscr(void)//clearendofscreen:allesnachdemcursorl鲾chen{CONSOLE_SCREEN_BUFFER_INFOcsbiInfo;//variablendklarationHANDLEhConsoleOut;COORDHome;DWORDdummy;hConsoleOut=GetStdHandle(STD_OUTPUT_HANDLE);GetConsoleScreenBufferInfo(hConsoleOut,&csbiInfo);Home=csbiInfo.dwCursorPosition;FillConsoleOutputCharacter(hConsoleOut,"",csbiInfo.dwSize.X*csbiInfo.dwSize.Y,Home,&dummy);}/*********************************************************************************/voidgotoxy(intx,inty)//cursorangewuenschtepositionaufdembildschirmsetzen{CONSOLE_SCREEN_BUFFER_INFOcsbiInfo;//variablendklarationHANDLEhConsoleOut;hConsoleOut=GetStdHandle(STD_OUTPUT_HANDLE);GetConsoleScreenBufferInfo(hConsoleOut,&csbiInfo);csbiInfo.dwCursorPosition.X=x;//cursorpositionXkoordinatefestlegencsbiInfo.dwCursorPosition.Y=y;//cursorpositionYkoordinatefestlegenSetConsoleCursorPosition(hConsoleOut,csbiInfo.dwCursorPosition);//dencursorandiefestgelegtekoordinatesetzen}
2023-06-13 15:13:331

为什么我的clrscr();清屏函数用不了?

用 system("CLS");头文件 stdlib.h简单例子#include<stdio.h>#include<stdlib.h> int main(){printf("Hello World! ");system("PAUSE");system("CLS");system("PAUSE");return 0;}
2023-06-13 15:13:422

C程序改错 求一维数组a:(10,4,2,7,3,12,5,34,5,9)中值为偶数的元素之和。正确结果为62.

s = s + i;改成s=s+arr[i];
2023-06-13 15:13:534

清屏clrscr()放哪里?

这就么点东西,还清什么屏?多学学中要的东西,别把时间浪费在次要的东西上
2023-06-13 15:14:216

TCC中的clrscr函数怎么用?

经过测试,发现TCC好像没有提供这个函数的定义,所以自己写了一个简单的DLL文件以实现这个函数的功能,方法如下:新建一个c语言源程序文件(假设为cls.c),输入以下代码:#include <stdlib.h>__declspec(dllexport) void clrscr(void){ system("cls");}之后用TCC将cls.c编译生成cls.DLL文件:tcc -shared cls.c将生成的cls.dll文件放在需要调用clrscr()函数的程序目录中,并用以下命令编译程序(假设程序文件名为a.c)tcc a.c -lcls现在就不会出现找不到定义的提示了,要注意的是动态库(cls.dll)要和可执行文件(a.exe)放在同一个目录,或者在系统中注册。***********************************************************其它的conio.h文件中声明,但是却不能调用的函数,也可以用上述方法将其实现添加到cls.c文件将重新生成cls.dll文件,这样在编译程序时加上-lcls就可以调用了。
2023-06-13 15:14:353

c++如何清屏?

使用system("cls");#include<stdio.h>#include<stdlib.h>intmain(){printf("clearme");system("cls");return0;}#includesystem("cls");循环一百次,循环体为printf(" ");扩展资料:C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之。数据类型指明变量或表达式的状态和行为,数据类型决定了数的取值范围和允许执行的运算符集。c++语言数据类型可以分为两大类:基本类型和引用类型。基本类型是指不能再分解的数据类型,其数据在函数的调用中是以传值方式工作的;引用类型有时也称复合类型,它是可以分解为基本类型的数据类型,其数据在函数调用中是以传址方式来工作的。参考资料来源:百度百科-c++
2023-06-13 15:14:431

clrscr是什么意思,怎么用,为什么Microsoft Visual C++ 6.0编译不过去?

你用的是turobc吧,VC6。0没有这个函数。是清屏的意思。
2023-06-13 15:14:515

unresolved external symbol _clrscr

把 clrscr(); 改写为system("CLS");
2023-06-13 15:15:083

使用java语言实现以下功能:1.工号 2.姓名3.性别4.车间5.生日6.进厂时间7.

我这个是我以前课程设计时做的,也是工资管理系统,功能貌似比你多,你自己删减下,我这里还有当时交的课程设计报告书,上面有详细说明,要的话给我邮箱发给你,记得采纳啊~~#include "stdio.h"#include "bios.h"#include "dos.h"#include "conio.h"#include "stdlib.h"#include "string.h"#include "mem.h"#include "ctype.h"#include "alloc.h"typedef struct z1{ char no[11]; char name[15]; float jbgz; float koukuan; float yfgz; float shuijin; float sfgz; struct z1 *prior; struct z1 *next;}SALARY;struct z1 *First;struct z1 *Last;void init();void create();void calc();void delete();void search();void change();void save();void load();void insert();void list();void print(SALARY *p);float fax(float x);int menu_select();main(){ int i; clrscr(); for(;;) { switch(menu_select()) { case 1:create();clrscr();break; case 2:calc();clrscr();break; case 3:search();clrscr();break; case 4:change();clrscr();break; case 5:insert();clrscr();break; case 6:delete();clrscr();break; case 7:list();clrscr();break; case 8:save();clrscr();break; case 9:load();clrscr();break; case 0:exit(0); } }}menu_select(){ char *f[]= { "********SalaryMangementSystem*********", " 1. Enter list", " 2. Calc the salary", " 3. Search record by no", " 4. Change record by no", " 5. Insert record to list", " 6. Delete a record", " 7. List all ", " 8. Save data to the file", " 9. Load dta from the file", " 0. Quit", "**************************************", "Please enter your choice:" }; int i; int c=0; for(i=0;i<13;i++) { gotoxy(1,3+i); cprintf("%s",f[i]); } scanf("%d",&c); return c;}void init(){ First=NULL; Last=NULL;}/*输入数据,创建双链表*/void create(){ int x; /*记录行坐标*/ int i; /*记录输入记录数*/ int flag=0; /*做结束标记*/ float temp; /*定义临时变量*/ SALARY *info,*p; /*定义临时变量*/ if(First!=NULL) init();/*如果头指针不为空,调用初始化函数*/ p=First; /*从头指针开始*/ for(;;) { if(flag==1) break; /*如果flag=1,结束输入*/ i=0; x=0; /*确定移动的行坐标*/ clrscr(); /*清屏*/ gotoxy(1,3); printf("*************gongziguanli*************");/*输出标题*/ gotoxy(1,4); printf(" --Enter S end--");/*提示输入@结束*/ gotoxy(1,5); printf("|------------------------------------|");/*输出表格的起始线*/ gotoxy(1,6); printf("| no | name | jbgz |");/*输出字段标题,注意空格数*/ for(;;) { gotoxy(1,7+x); printf("|----------|----------------|--------|");/*输出表格的水平线*/ info=(SALARY *)malloc(sizeof(SALARY));/*申请一个记录空间*/ if(!info) { printf(" out of memory");/*如没有得到空间,输出内存溢出信息*/ exit(0);/*退出程序*/ } info->next=NULL;/*新结点的后继为空*/ info->prior=NULL;/*新结点的前驱为空*/ gotoxy(1,8+x);printf("|"); /*输出数据间的分割线*/ gotoxy(12,8+x);printf("|"); gotoxy(29,8+x);printf("|"); gotoxy(38,8+x);printf("|"); gotoxy(2,8+x);/*光标到输入编号位置*/ inputs(info->no,10);/*输入编号,并验证长度不超过10*/ if(info->no[0]=="S"||info->no[0]=="s") { flag=1; break; } /*编号首字母为S结束输入*/ gotoxy(13,8+x); /*光标到输入姓名位置*/ inputs(info->name,14); /*输入姓名,并验证长度不超过14*/ gotoxy(30,8+x); /*光标到输入基本工资位置*/ scanf("%f",&temp); /*输入基本工资到临时变量*/ info->jbgz=temp; /*基本工资赋值*/ info->koukuan=0; /*初始扣款为0,待计算工资时输入*/ info->sfgz=0; /*初始实发工资为0,待计算工资时计算*/ info->shuijin=0; /*初始税金为0,待计算工资时计算*/ info->yfgz=0; /*初始应发工资为0,待计算工资时计算*/ if(p==NULL)/*如果p为空,说明输入的是第一个结点*/ { First=Last=info;/*头指针和尾指针*/ First->prior=NULL; /*头指针的前驱是空*/ Last->next=NULL; /*尾指针的后继是空*/ } else /*插入的结点不是第一结点,则插入在头结点之前*/ { info->next=p;/*新结点的后继指向原来的头结点*/ info->prior=p->prior;/*新结点的前驱指向原来的头结点的前驱*/ p->prior=info;/*原来结点的前驱指向新结点*/ } p=info; /*新结点变为p结点,暂时的头结点*/ First=info; /*新结点变为头结点*/ x+=2; /*因为水平线,将光标下移两行*/ gotoxy(1,8+x); i++; /*输入记录数加1*/ if(i%9==0) break; /*输入9个记录,换一页输入*/ } gotoxy(1,8+x); } printf("*****************end*****************");/*输出结尾水平线*/}/*字符串输入和验证函数*/inputs(char *s, int count){ char p[255]; do{ scanf("%s",p);/*输入字符串*/ if(strlen(p)>count)printf(" too long! ");/*进行长度校验,超过count值重输入*/ }while(strlen(p)>count); strcpy(s,p); /*将输入的字符串拷贝到字符串s中*/}/*显示链表*/void list(){ int i=0,n; /*记录输出行数*/ SALARY *p; /*定义移动指针*/ clrscr(); /*清屏*/ p=First; /*从头指针开始*/ while(i%10==0&&p!=NULL) /*外循环控制换页*/ { i=0; /*记录一页的输出行数*/ clrscr(); /*清屏*/ printf(" "); /*换行三次*/ printf("*************************************SALARY*********************************** "); /*输出大标题*/ printf("|nO | name | jbgz | koukuan | yfgz | shuijin | sfgz | "); /*输出字段标题*/ printf("|----------|---------------|---------|---------|---------|---------|---------| "); /*输出水平线*/ while(p!=NULL) /*当p不为空时*/ { printf("|%-10s|%-15s|%9.2f|%9.2f|%9.2f|%9.2f|%9.2f| ", p->no,p->name,p->jbgz,p->koukuan,p->yfgz,p->shuijin,p->sfgz); p=p->next; /*指针后移*/ i++; /*输出行数加1 */ if(i%10==0) break; /*如果满10行,跳出内循环*/ } printf("****************************************end*********************************** "); /*输出本页的结束行*/ printf("Press any key congtinue... "); getch(); /*输出一页暂停一下,压任意键继续*/ } /*返回到外循环,准备下一页的输出*/}/*输出指针所指结点信息*/void print(SALARY *p){ if(p) /*如果指针不为空,则显示信息*/ { clrscr(); /*清屏*/ printf(" "); /*换行*/ printf("************************************SALARY************************************ "); /*输出标题信息*/ printf("|no | name | jbgz | koukuan| yfgz | shuijin | sfgz | "); /*输出字段标题*/ printf("|----------|---------------|---------|---------|---------|---------|---------| "); /*输出分割线*/ printf("|%-10s|%-15s|%9.2f|%9.2f|%9.2f|%9.2f|%9.2f| ", p->no,p->name, p->jbgz,p->koukuan,p->yfgz,p->shuijin,p->sfgz);/*输出结点信息*/ printf("***************************************end************************************ "); /*输出结束标记*/ }}/*计算实发工资*/void calc(){ int x; /*行坐标*/ int i=0; /*记录数*/ float temp; /*临时变量扣款*/ SALARY *p; /*移动指针*/ clrscr(); /*清屏*/ p=First; /*从头指针开始*/ while(p!=NULL) /*当p不为空时,也就是有记录时,外循环控制换页*/ { x=0; clrscr(); gotoxy(1,3); printf("***************************gongziguanli************************************"); /*输出标题*/ gotoxy(1,5); printf("|--------------------------------------------------------------------------|"); gotoxy(1,6);/*下面输出字段标题*/ printf("| no | name | jbgz | koukuan | yfgz |shuijin | sfgz |"); while(p!=NULL) /*当p不为空时,也就是有记录时,内循环控制处理9条*/ { gotoxy(1,7+x); printf("|----------|----------------|--------|----------|--------|--------|--------|"); gotoxy(1,8+x);printf("|"); gotoxy(12,8+x);printf("|"); gotoxy(29,8+x);printf("|"); gotoxy(38,8+x);printf("|"); gotoxy(49,8+x);printf("|"); gotoxy(58,8+x);printf("|"); gotoxy(67,8+x);printf("|"); gotoxy(76,8+x);printf("|"); gotoxy(2,8+x); printf("%-10s",p->no); /*输出编号*/ gotoxy(13,8+x); printf("%-15s",p->name); /*输出姓名*/ gotoxy(30,8+x); printf("%.2f",p->jbgz); /*输出基本工资*/ gotoxy(39,8+x); scanf("%f",&temp); /*输入扣款*/ p->koukuan=temp; /*扣款字段赋值*/ p->yfgz=p->jbgz-p->koukuan; /*计算应发工资=基本工资-扣款*/ gotoxy(50,8+x); printf("%.2f",p->yfgz); /*输出应发工资*/ gotoxy(59,8+x); p->shuijin=(p->yfgz-1000)*fax(p->yfgz); /*否则按税率计算税金*/ printf("%.2f",p->shuijin); /*输出税金*/ gotoxy(68,8+x); p->sfgz=p->yfgz-p->shuijin; /*计算实发工资*/ printf("%-8.2f",p->sfgz); /*输出实发工资*/ x+=2; /*行坐标下移两行*/ i++; /*记录数加1*/ if(i%9==0)break; /*记录数超过9条,跳出内循环*/ p=p->next; /*指针后移,处理下一条*/ } gotoxy(1,7+x); printf("***************************************end*********************************** "); /*输出结束行*/ printf("Press any key congtinue... "); getch(); }}/*根据应发工资,计算税率*/float fax(float x){ float f1; if(x<1000) return 0; /*小于1000,返回0*/ switch((int)(x/1000)) { case 1:f1=0.05;break; /*1000~1999,返回0.05*/ case 2:f1=0.1;break; /*2000~2999,返回0.1*/ case 3:f1=0.15;break; /*3000~3999,返回0.15*/ case 4:f1=0.2;break; /*4000~4999,返回0.2*/ default:f1=0.3;break; /*5000以上,返回0.3*/ } return f1;}
2023-06-13 15:15:161

realloc和malloc用法

realloc 原型:extern void *realloc(void *mem_address, unsigned int newsize); 用法:#include <stdlib.h> 有些编译器需要#include <alloc.h> 功能:改变mem_address所指内存区域的大小为newsize长度。 说明:如果重新分配成功则返回指向被分配内存的指针,否则返回空指针NULL。 当内存不再使用时,应使用free()函数将内存块释放。 注意:这里原始内存中的数据还是保持不变的。 举例: // realloc.c #include <syslib.h> #include <alloc.h> main() { char *p; clrscr(); // clear screen p=(char *)malloc(100); if(p) printf("Memory Allocated at: %x",p); else printf("Not Enough Memory! "); getchar(); p=(char *)realloc(p,256); if(p) printf("Memory Reallocated at: %x",p); else printf("Not Enough Memory! "); free(p); getchar(); return 0; } 详细说明及注意要点: 1、如果有足够空间用于扩大mem_address指向的内存块,则分配额外内存,并返回mem_address 这里说的是“扩大”,我们知道,realloc是从堆上分配内存的,当扩大一块内存空间时, realloc()试图直接从堆上现存的数据后面的那些字节中获得附加的字节,如果能够满足,自然天下太平。也就是说,如果原先的内存大小后面还有足够的空闲空间用来分配,加上原来的空间大小= newsize。那么就ok。得到的是一块连续的内存。 2、如果原先的内存大小后面没有足够的空闲空间用来分配,那么从堆中另外找一块newsize大小的内存。 并把原来大小内存空间中的内容复制到newsize中。返回新的mem_address指针。(数据被移动了)。 老块被放回堆上。 例如: #include <malloc.h> char *p,*q; p = (char * ) malloc (10); q=p; p = (char * ) realloc (p,20); ………………………… 这段程序也许在编译器中没有办法通过,因为编译器可能会为我们消除一些隐患!在这里我们只是增加了一个记录原来内存地址的指针q,然后记录了原来的内存地址p,如果不幸的话,数据发生了移动,那么所记录的原来的内存地址q所指向的内存空间实际上已经放回到堆上了!这样一来,我们应该终于意识到问题的所在和可怕了吧! 3、返回情况 返回的是一个void类型的指针,调用成功。(这就再你需要的时候进行强制类型转换) 返回NULL,当需要扩展的大小(第二个参数)为0并且第一个参数不为NULL,此时原内存变成了“freed(游离)”的了。 返回NULL,当没有足够的空间可供扩展的时候,此时,原内存空间的大小维持不变。 4、特殊情况 如果mem_address为null,则realloc()和malloc()类似。分配一个newsize的内存块,返回一个指向该内存块的指针。 如果newsize大小为0,那么释放mem_address指向的内存,并返回null。 如果没有足够可用的内存用来完成重新分配(扩大原来的内存块或者分配新的内存块),则返回null.而原来的内存块保持不变。
2023-06-13 15:15:242

C语言的sleep,wait,delay函数有什么区别?

wait 是等待子进程的返回sleep 参数指定暂停时间, 单位是 sdelay 参数指定暂停时间, 单位是 ms所以 sleep(n) == delay(1000*n)原型:extern void sleep(unsigned int sec);用法:#include <system.h功能:短暂延时说明:延时sec秒举例:// sleep.c#include <system.hmain(){int c;clrscr();printf(" Hello, world!");sleep(1);clrscr();printf(" Hi, guys");getchar();return 0;}原型:extern void delay(unsigned int msec);用法:#include <system.h功能:短暂延时说明:延时msec*4毫秒举例:// delay.c#include <system.hmain(){int c;clrscr();printf(" Hello, world!");delay(250); // 250*4=1000msec=1secclrscr();printf(" Hi, guys");getchar();return 0;}wait(等待子进程中断或结束)相关函数waitpid,fork表头文件#include<sys/types.h#include<sys/wait.h定义函数pid_t wait (int * status);函数说明wait()会暂时停止目前进程的执行,直到有信号来到或子进程结束。如果在调用wait()时子进程已经结束,则wait()会立即返回子进程结束状态值。子进程的结束状态值会由参数status 返回,而子进程的进程识别码也会一快返回。如果不在意结束状态值,则参数status可以设成NULL。子进程的结束状态值请参考waitpid()。返回值如果执行成功则返回子进程识别码(PID),如果有错误发生则返回-1。失败原因存于errno中。
2023-06-13 15:15:331

在c语言里#include是什么样的头文件,包含哪些函数?

conio.h不是C标准库中的头文件。conio是ConsoleInput/Output(控制台输入输出)的简写,其中定义了通过控制台进行数据输入和数据输出的函数,主要是一些用户通过按键盘产生的对应操作,比如getch()函数等等。包含的函数cgets(char*);cprintf(constchar*,...);cputs(constchar*);cscanf(constchar*,...);inp(unsignedshort);inpw(unsignedshort);getch(void);getche(void);kbhit(void);outp(unsignedshort,int);outpw(unsignedshort,unsignedshort);putch(int);ungetch(int);void_Cdeclclreol(void);void_Cdeclclrscr(void);void_Cdecldelline(void);int_Cdeclgettext(intleft,inttop,intright,intbottom,void*destin);void_Cdeclgettextinfo(structtext_info*r);void_Cdeclgotoxy(intx,inty);void_Cdeclhighvideo(void);void_Cdeclinsline(void);void_Cdecllowvideo(void);int_Cdeclmovetext(intleft,inttop,intright,intbottom,intdestleft,intdesttop);void_Cdeclnormvideo(void);int_Cdeclputtext(intleft,inttop,intright,intbottom,void*source);void_Cdecltextattr(intnewattr);void_Cdecltextbackground(intnewcolor);void_Cdecltextcolor(intnewcolor);void_Cdecltextmode(intnewmode);int_Cdeclwherex(void);int_Cdeclwherey(void);void_Cdeclwindow(intleft,inttop,intright,intbottom);har*_Cdeclcgets(char*str);int_Cdeclcprintf(constchar*format,...);int_Cdeclcputs(constchar*str);int_Cdeclcscanf(constchar*format,...);int_Cdeclgetch(void);int_Cdeclgetche(void);char*_Cdeclgetpass(constchar*prompt);int_Cdeclkbhit(void);int_Cdeclputch(intc);int_Cdeclungetch(intch);
2023-06-13 15:15:543

c语言中clrscr(); 这个是什么啊?

clear screen = slrscr()
2023-06-13 15:16:185

求助:用C语言制作一个歌曲信息管理系统

用struct做吧
2023-06-13 15:16:373

C语言中,出现"error c2065:‘clrscr’:undeclared identifie

a
2023-06-13 15:16:483

python是否有clrscr之类的可在程序里清屏的函数

import os,然后os.system("……"),那个字符串会当做命令行命令执行。os.system("cls")相当于在命令行里执行"cls",即清屏。我真见过靠cls不断清屏写命令行游戏的
2023-06-13 15:16:581

c++清空屏幕的函数是什么

system("CLS");
2023-06-13 15:17:094

为啥我的clrscr();报错 我加了头文件#include了啊

这是TC的库函数而非ANSI C标准库函数,其他编译器不能使用。换用system("cls")实现,并#include<stdlib.h>。
2023-06-13 15:17:181

clrscr()在c++ 中要包含那个库

32位下(比如VC、gcc)试试,哪里来的clrscr()???clrscr()只是TC的一个函数,不是库里的。system("cls");system函数表示执行一条系统命令,后面的cls即为DOS下的清屏命令。
2023-06-13 15:17:271

C语言中,出现"error c2065:‘clrscr’:undeclared identifie

otoxy()函数是dos下的tc或者bc环境才能运行,不是vc++中的标准函数,你试试这样#include<stdio.h>#include<conio.h>#include<dos.h>#include<stdlib.h>//#include<system.h>main(){//clrscr();//cls();system("cls()");//system("gotoxy()");//gotoxy(35,12);printf("HelloWorld!");return0;}
2023-06-13 15:17:361

clrscr()和gotoxy()在vs 2010中怎么用不了

那是tc中的函数,在标准C中没有。
2023-06-13 15:17:441

在vs2012软件中库函数conio.h中没有定义clrscr()函数怎么办,也没有库函数mem.h等怎么回事?

你说的这个函数和头文件是tc在dos上支持的,在Windows上已经不支持了,找本新一点的书?
2023-06-13 15:17:522

C语言中clrscr()是什么意思?

由来:clearscreen的缩写,意思:清屏,讲土一点,形象点,屏幕就是块黑板,clsscr()就是块黑板擦。用途:利用C语言编写多页面展示效果时,这个语句比较常用,往往用来把之前一个页面的屏幕清理干净,以便下一页面显示的清晰性。
2023-06-13 15:18:451

c语言中 //clrscr(); 什么意思?

用来清屏,vc 6.0里面没有
2023-06-13 15:18:542

clrscr()这个函数的头文件是什么?

功能:清除文本模式窗口用法:voidclrscr(void)清屏相当于dos命令cls函数名:clrscr功能:清除文本模式窗口清屏的意思就是把之前显示出的文字字符去掉跟cmd里面的清屏的功能是一样的实际上是clearscreen的简写
2023-06-13 15:19:042

clrscr是TC特有的,其它的C语言环境没有这个函数,也就没有头文件包含这个函数。建议使用system("cls");来取代clrscr();比较通用,兼容性好一点。system()函数在#include<stdlib.h>里面。
2023-06-13 15:19:121

C语言中的清屏有什么作用那

清空之前输出的结果。
2023-06-13 15:19:234

C语言编程,请问这个程序中clrscr();为什么有问题

你用哪种编译器,这个clrscr(),是用tc编译的
2023-06-13 15:19:545

c语言中清屏函数怎么用?

C语言中清屏函数是为清除屏幕上的输出功能,用法是:void clrscr(void);程序例:#include <conio.h>int main (){int i;clrscr();for (i = 0; i < 20; i++);cprintf("%d ", i);cprintf(" Press any key to clear screen");getch();clrscr();cprintf("The screen has been cleared!");getch();return 0;}相似的clrscr清屏函数:clrscr并不是C语言的标准库函数,而是TC平台特有的函数,在其它编译器中无法使用。1、函数声明:void clrscr(void);2、头文件:#include <conio.h>3、程序示例:4、在当前主流编译器中,不支持该函数,可以用system("cls");//windows平台或system("clear");//unix/Linux平台实现相同效果。
2023-06-13 15:20:101

c语言清屏函数有哪些?

C语言中清屏函数是为清除屏幕上的输出功能,用法是:void clrscr(void);程序例:#include <conio.h>int main (){int i;clrscr();for (i = 0; i < 20; i++);cprintf("%d ", i);cprintf(" Press any key to clear screen");getch();clrscr();cprintf("The screen has been cleared!");getch();return 0;}相似的clrscr清屏函数:clrscr并不是C语言的标准库函数,而是TC平台特有的函数,在其它编译器中无法使用。1、函数声明:void clrscr(void);2、头文件:#include <conio.h>3、程序示例:4、在当前主流编译器中,不支持该函数,可以用system("cls");//windows平台或system("clear");//unix/Linux平台实现相同效果。
2023-06-13 15:20:241

c语言中clrscr是什么?

清屏,不过用这个函数不好,因为它只在TC下有用,在其它编译器下没有这个函数。清屏最好用以下函数:system("cls");//DOS下system("clear");//Unix下。
2023-06-13 15:21:002

c语言中的清屏函数是什么?

C语言中清屏函数是为清除屏幕上的输出功能,用法是:void clrscr(void);程序例:#include <conio.h>int main (){int i;clrscr();for (i = 0; i < 20; i++);cprintf("%d ", i);cprintf(" Press any key to clear screen");getch();clrscr();cprintf("The screen has been cleared!");getch();return 0;}相似的clrscr清屏函数:clrscr并不是C语言的标准库函数,而是TC平台特有的函数,在其它编译器中无法使用。1、函数声明:void clrscr(void);2、头文件:#include <conio.h>3、程序示例:4、在当前主流编译器中,不支持该函数,可以用system("cls");//windows平台或system("clear");//unix/Linux平台实现相同效果。
2023-06-13 15:21:161

c语言清屏函数是什么?

C语言中清屏函数是为清除屏幕上的输出功能,用法是:void clrscr(void);程序例:#include <conio.h>int main (){int i;clrscr();for (i = 0; i < 20; i++);cprintf("%d ", i);cprintf(" Press any key to clear screen");getch();clrscr();cprintf("The screen has been cleared!");getch();return 0;}相似的clrscr清屏函数:clrscr并不是C语言的标准库函数,而是TC平台特有的函数,在其它编译器中无法使用。1、函数声明:void clrscr(void);2、头文件:#include <conio.h>3、程序示例:4、在当前主流编译器中,不支持该函数,可以用system("cls");//windows平台或system("clear");//unix/Linux平台实现相同效果。
2023-06-13 15:21:321

你好 请问C语言程序设计中出现unresolved external symbol _clrscr怎么改正

clrscr是TC特有的,其它的C语言环境没有这个函数,也就没有头文件包含这个函数。建议使用system("cls");来取代clrscr();比较通用,兼容性好一点。system()函数在#include<stdlib.h>里面
2023-06-13 15:21:481

为什么C语言里的清屏命令clrscr()只能清除一部分?

你44 system("cls");其实准确的说clrscr 在 c++ 中是不存在的而system("cls");就有
2023-06-13 15:22:051