導航:首頁 > 編程語言 > c大型編程練習

c大型編程練習

發布時間:2022-09-27 12:44:01

『壹』 c語言 5道練習題 求大神編程QWQ 調試可運行

#include typedef struct stu{ char num[10]; char name[20]; float score[2]; float sum;}STU;int main(){ STU stus[3]; int i,max=0; printf("輸入3名學生的信息:\n"); for(i=0;i stus[max].sum) max = i; } for(i=0;i<3;i++) { printf("\n第%d名學生兩門課平均成績:%.2f\n", i+1, stus[i].sum / 2); } printf("\n最高分學生的信息:\n"); printf("學號:%s\n", stus[max].num); printf("姓名:%s\n", stus[max].name); printf("第1門課成績:%.2f\n", stus[max].score[0]); printf("第2門課成績:%.2f\n", stus[max].score[1]); printf("平均成績:%.2f\n", stus[max].sum/2); return 0;}

『貳』 C語言編程練習

#include<stdio.h>

structStudent
{
intID;
floatgrade;
};

intmain()
{
Studentstu[50];
intID,i=0,j;
boolESC=false;

while(!ESC)
{
printf("1.AddStudentInformation ");
printf("2.DisplayStudentInformation ");
printf("3.DeleteStudentInformation ");
printf("0.Exit ");
printf("Pleaseinputmenuitem:");
fflush(stdin);

switch(getchar())
{
case'1':
printf("AddStudentInformation ");
printf("PleaseinputstudentID:");
scanf("%d",&stu[i].ID);
printf("Pleaseinputgrade:");
scanf("%f",&stu[i].grade);
++i;
printf("Succeed! ");
break;
case'2':
printf("StudentID Grade ");
for(j=0;j<i;++j)
if(stu[j].ID!=0)
printf("%d %.1f ",stu[j].ID,stu[j].grade);
break;
case'3':
printf("PleaseinputstudentID:");
scanf("%d",&ID);
for(j=0;j<i;++j)
if(stu[j].ID==ID)
stu[j].ID=0;
printf("Succeed! ");
break;
case'0':
ESC=true;
}
}

return0;
}

『叄』 c語言編程練習題

第一個是輸入半徑,輸出圓的直徑、周長、面積
const double p = 3.14159;
void main()
{
double radius = 0;
printf("Radius of Circle:");
scanf("%lf", &radius);

printf("Diameter:%lf, Circumference:%lf, Area:%f ", 2*radius, 2*p*radius, p*radius*radius);
}

第二個是根據給定的余額和利息,計算一年以後的余額
void main()
{
double initBalance = 6000;
double interestRate = 0.0425;
printf("Interestcalculation program.\nStarting balance:%.lf Annual\ninterest rate percentage:%.4lf\n", initBalance,interestRate);
printf("One year balance:%.lf", initBalance*(1+interestRate));
}

『肆』 c語言編程練習題1

#include
"stdio.h"
main()
{
double
a=0,b;
int
i;
for(i=1;;i++)
{
printf("Enter
a
number:");
scanf("%lf",&b);
if(b>a)
a=b;
if(b<=0)
break;
}
if(a>=0)
printf("%lf\n",a);
}

經驗證,float數據不夠精確,如輸入100.62,輸出的卻是如100.620003。所以用了更精確的double數據。希望能幫到你。

『伍』 C語言編程練習

#includeint main(){ double s; int a[10000]; int i,n,d; while(~scanf("%d",&n)) { d=0; s=0; for(i=0; i=60) d++; printf("average = %.1lf\ncount = %d\n",s,d); } return 0;}

『陸』 大二C語言編程題

下面代碼大部分與你那個相似,僅作參考!

/*為了調用FILE等函數 */
#include "stdio.h"

#include "conio.h"

/* 為了調用atof()等函數 */
#include "stdlib.h"

#define TRUE 1

/* 結構體聲明 */
struct gong
{
int month;
float id;
float jbgz;
float jt;
float gt;
float bt;
float ft;
float jtbt;
float yfs;
float fz;
float cx;
float hf;
float grsds;
float yks;
float sfs;

};

/* 建立50個元素的結構體數組 */
struct gong zg[50];

/* 建立結構體變數 */
struct gong zgone;

/* 職員列表中的數量 */
int n=0;

/* 獲得字元串 */
char numstr[50];

main()
{

char ch;
n=0;

/*rfile(); 使用後啟動程序時系統會自動載入紀錄*/

while(TRUE)
{

printf("\n");
printf("===========================================\n");
printf("Welcome!Please choice(1-6) : +\n");
printf("1.Add one infomation +\n");
printf("2.Delete one infomation +\n");
printf("3.Modify one infomation +\n");
printf("4.Print out by id +\n");
printf("5.Print out all +\n");
printf("6.Save date +\n");
printf("7.Load date +\n");
printf("8.Exit +\n");
printf("===========================================\n");
ch=getche();

switch(ch)
{
case '1':addone();break;
case '2':delone();break;
case '3':modone();break;
case '4':idone();break;
case '5':listall();break;
case '6':wfile();break;
case '7':rfile();break;
case '8':return;
default:printf("Sorry,please choice again!\n");

}

}

}

/*計算個人所得稅*/
float tgrsds(float m)
{
float sui1,sui2,sui3;
float tmp;
sui1=0;sui2=0;sui3=0;

if(m>=5000)
{
sui1=(m-5000)*0.2;
sui2=(5000-1000)*0.1;
sui3=(1000-800)*0.05;
}
else if(m>=1000 && m<5000)
{
sui2=(m-1000)*0.1;
sui3=(1000-800)*0.05;
}
else if(m>=800 && m<1000)
{
sui3=(m-800)*0.05;
}

tmp=sui1+sui2+sui3;

return(tmp);

}

/* 添加職工的工資信息 */
addone(void)
{

printf("\n");

printf("Record NO. %d \n",n+1);

printf("Please put in month: \n");
gets(numstr);
zg[n].month=atoi(numstr);

printf("Please put in gongbianhao: \n");
gets(numstr);
zg[n].id=atof(numstr);

printf("Please put in jibengongzi: \n");
gets(numstr);
zg[n].jbgz=atof(numstr);

printf("Please put in jintie: \n");
gets(numstr);
zg[n].jt=atof(numstr);

printf("Please put in gangtie: \n");
gets(numstr);
zg[n].gt=atof(numstr);

printf("Please put in butie: \n");
gets(numstr);
zg[n].bt=atof(numstr);

printf("Please put in fangtie: \n");
gets(numstr);
zg[n].ft=atof(numstr);

printf("Please put in jiaotongbutie: \n");
gets(numstr);
zg[n].jtbt=atof(numstr);

zg[n].yfs=(zg[n].jbgz)+(zg[n].jt)+(zg[n].gt)+(zg[n].bt)+(zg[n].ft)+(zg[n].jtbt);

printf("Please put in fangzu: \n");
gets(numstr);
zg[n].fz=atof(numstr);

printf("Please put in chuxu: \n");
gets(numstr);
zg[n].cx=atof(numstr);

printf("Please put in huifei: \n");
gets(numstr);
zg[n].hf=atof(numstr);

zg[n].grsds=tgrsds(zg[n].yfs);

zg[n].yks=(zg[n].fz)+(zg[n].cx)+(zg[n].hf)+(zg[n].grsds);

zg[n].sfs=(zg[n].yfs)-(zg[n].yks);

n++;

}

/*刪除個人紀錄*/
delone(void)
{
struct gong tmp[50];
float gongid;
int j,k;
int flagfind;
flagfind=0;
k=0;

printf("\n Please put in gongbianhao: \n");
gets(numstr);
gongid=atof(numstr);
for(j=0;j<=n;j++)
{
if(zg[j].id==gongid)
{
flagfind=1;
}
else
{

tmp[k]=zg[j];
k++;
}
}

if(flagfind==1)
{
for(j=0;j<=(n-1);j++)
{
zg[j]=tmp[j];
}
printf("\n Record deleted! \n");
n=n-1;
}
else
{
printf("\n Record not found! \n");
}

return;
}

/*修改個人紀錄*/
modone(void)
{
float gongid;
int j;
int flagfind;
flagfind=0;

printf("\n Please put in gongbianhao: \n");
gets(numstr);
gongid=atof(numstr);

for(j=0;j<=n;j++)
{
if(zg[j].id==gongid)
{
printf("NO.:%d\n",j);
printf("month:%d\n",zg[j].month);
printf("gongbianhao%10.0f\n",zg[j].id);
printf("jibengongzi:%10.2f\n",zg[j].jbgz);

printf("Please put in jibengongzi: \n");
gets(numstr);
zg[j].jbgz=atof(numstr);

printf("jintie:%10.2f\n",zg[j].jt);

printf("Please put in jintie: \n");
gets(numstr);
zg[j].jt=atof(numstr);

printf("gangtie:%10.2f\n",zg[j].gt);

printf("Please put in gangtie: \n");
gets(numstr);
zg[j].gt=atof(numstr);

printf("butie:%10.2f\n",zg[j].bt);

printf("Please put in butie: \n");
gets(numstr);
zg[j].bt=atof(numstr);

printf("fangtie:%10.2f\n",zg[j].ft);

printf("Please put in fangtie: \n");
gets(numstr);
zg[j].ft=atof(numstr);

printf("jiaotongbutie:%10.2f\n",zg[j].jtbt);

printf("Please put in jiaotongbutie: \n");
gets(numstr);
zg[j].jtbt=atof(numstr);

zg[j].yfs=(zg[j].jbgz)+(zg[j].jt)+(zg[j].gt)+(zg[j].bt)+(zg[j].ft)+(zg[j].jtbt);

printf("fangzu:%10.2f\n",zg[j].fz);

printf("Please put in fangzu: \n");
gets(numstr);
zg[j].fz=atof(numstr);

printf("chuxu:%10.2f\n",zg[j].cx);

printf("Please put in chuxu: \n");
gets(numstr);
zg[j].cx=atof(numstr);

printf("huifei:%10.2f\n",zg[j].hf);

printf("Please put in huifei: \n");
gets(numstr);
zg[j].hf=atof(numstr);

zg[j].grsds=tgrsds(zg[j].yfs);

zg[j].yks=(zg[j].fz)+(zg[j].cx)+(zg[j].hf)+(zg[j].grsds);

zg[j].sfs=(zg[j].yfs)-(zg[j].yks);

flagfind=1;
}
else
{
flagfind=0;

}
}

if(flagfind==0)printf("\n Can not find record! \n");

return;
}

/*隨機從內存中查找紀錄根據id*/
idone(void)
{
float gongid;
int j;
int flagfind;
flagfind=0;

printf("\n Please put in gongbianhao: \n");
gets(numstr);
gongid=atof(numstr);

for(j=0;j<=n;j++)
{
if(zg[j].id==gongid)
{
printf("\n %d record found! \n |",j+1);
printf("month:%d |",zg[j].month);
printf("gongbianhao%10.0f |",zg[j].id);
printf("jibengongzi:%10.2f |",zg[j].jbgz);
printf("jintie:%10.2f |",zg[j].jt);
printf("gangtie:%10.2f |",zg[j].gt);
printf("butie:%10.2f |",zg[j].bt);
printf("fangtie:%10.2f |",zg[j].ft);
printf("jiaotongbutie:%10.2f |",zg[j].jtbt);
printf("yingfashu:%10.2f |",zg[j].yfs);
printf("fangzu:%10.2f |",zg[j].fz);
printf("chuxu:%10.2f |",zg[j].cx);
printf("huifei:%10.2f |",zg[j].hf);
printf("gerensuodeshui:%10.2f |",zg[j].grsds);
printf("yingkoushu:%10.2f |",zg[j].yks);
printf("shifashu:%10.2f\n",zg[j].sfs);

flagfind=1;
}
else
{
flagfind=0;

}
}

if(flagfind==0)printf("\n Can not find record! \n");

return;
}

/* 輸出當月全體職工的工資信息 */
listall(void)
{
int j;
if(n<1)

{
printf("\n No record! \n");
}
else
{
for(j=0;j<n;j++)
{
printf("\n NO:%d |",j+1);
printf("month:%d |",zg[j].month);
printf("gongbianhao%10.0f |",zg[j].id);
printf("jibengongzi:%10.2f |",zg[j].jbgz);
printf("jintie:%10.2f |",zg[j].jt);
printf("gangtie:%10.2f |",zg[j].gt);
printf("butie:%10.2f |",zg[j].bt);
printf("fangtie:%10.2f |",zg[j].ft);
printf("jiaotongbutie:%10.2f |",zg[j].jtbt);
printf("yingfashu:%10.2f |",zg[j].yfs);
printf("fangzu:%10.2f |",zg[j].fz);
printf("chuxu:%10.2f |",zg[j].cx);
printf("huifei:%10.2f |",zg[j].hf);
printf("gerensuodeshui:%10.2f |",zg[j].grsds);
printf("yingkoushu:%10.2f |",zg[j].yks);
printf("shifashu:%10.2f\n",zg[j].sfs);
}
}

}

/* 把所有紀錄從內存中寫到磁碟gongzi.rec中 */
wfile(void)
{
FILE *fptr;

printf("\n Saving date... \n");

if(n<1)
{
printf("\n No record! \n");
return;
}
if((fptr=fopen("gongzi.rec","wb"))==NULL)
printf("Can not open file gongzi.rec! \n");
else
{
fwrite(zg,sizeof(zg[0]),n,fptr);
fclose(fptr);
printf("File of %d records written! \n",n );
}

}

/* 把所有紀錄從磁碟gongzi.rec讀到數組gz中 */
rfile(void)
{
FILE *fptr;

n=0;

printf("\n Loading date... \n");

if((fptr=fopen("gongzi.rec","rb"))==NULL)
printf("Can not open file gongzi.rec! \n");
else
{
while(fread(&zg[n],sizeof(zg[n]),1,fptr)==1)
n++;
fclose(fptr);
printf(" Total %d records read! \n",n);
}

}

『柒』 c語言編程:練習題。

#include<iostream.h>
int main()
{
int i,j,t;
int a[10],b[10];

cout<<"請輸入第一個數組:"<<endl;
for(i=0;i<10;i++)
cin>>a[i];
for(i=1;i<10;i++)
for(j=0;j<9;j++)
if(a[i]<a[j])
{t=a[i];a[i]=a[j];a[j]=t;}
cout<<"排序後的第一個數組為:"<<endl;
for (i=0;i<10;i++)
cout<<a[i]<<" ";
cout<<endl;

cout<<"請輸入第二個數組:"<<endl;
for(j=0;j<10;j++)
cin>>b[j];
for(i=1;i<10;i++)
for(j=0;j<9;j++)
if(b[i]<b[j])
{t=b[i];b[i]=b[j];b[j]=t;}
cout<<"排序後的第二個數組為:"<<endl;
for (i=0;i<10;i++)
cout<<b[i]<<" ";
cout<<endl;

for(i=0;i<10;i++)
a[i]=a[i]+b[i];
cout<<"兩數組的和為:"<<endl;
for (i=0;i<10;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}

『捌』 大一C語言編程題

車票根據題意兩兩站點連線生成,金額和數量分別用隨機數。

數據存儲:站點,車票,用戶分別為3個結構體,用於對應資料庫。

購買流程:檢查輸入數值有效性->檢查車票庫存->購買成功同步修改用戶購買流水及車票庫存。(這里題目需求不明確,沒有指明用戶購買方式),我的代碼允許一個用戶同時購買多種票,每種票可分批購買多張。購買流水記錄自動增加和更新。

退票流程:檢查輸入和用戶購買記錄,同步更新用戶及車票信息。

刪除流程:選擇刪除沒有被用戶購買的票(函數檢查所有用戶,雖然本題只要一個用戶,實際傳參用戶數組首地址)。

PS: 這個題目涉及到增刪改,用鏈表來寫更好,但考慮你學習范圍,沒有使用鏈表而是動態數組,動態數組刪除,考慮內存佔用,不僅要需循環移位還要釋放多餘地址。

另外整體程序,異常的處理我只是單純返回0或者1或者-1區分基本的成功與失敗。你如想對個別異常進行特殊處理,自行修改返回值,接收判斷。

下面是代碼:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <time.h>

#include <windows.h>

#include <conio.h>

#define MS 5//最大站點數

typedef struct station

{

char sid[10];

char sName[20];

}STN;

typedef struct ticket

{

int tid;//票編號

STN *ssP;//起始站

STN *tsP;//終點站

int value;//票價

int number;//數量

}TKT;

typedef struct userInfo//用戶

{

char uid[20];//身份證號

int cnt;//購買的票種類數量

int *btids;//購買的所有票id數組

int *btNum;//購買的所有票數量數組

}UIFO;

int init(STN stns[MS],TKT **tkts);//初始化車站、票數據

int disAllTickets(TKT *tkts);

int buyTicket(UIFO *uifo,TKT *tkts);//異常返回0

int reTicket(UIFO *uifo,TKT *tkts);//異常返回0

int showMenu(UIFO *uifo,TKT *tkts);

int delIntByIndex(int *nums,int len,int index);//通過下標index刪除動態整型數組nums對應元素,並釋放多餘地址,返回刪除後的數組長度,異常返回-1

int delTkts(UIFO *uifos,int len,TKT *tkts);//刪除指定票(檢查用戶組,只要有一個用戶購買,無法刪除)

int cnt;//票種類數量

int main()

{


STN stns[MS];

TKT *tkts=NULL;

UIFO uifo={"321002199902050614",0,NULL,NULL};

srand(time(NULL));

cnt=init(stns,&tkts);

printf("共生成%d組票(每組往返兩種票,共%d種票) ",cnt/2,cnt);

printf("按任意鍵繼續。。。。 "),getch();

system("cls");

showMenu(&uifo,tkts);

return 0;

}

int showMenu(UIFO *uifo,TKT *tkts)

{

int n=5;

printf("(1) Buy ticket ");

printf("(2) Refund ticket ");

printf("(3) Remove ticket ");

printf("(4) Display all tickets ");

printf("(0) Exit ");

while(n<0 || n>4)

scanf("%d",&n);

switch(n)

{

case 0: return 0;

case 1: if(!buyTicket(uifo,tkts)) return 0;break;

case 2: if(!reTicket(uifo,tkts)) return 0;break;

case 3: if(!delTkts(uifo,1,tkts)) return 0;break;

//這里刪除功能,用戶多名,要傳數組首地址,由於演示只有一個用戶(len=對應用戶數),所以只傳該用戶地址(len=1)

case 4: disAllTickets(tkts);break;

}

showMenu(uifo,tkts);

return 1;

}

int disAllTickets(TKT *tkts)

{

int i;

for(i=0;i<cnt;i++)

printf("編號:%2d 路程:%s-%s 票價:%3d 剩餘票數:%d ",tkts[i].tid,tkts[i].ssP->sName,tkts[i].tsP->sName,tkts[i].value,tkts[i].number);

printf("按任意鍵繼續。。。。 "),getch();

system("cls");

return 1;

}

int delIntByIndex(int *nums,int len,int index)

{

int i,*temp=NULL;

if(index>len-1) return -1;

for(i=index;i<len-1;i++)

nums[i]=nums[i+1];

len--;

if(len)

{

temp=(int *)realloc(nums,sizeof(int)*len);

if(!temp) return -1;

nums=temp;

}

else

free(nums);

return len;

}

int reTicket(UIFO *uifo,TKT *tkts)

{

int i,j,tid,n,index,len,flag=0;

printf("當前用戶購買記錄: ");

for(i=0;i<uifo->cnt;i++)

{

for(j=0;j<cnt;j++)

if(tkts[j].tid==uifo->btids[i]) index=j;

printf("--車票編號:%d,起末站:%s-%s,購買票數:%d ",uifo->btids[i],tkts[index].ssP->sName,tkts[index].tsP->sName,uifo->btNum[i]);

}

printf("請輸入要退票的車票id及票數:"),scanf("%d%d",&tid,&n);

for(i=0;i<uifo->cnt;i++)

if(uifo->btids[i]==tid && uifo->btNum[i]>=n)

{

for(j=0;j<cnt;j++)

if(tkts[j].tid==uifo->btids[i]) tkts[j].number+=n;//同步修改對應車票剩餘票數

uifo->btNum[i]-=n;//用戶購買記錄修改

if(uifo->btNum[i]==0)//某種車票全部退完,刪除該條記錄

{

len=delIntByIndex(uifo->btNum,uifo->cnt,i);

if(len==-1) return 0;

len=delIntByIndex(uifo->btids,uifo->cnt,i);

if(len==-1) return 0;

uifo->cnt=len;

}

flag=1;

break;

}

if(flag)

printf("退票成功! ");

else

printf("無此購買記錄或輸入數量不符合 ");

printf("按任意鍵繼續。。。。 "),getch();

system("cls");

return 1;

}

int buyTicket(UIFO *uifo,TKT *tkts)

{

char spn[20],tpn[20];

int i,n=-1,index=-1,*temp=NULL;

for(i=0;i<cnt;i++)

printf("編號:%2d 路程:%s-%s 票價:%3d 剩餘票數:%d ",tkts[i].tid,tkts[i].ssP->sName,tkts[i].tsP->sName,tkts[i].value,tkts[i].number);

printf("請輸入始發站站名和終點站站名:"),scanf("%s%s",spn,tpn);

for(i=0;i<cnt;i++)

if(strcmp(tkts[i].ssP->sName,spn)==0 && strcmp(tkts[i].tsP->sName,tpn)==0)

{

printf("車票%s-%s 票價:%3d 剩餘票數:%d ",tkts[i].ssP->sName,tkts[i].tsP->sName,tkts[i].value,tkts[i].number);

index=i;

break;

}

if(index==-1)

printf("購買失敗!無此路程的車票 ");

else

{

while(n<=0)

{

printf("請輸入要購買的數量(大於0):"),scanf("%d",&n);

if(tkts[index].number<n)

printf("錯誤:車票數量不足或者輸入數值超出范圍!請重新輸入! "),n=-1;

}

for(i=0;i<uifo->cnt;i++)//檢查用戶購買記錄,重復票累加購買數量,不同票新增記錄

{

if(uifo->btids[i]==tkts[index].tid)

{

printf("該票已購買了%d張,現再次購買%d張,累計購買了%d張 ",uifo->btNum[i],n,uifo->btNum[i]+n);

uifo->btNum[i]+=n;

tkts[index].number-=n;

break;

}

}

if(i==uifo->cnt)//未檢查到重復記錄,新增

{

if(!uifo->btids)

{

uifo->btids=(int *)malloc(sizeof(int));

if(!uifo->btids) return 0;

uifo->btNum=(int *)malloc(sizeof(int));

if(!uifo->btNum) return 0;

}

else

{

temp=(int *)realloc(uifo->btids,sizeof(int)*(uifo->cnt+1));

if(!temp) return 0;

uifo->btids=temp;

temp=(int *)realloc(uifo->btNum,sizeof(int)*(uifo->cnt+1));

if(!temp) return 0;

uifo->btNum=temp;

}

uifo->btids[uifo->cnt]=tkts[index].tid;

printf("該票購買了%d張 ",(uifo->btNum[uifo->cnt]=n));

tkts[index].number-=n;

uifo->cnt++;

printf("用戶購買記錄: ");

for(i=0;i<uifo->cnt;i++)

printf("--車票編號:%d,購買票數:%d ",uifo->btids[i],uifo->btNum[i]);

}

printf("本次成功購買了%s-%s的票%d張! ",tkts[index].ssP->sName,tkts[index].tsP->sName,n);

}

printf("按任意鍵繼續。。。。 "),getch();

system("cls");

return 1;

}

int delTkts(UIFO *uifos,int len,TKT *tkts)//len:所有購買的用戶數量

{

int i,j,k,tid,flag=0,index;

for(i=0;i<cnt;i++)

printf("編號:%2d 路程:%s-%s 票價:%3d 剩餘票數:%d ",tkts[i].tid,tkts[i].ssP->sName,tkts[i].tsP->sName,tkts[i].value,tkts[i].number);

printf("請輸入要刪除的車票編號:"),scanf("%d",&tid);

for(i=0;i<cnt;i++)

if(tid==tkts[i].tid)

{

index=i;

flag=1;

for(j=0;j<len;j++)//檢查所有用戶購買記錄

{

for(k=0;k<uifos[j].cnt;k++)

if(uifos[j].btids[k]==tid)

{

flag=0;

printf("該票已被用戶購買,無法刪除,需先完成退票! ");

break;

}

if(!flag)

break;

}

break;

}

if(!flag) printf(" 刪除失敗,輸入數值超出范圍或不可刪除! ");

else

{

cnt--;

if(cnt==0)

{

free(tkts[index].ssP);

free(tkts[index].tsP);

free(&tkts[index]);

}

else

{

free(tkts[index].ssP);

free(tkts[index].tsP);

for(i=index;i<cnt;i++)

tkts[i]=tkts[i+1];

tkts[cnt].ssP=NULL;

tkts[cnt].tsP=NULL;

free(&tkts[cnt]);

}

printf(" 刪除成功! ");

}

printf("按任意鍵繼續。。。。 "),getch();

system("cls");

return 1;

}

int init(STN stns[MS],TKT **tkts)

{

TKT *tTemp=NULL;

int i,j,n,v,cnt=2;

static int id=1;

printf("生成站點: ");

for(i=0;i<MS;i++,id++)

{

sprintf(stns[i].sid,"車站%03d",id);

sprintf(stns[i].sName,"SN%03d",id);

printf("----站點名:%s。站點ID:%s ",stns[i].sid,stns[i].sName);

}

printf("計算所有站點連線,生成車票(票是往返,所以一次生成往返兩組票): ");

for(i=0;i<MS;i++)

for(j=i+1;j<MS;j++)

{

if(!(*tkts))

{

*tkts=(TKT *)malloc(sizeof(TKT)*2);

if(!(*tkts)) return -1;

}

else

{

tTemp=(TKT *)realloc((*tkts),sizeof(TKT)*cnt);

if(!tTemp) return -1;

*tkts=tTemp;

}

n=rand()%4+2;//每種票隨機2~5張(保證總數大於20)

v=rand()%201+50;//隨機生成票價50~250

(*tkts)[cnt-1].tid=cnt;

(*tkts)[cnt-1].ssP=&stns[i];

(*tkts)[cnt-1].tsP=&stns[j];

(*tkts)[cnt-1].value=v;

(*tkts)[cnt-1].number=n;

(*tkts)[cnt-2].tid=cnt-1;

(*tkts)[cnt-2].ssP=&stns[j];

(*tkts)[cnt-2].tsP=&stns[i];

(*tkts)[cnt-2].value=v;

(*tkts)[cnt-2].number=n;

printf("----%s和%s的之間往返票各生成%d張,票價為%d(隨機) ",stns[i].sName,stns[j].sName,n,v);

cnt+=2;

}

return cnt-2;

}

//答題不易,如採納的,請不要無故刪除問題。

『玖』 c編程練習題

這個問題很簡單。
首先你要知道函數的參數傳遞的只是副本。
調用函數swap(int *p1,int *p2) ,只是對函數實參數的地址副本進行地址交換,就著這個函數來說,在交換前,p1地址是pointer_1,p2的地址是pointer_2;交換後p1地址是pointer_2,p2的地址是pointer_1,但pointer_1和pointer_2的地址還是沒變還是原來的地址,通俗說,a,b形參分別拿著A、B兩實參的鑰匙的復印件,a、b交換了鑰匙,但A、B並沒有交換鑰匙,這里的鑰匙就是指的是地址!
如果你想讓pointer_1和pointer_2的值改變,就改寫swap(int *p1,int *p2)。
swap(int *p1,int *p2)
{int *p;
*p=*p1;
*p1=*p2;
*p2=*p;
}
這個函數通俗說,a,b形參分別拿著A、B兩實參的鑰匙的復印件打開A、B的房門將A、B倆房間里的東西對調,雖然A、B並沒有交換鑰匙但卻交換了房間里的東西!

『拾』 c語言編程題

#include<stdio.h>
void main()
{
int max,min,sum,i,score[10];
printf("輸入數據:");
for(i=0;i<10;i++)
scanf("%d",&score[i]);
sum = max = min = score[0];
for(i=1; i<10; i++)
{
if(max<score[i])max = score[i];
if(min>score[i])min = score[i];
sum =sum+score[i];
}
printf("%.2f\n", (sum-min-max)/8.0);
}

閱讀全文

與c大型編程練習相關的資料

熱點內容
壓縮因子定義 瀏覽:966
cd命令進不了c盤怎麼辦 瀏覽:212
葯業公司招程序員嗎 瀏覽:972
毛選pdf 瀏覽:659
linuxexecl函數 瀏覽:727
程序員異地戀結果 瀏覽:374
剖切的命令 瀏覽:228
干什麼可以賺錢開我的世界伺服器 瀏覽:290
php備案號 瀏覽:990
php視頻水印 瀏覽:167
怎麼追程序員的女生 瀏覽:487
空調外壓縮機電容 瀏覽:79
怎麼將安卓變成win 瀏覽:459
手機文件管理在哪兒新建文件夾 瀏覽:724
加密ts視頻怎麼合並 瀏覽:775
php如何寫app介面 瀏覽:804
宇宙的琴弦pdf 瀏覽:396
js項目提成計算器程序員 瀏覽:944
pdf光子 瀏覽:834
自拍軟體文件夾名稱大全 瀏覽:328