c语言学生成绩分隔线怎么弄
❶ 为什么在这个C语言程序里,“传说中的分割线”会出现两次
因为你调用了两次函数,当然会打印两次了。
❷ c语言 设计一个函数用于数50个 - 作为分割线,,怎么弄 谢谢啦!
char i;
for(i=0;i<50;i++) printf("%c",'-');
printf("\n");
❸ C语言 顺序线性表 实现学生成绩管理系统
/***************************头文件*********************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/***************************常量***********************************/
#define MENU_NUM 10
#define N 3
/****************************结构体********************************/
typedef struct s1
{
char no[10] ; //学号由10个字符组成
char name[15] ; //学生姓名
float score[N] ; //各门课成绩
float sum ; //总分
float average ; //平均分
struct s1 *next ; //指向后继结点的指针
}STUDENT; //定义结构体类型
/********************************全局变量*************************/
struct s1 * head=NULL; //链表头结点
/********************************函数声明*************************/
void InputData( STUDENT * ptr ); //录入信息
void PrintMenu( ); //显示菜单
int MenuSelect( ); //选择菜单项
void Init( ); //初始化
void create( ); //创建链表
void print( ) ; //打印链表数据
void Delete( ); //删除指定学号的记录数据
void append(); //追加一个数据到链表尾部
void computer(); //计算链表中所有人的总分和平均分
/***********************************主函数********************************/
void main()
{
int key;
while(1) {
key=MenuSelect();
switch(key)
{
case 1:
Init(); //初试化链表。也就是若链表不为空则释放链表中所有数据,将head置为空(NULL)
break;
case 2:
create(); //创建链表,输入数据
break;
case 3:
Delete(); //删除一个指定学号的记录数据
break;
case 4:
print(); //打印链表中所有数据
break;
case 5:
computer(); //计算链表中所有人的总分和平均分
break;
case 6:
append(); //追加一个数据到链表的尾部
break;
case 7:
Init(); //释放链表
exit(0);
}
}
}
/*****************************************************************
*函数名:PrintMenu
*
*描 述:显示操作菜单*
*
*入口参数:无
*
*出口参数:无
******************************************************************/
void PrintMenu( )
{
int i;
char * menu[]={
"-----------------------------------------------",
"| 基于指针和链表的学生成绩管理系统 |",
"| 1. 初始化链表 |",
"| 2. 创建链表 |",
"| 3. 删除指定学号的记录 |",
"| 4. 打印学生成绩信息 |",
"| 5. 计算学生的总分和平均分 |",
"| 6. 插入一条学生记录 |",
"| 7. 退出 |",
"-----------------------------------------------",
};
printf("\n\n");
for (i=0;i<MENU_NUM;i++)
printf("%s\n",menu[i]);
printf("\n输入要进行的操作(1-7):");
}
/*****************************************************************
*函数名:MenuSelect
*
*描 述:选择菜单选项,返回选择的选项
*
*入口参数:无
*
*出口参数:整型数据
******************************************************************/
int MenuSelect( )
{
int key;
PrintMenu( );
scanf("%d",&key);
return key;
}
/*****************************************************************
*函数名:Init
*
*描 述:初始化单链表。也就是释放链表中的所有数据
*
*入口参数:无
*
*出口参数:无
******************************************************************/
void Init( )
{
STUDENT *p,*ptr; //定义两个临时指针变量p,ptr
p=head;
ptr=head; //将两个临时变量指向头指针head ;
while(ptr!=NULL)
{
ptr=ptr->next; //ptr指向下一个结构数据
free(p); //释放p所指向的结构数据的内存
p=ptr; //将p指向ptr所指向的数据
}
head=NULL; //将head指向NULL
}
/*****************************************************************
*函数名:create
*
*描 述:创建单链表
*
*入口参数:无
*
*出口参数:无
******************************************************************/
void create( )
{
STUDENT *pt, *pth=NULL; //定义两个指针变量:pt指向即将申请新的数据内存,pth指向当前数据
while(1)
{
pt=(STUDENT *)malloc(sizeof(STUDENT)); //让pt指向新申请的内存空间
InputData(pt); //输入数据,存放到pt所指向的结构数据。注意让pt的next指向NULL
if (strcmp(pt->no,"@")==0)
{
free(pt); //释放pt所指向的内存空间
break; //退出循环
}
else if (head==NULL)
{
pth=pt;
head=pt; //将头指针head和pth指向pt
}
else
{
pth->next=pt; //将pth的next指向pt;
pth=pt; //将pth指向pt;
}
}
}
/*****************************************************************
*函数名:print
*
*描 述:打印单链表中所有数据
*
*入口参数:无
*
*出口参数:无
******************************************************************/
void print( )
{
int i=0;
STUDENT *p; //第一个指针p
p=head; //将p指向head
printf("\n");
printf("******************************STUDENT******************************\n");
printf("|rec| 学号 | 姓名 | 成绩1| 成绩2| 成绩3|总成绩| 平均成绩|\n");
printf("|---|----------|------------|------|------|------|------|---------|\n");
//打印表头
while (p!=NULL)
{
printf("|%3d|%10s|%-12s|%6.1f|%6.1f|%6.1f|%6.2f|%9.1f|\n",
++i,p->no,p->name,p->score[0],p->score[1],p->score[2],
p->sum,p->average); //打印p所指向的结构中的所有数据。注意打印数据间的分隔线
p=p->next; //将p指向p的下一个结构数据
}
printf("********************************END********************************\n");
//打印表尾
}
/*****************************************************************
*函数名:Delete
*
*描 述:删除指定学号的记录
*
*入口参数:无
*
*出口参数:无
******************************************************************/
void Delete( )
{
STUDENT *p,*pth; //定义两个指针p,pth
char no[11]; //定义一个整数no(用来存储输入的学号)
printf("输入要删除学生的学号:");
scanf("%s",no); //用输入语句输入一个学号存储到no中
p=head;pth=head; //将p和pth都指向头指针
if (strcmp(p->no,no)==0) //也就是若头指针指向的数据需要删除
{
head=head->next; //将head指针指向head的下一个数据;
free(p); //释放p所指向的数据
}
else
{
p=p->next; //将p指向p的下一个数据
while ( p!=NULL)
{
if (strcmp(p->no,no)==0) //找到了要删除的数据
{
pth->next=p->next; //将pth的next指向p的next
free(p); //释放p
break; //退出循环
}
else
{
pth=pth->next; //将pth指向pth的next 或 将pth指向p
p=p->next; //将p指向p的next
}
}
}
}
/*****************************************************************
*函数名:append
*
*描 述:增加学生记录
*
*入口参数:无
*
*出口参数:无
******************************************************************/
void append()
{
STUDENT *p,*pth; //定义两个指针变量p,pth
pth=head; //将pth指向head
while ( pth->next!=NULL)
{
pth=pth->next; //ptr指向ptr的next
}
p=(STUDENT *)malloc(sizeof(STUDENT)); //将p指向新申请的内存空间
InputData(p);
p->next=NULL; //数据数据存储到p所指向的内存空间,注意将p的next置为NULL
pth->next=p; //将ptr的next指向p
}
/*****************************************************************
*函数名:InputData
*
*描 述:输入学生信息
*
*入口参数:指针
*
*出口参数:无
******************************************************************/
void InputData( STUDENT *ptr )
{
int i;
printf("输入学号:");
scanf("%s",ptr->no);
if (strcmp(ptr->no,"@")==0 )
return;
printf("输入姓名:");
scanf("%s",ptr->name);
for(i=0;i<3;i++)
{
printf("输入成绩:");
scanf("%f",&ptr->score[i]);
}
ptr->sum=0;
ptr->average=0;
ptr->next=NULL; //不要忘记这一步
}
/*****************************************************************
*函数名:computer
*
*描 述:计算学生总成绩和平均成绩
*
*入口参数:无
*
*出口参数:无
******************************************************************/
void computer()
{
STUDENT *p;
p=head;
for(;p;p=p->next)
{
p->sum=p->score[0]+p->score[1]+p->score[2];
p->average=(p->score[0]+p->score[1]+p->score[2])/3;
}
}
❹ C语言怎么改变线条的粗细
void far _Cdecl setlinestyle(int linestyle, unsigned upattern,
int thickness);graphics头文来件里的。
setlinestyle(1,1,粗细);就可以了自
setlinestyle(0,1,3);
line(0,0,100,100);你再看下应该是三个像素的,tc的线只支持这两种粗细。再粗的线就不是线了是笔刷,可是tc没有啊,用bar()吧
❺ 如何用C语言求直线分割圆的两部分面积
编程如下:
#include <stdio.h>
#include <math.h>
#define PI 3.14
void main()
{ float r;
double c;
double s;
printf("请输入半径的值:");
scanf("%f",&r);
s=PI*r*r;
printf("这个圆的面回积是答:%f ",s);
❻ c语言输入并记录5名学生的3门成绩程序,stu下标红线“表达式必须是指向完整类型的指针”是怎么回事
void print(struct student stu[5])
中间的student打错。
❼ 关于用C语言来做直线段裁剪的问题
15分啊!?
我这来里有当时上图形源学课程设计的十个实验。不知道还找不找的到。让我回去找找看!
我的程序都是上学时候做的,全部都在TC下调通的。不过需要显示器的驱动文件。
-------------------------------------补充
你把邮箱留给我吧,我现在单位,晚上回去,我找一下,应该都在我电脑里的。找到了,我把线段裁剪的源代给你。
❽ 怎样用C语言绘制直线
c语言的用MoveTo()和LineTo():
http://..com/question/90934981.html
能够画出任意斜率的直线算专法程序属
http://..com/question/55124204.html?fr=qrl&cid=866&index=3
❾ c语言:这题怎么做主要说一下分割线怎么弄
希望采纳!!!
#include<stdio.h>
#include<math.h>
int main()
{
int n,i,j,sum,count,sum1,ave;
int a[50];
while(scanf("%d",&n)!内=EOF)
{
sum=0;count=1;sum1=0;
容for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
sum+=a[i];
}
ave=sum/n;
if(sum%n!=0)
{
printf("Case #%d ",count++);
printf("No solution ");
}
else
{
for(i=0;i<n;i++)
{
sum1+=abs(a[i]-ave);
}
printf("Case #%d ",count++);
printf("The minimum number of moves is %d ",sum1/2);
}
printf("<---华丽的分割线---> ");
}
return 0;
}
❿ c语言编程 急 高分!再线等
#include <conio.h>
#include <stdio.h>
void fun(int (*p)[5]);
int main()
{
int i, j;
int a[5][5] = {{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25}};
int (*p)[5];
for (i = 0; i < 5; i++)
{
p = &a[i];
for (j = 0; j < 5; j++)
printf("%d ", *(*p + j));
printf("\n");
}
p = a;
fun(p);
printf("\n");
for (i = 0; i < 5; i++)
{
p = &a[i];
for (j = 0; j < 5; j++)
printf("%d ", *(*p + j));
printf("\n");
}
}
void fun(int (*p)[5])
{
int i, j, temp;
for (i = 0; i < 5; i++)
{
for (j = 0; j < i; j++)
{
temp = *(*(p + i) + j);
*(*(p + i) + j) = *(*(p + j) + i);
*(*(p + j) + i) = temp;
}
}
}