『壹』 完成一個小學數學練習程序(C語言編程)
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#define MENU_NUM 7
#define N 3
typedef struct s1
{
char no[11]; /*學號由10個字元組成*/
char name[15]; /*學生姓名*/
float score[N]; /*各門課成績*/
float sum; /*總分*/
float average; /*平均分*/
int order; /*名次*/
struct s1 *next; /*指向後繼結點的指針*/
}STUDENT; /*定義結構體類型*/
STUDENT * head=NULL;
void InputData( STUDENT * ptr );
void PrintMenu( );
int Menu_Select( );
void Init( );
void create( );
void print( ) ;
void Delete( );
void append();
void computer();
main()
{
int key;
while(1) {
key=Menu_Select();
switch(key)
{
case 0: Init();
//初試化鏈表。也就是若鏈表不為空則釋放鏈表中所有數據,將head置為空(NULL)
break;
case 1: create();
//創建鏈表,輸入數據
break;
case 2: Delete();
//刪除一個指定學號的記錄數據
break;
case 3: print();
//列印鏈表中所有數據
break;
case 4: computer();
//計算鏈表中所有人的總分和平均分
break;
case 5: append();
//追加一個數據到鏈表的尾部
break;
case 6: Init();
//釋放鏈表
exit(0);
}
};
}
void PrintMenu( )
{
int i;
char * menu[]={
"0. Init list",
"1. Enter list",
"2. Delete a record from list",
"3. Print list",
"4. Compute the score",
"5. Insert record to list",
"6. Quit"
};
printf("\n\n");
for (i=0;i<MENU_NUM;i++)
printf("%s\n",menu[i]);
printf("\nEnter your choice(0-6):");
}
int Menu_Select( )
{
int key;
PrintMenu( );
scanf("%d",&key);
return key;
}
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
}
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;
}
};
}
void print( ) //列印單鏈表中所有數據
{ int i=0;
STUDENT *p;//第一個指針p
p=head;//將p指向head
printf("\n");
printf("******************************STUDENT******************************\n");
printf("|rec|no | name | sc1| sc2| sc3| sum | ave |order|\n");
printf("|---|----------|----------------|----|----|----|------|-----|-----|\n");
//列印表頭
while (p!=NULL)
{
printf("|%3d|%10s|%-16s|%4.1f|%4.1f|%4.1f|%6.2f|%5.1f|%5d|\n",
++i,p->no,p->name,p->score[0],p->score[1],p->score[2],
p->sum,p->average,p->order); //列印p所指向的結構中的所有數據。注意列印數據間的分隔線
p=p->next;//將p指向p的下一個結構數據
}
printf("********************************END********************************\n");//列印表尾
}
void Delete( ) //刪除一個記錄
{
STUDENT *p,*pth;//定義兩個指針p,pth
char no[11];//定義一個整數no(用來存儲輸入的學號)
printf("intput delete no\n");
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
}
}
}
}
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
}
void InputData( STUDENT *ptr )
{ int i;
printf("enter no:");
scanf("%s",ptr->no);
if (strcmp(ptr->no,"@")==0 ) return;
printf("enter name:");
scanf("%s",ptr->name);
for(i=0;i<3;i++)
{
printf("shuru chengji\n");
scanf("%f",&ptr->score[i]);
}
ptr->sum=0;
ptr->average=0;
ptr->order=0;
ptr->next=NULL;
}
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#編程隨機生成加減乘除的數學題目,寫出答案並一分鍾倒計時,結束顯示答題多少,答對率多少 代碼怎麼寫
窗體程序,加一個Timer,5個label和一個textbox,1個button
Timer的事件屬性設成1000
Form_Load事件
LabelTime.Text = "60";
Timer.Start();
newWork();
-------------------
int correct = 0;
int count = 0;
void newWork(){
Random rd = new Random();
Label1.Text = rd.Next(1,100);
Label3.Text = rd.Next(1,100);
string[] fuhao = new string[]{"+","-","*","/"};
Label2.Text = fuhao[rd.Next(1,5)];
}
int getresult()
{
float result = 0;
int a = int.Parse(Label1.Text);
int b = int.Parse(Label2.Text);
switch(Label2.Text)
{
case "+":
result = a+b;
break;
case "-":
result = a-b;
break;
case "*":
result = a*b;
break;
case "/":
result = a/b
break;
}
}
-----------------------
button_Click事件
count++;
int result = int.Parse(textBox1.Text);
if(result == getresult())
{
correct ++;
}
newWork();
Timer_Tick事件
int second = int.Parse(LabelTime.Text);
if(second != 0)
{
second--;
}
else
{
textBox1.Text.Enable = false;
MessageBox.Show("共答"+count.ToString()+"題,答對"+correct.ToString()+"題,正確率"+(correct/count).ToString()+"");
Timer.Stop();
}