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;
}
}
}