1.2 C旅途的起點

2020-08-12 19:01:52

上一篇中寫了學習總結,在這裏附上學習一週寫的例程和原始碼。

檢視如下:

原始碼如下:

#include <stdio.h> 
#include <string.h>
#include <stdlib.h>
#include <math.h>

//****************************例程函數定義*******************************
int test_exp1(); 
int test_exp2(); 
int test_exp3(); 
int test_exp4(); 
int test_exp5(); 
int test_exp6(); 
int test_exp7(); 
int test_exp8(); 
int test_exp9(); 
int test_exp10();
int test_exp11();
int test_exp12();
int test_exp13();
int test_exp14();
int test_exp15();
int test_exp16();
int test_exp17();
int test_exp18();
int test_exp19();
//---------------------------------------------------------------------------


//***************************例程內部函數定義**********************************
//exp12
//cal_xdata函數是求n個x組成的數
//cal_pdatah函數是乘方,d0的d1次冪;
int cal_xdata(int x,int n); 
int cal_pdata(int d0,int d1);

//exp13
//cal_fdat函數求D的約數並返回約數和,p爲是否列印
int cal_fdata(int d,int p); 

//exp16
//move_data函數實現將陣列D,左移或右移mv_c次;
int move_data(int *d, int n, int mv_f, int mv_c); 
//------------------------------------------------


//********************************結構體定義************************************
//stu1 姓名 性別 年齡
typedef struct {
	char NAME[20];
	char SEX[5];
	int  AGE;
}stu1;

//stu2 學號 姓名 語文 數學 英語 總成績
typedef struct{
	int  ID;
	char NAME[13];
	int  A;
	int  B;
	int  C;
	int  ABC;
}stu2;
//--------------------------------------------------------


//***************************主函數****************************************************************
void main()
{
	int con=0;
	int exp=0;
	int run=1;
	int p_en=1;

	while(run)
	{
		if(p_en)
		{	
			printf("<_>********************************工程目錄*************************<_>\n\r");
			printf("* 0. 檢視目錄或退出                                                   *\n");
			printf("* 1. 輸出一個棱型                                                     *\n");
			printf("* 2. 輸入三個小於9陣列成一個新數,輸出組大的數據                       *\n");
			printf("* 3. 輸入利潤計算獎金                                                 *\n");
			printf("* 4. 輸入某年某月某天計算今天是第幾天                                 *\n");
			printf("* 5. 輸入n個數,按大小排序輸出                                        *\n");
			printf("* 6. 計算一個0~d範圍內的素數                                          *\n");
			printf("* 7. 輸入一組字元,反向輸出                                           *\n");
			printf("* 8. 將一個整數分解質因數                                             *\n");
			printf("* 9. 輸出一個9*9乘法表                                                *\n");
			printf("* 10.輸出斐波拉契數列                                                 *\n");
			printf("* 11.輸入一個字串統計字母、數位、空格、其他字元的個數               *\n");
			printf("* 12.輸入x,n求和                                                      *\n");
			printf("* 13.輸入一個數,求0到它本身的約數和爲它本身的數                      *\n");
			printf("* 14.輸入一個數,經過n次2平分之後t得到的數累加輸出                    *\n");
			printf("* 15.輸入行數,輸出楊輝三角                                           *\n");
			printf("* 16.輸入一個數組,將後面的m個數放到前面輸出                          *\n");
			printf("* 17.採集若幹人資訊並輸出年齡小於20歲的資訊                           *\n");
			printf("* 18.寫一個字串,寫入檔案,然後讀出                                 *\n");
			printf("* 19.輸入若幹學生三科成績,算平均成績,並寫入檔案「成績表.txt」中       *\n");
			printf("*---------------------------------------------------------------------*\n\r");
		}
		p_en=0;
		exp=0;

		printf("輸入一個序號開始: ");
		scanf("%d",&exp);
		do
		{
		}while(getchar()!='\n');

		if(exp==0)
		{
			printf("輸入0退出,輸入1檢視目錄: ");
			scanf("%d",&con);
			do{
			}while(getchar()!='\n');

			if(con==0)
				run=0;
			else if(con==1)
				p_en=1;
			else
				printf("error! 請重新輸入序號\n");
		}

		switch(exp)
		{
			case 0 : break;
			case 1 : test_exp1();  break;
			case 2 : test_exp2();  break;
			case 3 : test_exp3();  break;
			case 4 : test_exp4();  break;
			case 5 : test_exp5();  break;
			case 6 : test_exp6();  break;
			case 7 : test_exp7();  break;
			case 8 : test_exp8();  break;
			case 9 : test_exp9();  break;
			case 10: test_exp10(); break;
			case 11: test_exp11(); break;
			case 12: test_exp12(); break;
			case 13: test_exp13(); break;
			case 14: test_exp14(); break;
			case 15: test_exp15(); break;
			case 16: test_exp16(); break;
			case 17: test_exp17(); break;          
			case 18: test_exp18(); break;
			case 19: test_exp19(); break;
			default : printf("還麼寫呢!!!!!哼!!!!\n"); break;
		}
		printf("ok\n");
	}
	printf("bye <_> bye \n\r");
} 
//-----------------------------------------------------------------------


//*****************************experimen19*******************************
//輸入若幹學生成績並求平均分,然後寫到檔案中

int test_exp19()
{  
	int  n=0;
	stu2 stu[99];
	int  name_len=0;
	char stu_end='0';
	int  real=0;

	int  sort_sel=0;
	int  i=0,j=0;
	int  k=0;
	int  quit=0;

	float  a_average=0;
	float  b_average=0;
	float  c_average=0;
	float  abc_average=0;

	int  id=0;
	char name[13];
	int  a=0;
	int  b=0;
	int  c=0;
	int  abc=0;
	FILE *fp=NULL;

	//成績輸入
	printf("學生成績輸入: (格式爲: */#(*-開始,#-結束) 學號 姓名 語文 數學 英語) \n");
	printf("範例 */# 學號 姓名 語文成績 數學成績 英語成績\n");
	do
	{
		printf("%d: ",n+1);
		scanf("%c",&stu_end);
		if(stu_end=='*')
		{
			scanf(" %d%s%d%d%d",&stu[n].ID,stu[n].NAME,&stu[n].A,&stu[n].B,&stu[n].C);
			do
			{
			}while(getchar()!='\n');
			name_len=strlen(stu[n].NAME);
			for(i=name_len;i<13;i++)
			{	
				stu[n].NAME[i]=' ';
			}
			stu[n].ABC=stu[n].A+stu[n].B+stu[n].C;
			if(stu[n].A>100 || stu[n].B>100 || stu[n].C>100)
			{
				printf("成績不能大於100,請重新輸入\n");
			}
			else
			{
				a_average=a_average+stu[n].A;
				b_average=b_average+stu[n].B;
				c_average=c_average+stu[n].C;
				abc_average=abc_average+stu[n].ABC;
				n++;
			}
		}
		else if(stu_end=='#')
		{
			real=1;
		}
		else
		{
			printf("輸出了,開始*,結束# 再來一次吧!!!!\n");
		}
	}while(real==0);

	//計算平均分
	if(n!=0)
	{
		a_average=a_average/n;
		b_average=b_average/n;
		c_average=c_average/n;
		abc_average=abc_average/n;
	}
	else
		;

	//排序
	do
	{
		printf("選擇一項排序(0-學號,1-總分,2-語文,3-數學,4-英語,其他-不排序):");
		scanf("%d",&sort_sel);
		do
		{
		}while(getchar()!='\n');

		for(i=n-1;i>=0;i--)
		{
			for(j=0;j<i;j++)
			{
				if(sort_sel==0)
					real=(stu[j].ID>stu[j+1].ID) ? 1:0;
				else if(sort_sel==1)
					real=(stu[j].ABC<stu[j+1].ABC) ? 1:0;
				else if(sort_sel==2)
					real=(stu[j].A<stu[j+1].A) ? 1:0;
				else if(sort_sel==3)
					real=(stu[j].B<stu[j+1].B) ? 1:0;
				else if(sort_sel==4)
					real=(stu[j].C<stu[j+1].C) ? 1:0;
				else
					real=0;

				if(real==1)
				{
					id=stu[j+1].ID;
					stu[j+1].ID=stu[j].ID;
					stu[j].ID=id;

					a=stu[j+1].A;
					stu[j+1].A=stu[j].A;
					stu[j].A=a;

					b=stu[j+1].B;
					stu[j+1].B=stu[j].B;
					stu[j].B=b;

					c=stu[j+1].C;
					stu[j+1].C=stu[j].C;
					stu[j].C=c;			

					abc=stu[j+1].ABC;
					stu[j+1].ABC=stu[j].ABC;
					stu[j].ABC=abc;

					for(k=0;k<12;k++)
					{
						name[k]=stu[j+1].NAME[k];
						stu[j+1].NAME[k]=stu[j].NAME[k];
						stu[j].NAME[k]=name[k];
					}
				}
				else
					;
			}
		}

		//成績輸出	
		printf("成績輸出: \n");
		fp=fopen("score_list.txt","w+");
		for(i=0;i<=n+1;i++)
		{
			if(i==0)
			{
				fprintf(fp,"序號  學號  姓名        語文 數學 英語  總分\n");
				printf("序號  學號  姓名        語文 數學 英語  總分\n");
			}
			else if(i==n+1)
			{
				fprintf(fp,"%-4d  %-4d ",i,i);
				printf("%-4d  %-4d ",i,i);
				for(j=0;j<13;j++) 
				{
					fprintf(fp," ");
					printf(" ");
				}
				fprintf(fp," %-3.1f %-3.1f %-3.1f %-3.1f\n",a_average,b_average,c_average,abc_average);
				printf(" %-3.1f %-3.1f %-3.1f %-3.1f\n",a_average,b_average,c_average,abc_average); 
			}
			else
			{
				fprintf(fp,"%-4d  %-4d ",i,stu[i-1].ID);
				printf("%-4d  %-4d ",i,stu[i-1].ID);
				for(j=0;j<13;j++)
				{
					fprintf(fp,"%c",stu[i-1].NAME[j]);
					printf("%c",stu[i-1].NAME[j]); 
				}
				fprintf(fp," %-4d %-4d %-4d %-4d\n",stu[i-1].A,stu[i-1].B,stu[i-1].C,stu[i-1].ABC);
				printf(" %-4d %-4d %-4d %-4d\n",stu[i-1].A,stu[i-1].B,stu[i-1].C,stu[i-1].ABC);
			}
		}
		fclose(fp);

		printf("選擇退出或者重新排序(格式:1-退出,其他繼續): ");
		scanf("%d",&quit);
		do
		{
		}while(getchar()!='\n');
	}while(quit!=1);

	return 0;
}
//-----------------------------------------------------------------------


//*****************************experimen18*******************************
//寫一個字串寫入檔案中,然後再讀出

int test_exp18()
{
	int  i=0;
	FILE *fp=NULL;
	char filename[10];
	char str[99];
	int  str_len;
	char wr='0';
	char rd='0';
	char del='0';
	int  line=0;
	int  line_cnt=0;
	int  line_offest=0;
	int  real=0;

	//建立檔案
	printf("輸入檔名: ");
	scanf("%s",filename);
	do
	{
	}while(getchar()!='\n');
	fp=fopen(filename,"w");

	//寫檔案
	printf("輸入檔案內容: \n");
	do
	{
		printf("%d: ",line);
		fgets(str,99,stdin);
		str_len=strlen(str);
		for(i=0;i<str_len;i++)
		{
			fputc(str[i],fp);
		}
		line++;

		printf("繼續寫(y/n): ");
		scanf("%c",&wr);
		do
		{
		}while(getchar()!='\n');

		if(wr=='Y'||wr=='y') 
			real=0;
		else 
			real=1;
	}while(real==0);
	fclose(fp);

	//讀檔案
	printf("是否需要讀檔案(y/n):");
	scanf("%c",&rd);
	do
	{
	}while(getchar()!='\n');

	if(rd=='Y'||rd=='y')
	{
		fp=fopen(filename,"r");
		printf("輸出檔案: \n");
		while(line_cnt<line)
		{  
			//printf("line=%d,line_cnt=%d",line,line_cnt);
			//printf("real=%d,str_len=%d",real,str_len[line_cnt]);
			fgets(str,99,fp);
			str_len=strlen(str);
			for(i=0;i<=str_len;i++)
			{
				printf("%c",str[i]);
			}
			line_offest=line_offest+str_len;
			fseek(fp,line_offest,0);
			line_cnt++;
		}
		fclose(fp);
	}

	//刪除
	printf("是否需要刪除檔案(y/n): ");
	scanf("%c",&del);
	do
	{
	}while(getchar()!='\n');

	if(del=='y' || del=='Y')
		remove(filename);
	else
		;

	return 0;
}
//-----------------------------------------------------------------------

//*****************************experimen17*******************************
//採集若幹人資訊並輸出年齡小於20歲的人的資訊

int test_exp17()
{
	stu1 num[99];
	int n=0;
	int i=0;

	//採集資訊	
	printf("輸入採集人數: ");
	scanf("%d",&n);
	do
	{
	}while(getchar()!='\n');

	printf("輸入採集人資訊(格式:姓名 性別 年齡): \n");
	for(i=0;i<n;i++)
	{
		printf("%d: ",i+1);
		scanf("%s%s%d",num[i].NAME,num[i].SEX,&num[i].AGE);
		do
		{
		}while(getchar()!='\n');
	}

	//輸出資訊
	printf("輸出年齡小於20歲人: \n");
	for(i=0;i<n;i++)
	{ 
		if(num[i].AGE<20)
			printf("%s %s %d\n",num[i].NAME,num[i].SEX,num[i].AGE); 
	}

	return 0;
}

//-----------------------------------------------------------------------


//*****************************experimen16*******************************
//輸入一個數組,將後面的m個數放到前面輸出 

int test_exp16()
{
	int n=0;
	int d[99]={0};
	int i=0;
	int  mv_f=0;
	int  mv_c=0;
	int  real=0;

	//輸入數據
	printf("輸入陣列大小和數據(格式: 數據個數:d0 d1 d2 ...)\n輸入: ");
	for(i=0;i<=n;i++)
	{
		if(i==0)scanf("%d:",&n);
		else scanf("%d",&d[i-1]);
	}
	do
	{
	}while(getchar()!='\n');

	//輸入移動方向和次數
	do
	{
		printf("輸入移動方向和移動次數,移動次數小於%d(格式: 方向(0:左移,1:右移),次數)\n方向,次數輸入:",n);
		scanf("%d,%d",&mv_f,&mv_c);
		do
		{
		}while(getchar()!='\n');

		if((mv_f<2)&&(mv_c<n))
		{
			real=1;
			break;
		}
		else
		{
			real=0;
			printf("輸入錯誤,請重新輸入\n");
		}
	}while(real==0);

	//列印輸入數據 
	printf("輸入數據爲: ");
	for(i=0;i<n;i++)
	{
		printf("%d ",d[i]);
	}

	//數據移動並輸出
	move_data(d,n,mv_f,mv_c);
	printf("\n移動%d次後的數據爲: ",mv_c);
	for(i=0;i<n;i++)
	{
		printf("%d ",d[i]);
	}
	printf("\n\r");

	return 0;
}

int move_data(int *d, int n, int mv_f, int mv_c)
{
	int i=0,j=0;
	int b;

	if(mv_f==0)//左移
	{   
		for(i=0;i<mv_c;i++)
		{
			for(j=0;j<n;j++)
			{
				if(j==0) b=d[0];
				if(j==n-1) d[n-1]=b;
				else d[j]=d[j+1];  
			}									
		}
	}
	else //右移
	{
		for(i=0;i<mv_c;i++)            
		{
			for(j=n-1;j>=0;j--)
			{
				if(j==n-1) b=d[n-1];
				if(j==0) d[0]=b;
				else d[j]=d[j-1];
			}
		} 
	}
} 

//-----------------------------------------------------------------------


//*****************************experimen15*******************************
//輸入行數,輸出楊輝三角

int test_exp15()
{
	int d=0;
	int i=0,j=0,k=0;
	int x[99][99]={0};

	//輸入行數
	printf("輸入行數: ");
	scanf("%d",&d);
	do
	{
	}while(getchar()!='\n');

	for(i=0;i<=d;i++)
	{  
		x[i][0]=1;			    
	}

	//計算楊輝三角值
	for(i=1;i<=d;i++)
	{
		for(j=1;j<i;j++)
		{
			x[i][j]= x[i-1][j-1]+x[i-1][j];
		}
	}

	//輸出楊輝三角值
	for(i=0;i<=d;i++)
	{	
		for(j=0;j<d;j++)
		{   
			if(x[i][j]>0 && i>0)
			{
				printf("%-4d ",x[i][j]);
			}					
		}
		if(i>0) printf("\n");
	}

	return 0;
}
//-----------------------------------------------------------------------


//*****************************experimen14*******************************
//輸入一個數,求經過n次平分之和得到的值

int test_exp14()
{
	double d0=0;
	int d1=0;
	int i=0;

	//輸入數據和分裂次數
	printf("輸入一個數和平分次數n(格式d0,d1): ");
	scanf("%lf,%d",&d0,&d1);
	do
	{
	}while(getchar()!='\n');

	//分裂並輸出
	printf("%lf經過%d次分裂的數爲: ",d0,d1);
	for(i=0;i<=d1;i++)
	{
		d0=d0/2;
		printf(" %lf",d0);
	}
	printf("\n\r");

	return 0;
}
//----------------------------------------------------------------------


//*****************************experimen13*******************************
//輸入一個數,求0到它本身的約數和爲它本身的數

int test_exp13()
{
	int d=0,p=0;
	int i=0;
	int y=0;
	int num=0;

	//輸入相關資訊
	printf("輸入一個數: ");
	scanf("%d",&d);
	do
	{
	}while(getchar()!='\n');

	printf("列印約數請輸出1,不列印輸入0: ");
	scanf("%d",&p);
	do
	{
	}while(getchar()!='\n');

	//求它的約數和並輸出
	for(i=2;i<=d;i++)
	{
		y=cal_fdata(i,p);
		if(i==y)
		{
			printf("%d的約數和爲: %d\n",i,y);
			num++;
		}
	}
	printf("1~%d範圍內約數和爲它本身的數共有: %d\n\r",d,num);

	return 0;
}

//計算一個數的約數
int cal_fdata(int d,int p)
{
	int i=0;
	int y=0;

	//計算約數
	if(p==1) printf("%d的約數爲: ",d);
	for(i=1;i<d;i++)
	{
		if(d%i==0)
		{
			y=y+i;
			if(p==1) printf(" %d",i);
		}		
	}
	if(p==1) printf("\n");
	return y;
}
//-----------------------------------------------------------------------


//*****************************experimen12*******************************
//輸入x,a求和

int test_exp12()
{
	int x=0;
	int n=0;
	int i=0;
	int num=0;

	//輸入
	printf("輸入數據a,計算n個a的和(格式:x,n): ");
	scanf("%d,%d",&x,&n);
	do
	{
	}while(getchar()!='\n');

	//計算並輸出
	num = cal_xdata(x,n-1);		
	printf("%d個%d組成的數的和爲: %d\n\r",n,x,num);

	return 0;
}

//通過乘方計算第n個x數據
int cal_xdata(int x, int n)
{
	int y=0;
	int i=0;
	int d=0;
	static int num=0;

	//計算x數據
	for(i=0;i<=n;i++)
	{
		d=cal_pdata(10,i);//pow(10,i);
		y=y+x*d;
	}
	num=num+y;
	printf("第%d個數據爲: %d\n",n,y);

	//遞回
	if(n==0)
		return num;
	else 
		return cal_xdata(x,n-1);
}

//乘方計算
int cal_pdata(int d0,int d1)
{
	int i;
	int y;

	for(i=0;i<=d1;i++)
	{
		if(i==0) y=1;
		else if(i==1) y=d0;
		else y=y*d0;
	}

	return y;
}
//----------------------------------------------------------------------


//*****************************experimen11*******************************
//輸入一個字串統計其中的字母,數位,空格

int test_exp11()
{
	char str[99] = {0};
	char str_start = {0};

	int i=0;
	int digital=0;
	int latter=0;
	int space=0;
	int other=0;

	//輸入字串
	printf("輸入一個字串: "); 
	//gets(str); 
	fgets(str,99,stdin);
	printf("str=%s",str);

	//統計並輸出
	for(i=0;i<99;i++) 
	{  
		if(str[i] == '\0') 
		{
			printf("字串中數位的個數爲: %d\n",digital);
			printf("字串中字母的個數爲: %d\n",latter);
			printf("字串中空格的個數爲: %d\n",space);
			printf("字串中其他的個數爲: %d\n",other);
			break;
		}
		else if('0'<=str[i] && str[i]<='9')
			digital++;
		else if(('a'<=str[i] && str[i]<='z') || ('A'<=str[i] && str[i]<='Z'))
			latter++;
		else if(str[i]==' ')
			space++;
		else 
			other++;
	}

	return 0;
}
//----------------------------------------------------------------------


//*****************************experimen10*******************************
//輸出斐波拉契數列

int test_exp10()
{
	int i=0;
	int n=0;
	int t1=0,t2=1;
	int nextnum=0;

	//輸入
	printf("輸出幾個數: ");
	scanf("%d",&n);
	do
	{
	}while(getchar()!='\n');

	//計算並輸出
	printf("裴波那契數列: ");
	for(i=1;i<=n;i++) 
	{
		printf("%d  ",t1);
		nextnum = t1 + t2;
		t1 = t2;
		t2 = nextnum;
	}
	printf("\n\r");	

	return 0;
}
//---------------------------------------------------------------------


//*****************************experimen9********************************
//輸出9*9乘法表
int test_exp9()
{
	int i=0;
	int j=0;

	//輸出
	for(i=1;i<=9;i++) 
	{
		for(j=1;j<=i;j++) 
		{
			printf("%dx%d=%d\t",j,i,j*i);
		}
		printf("\n");
	}
	 
	return 0;
}
//----------------------------------------------------------------------


//*****************************experimen8********************************
//將一個正整數分解質因數

int test_exp8()
{
	unsigned int data=0;
	int i=0;

	//輸入正整數
	printf("輸入一個正整數: ");
	scanf("%d",&data);
	do
	{
	}while(getchar()!='\n');

	//計算輸出
	printf("%d=",data);
	for(i=2;i<=data;i++) 
	{
		while(data%i==0) 
		{
			printf("%d",i);
			data = data/i;
			if(data!= 1) printf("*");
		}
	}
	printf("\n\r");
	
	return 0;
}

//------------------------------------------------------------------------


//*****************************experiment7********************************
//輸入一組字元,反序輸出

int test_exp7()
{
	char str[99]={0};
	int  i=0;
	int  str_len=0;

	//輸入字串
	printf("輸入一組字元: ");
	fgets(str,99,stdin);
	str_len=strlen(str); 
	printf("該組字串長度爲: %d\n",str_len);

	//反向輸出 
	printf("字元反向輸出爲: ");
	for(i=str_len-2;i>=0;--i) 
	{
		printf("%c",str[i]);
	}
	printf("\n\r");
	
	return 0;
}

//----------------------------------------------------------------------- 


//****************************experiment6**********************************
//輸入一個0~d範圍內的素數

int test_exp6()
{
	unsigned int d;
	int i=0,j=0;
	int num = 0;

	//輸入一個正整數
	printf("輸入一個數據: ");
	scanf("%d",&d);
	do
	{
	}while(getchar()!='\n');

	//計算並輸出
	for(i=0;i<=d;i++) 
	{
		for(j=2;j<i;j++) 
		{
			// printf("%d,\n",j);
			if(i%j==0)
				break;
		}

		if(j==i) 
		{
			printf("%d ",i);
			num++;
		}
		else 
			;
	}
	printf("\n0~%d範圍內的素數共有( %d )個\n\r",d,num);

	return 0;
}

//-------------------------------------------------------------------------


//****************************experiment5***********************************
//輸入n個數據,按大小排列輸出

int test_exp5()
{ 
	int n=0;
	int d[99]={0};
	int i=0,j=0;	
	int b=0; 

	//輸入數據
	printf("輸入排序數據個數: ");
	scanf("%d",&n);
	do
	{
	}while(getchar()!='\n');

	printf("輸入%d個數據(格式爲:數據中間間隔空格)\n: ",n);
	for(i=0;i<n;i++)
	{	
		scanf("%d",&d[i]);
	}
	do
	{
	}while(getchar()!='\n');

	//排序並輸出
	for(j=n-1;j>=0;j--)
	{ 
		for(i=0;i<j;i++)
		{
			if(d[i+1]>d[i])
			{
				b=d[i];
				d[i]=d[i+1];
				d[i+1]=b;
			}				
		}
	}
	printf("從大到小排序輸出: ");
	for(i=0;i<n;i++)
	{
		printf("%d ",d[i]);
	}
	printf("\n從小到大排序輸出: ");
	for(i=n-1;i>=0;i--)
	{
		printf("%d ",d[i]);
	}
	printf("\n\r");

	return 0;
}
//--------------------------------------------------------------------------


//****************************experiment4**********************************
//輸入某年某月某天判斷今天是年的第幾天

int test_exp4()
{
	int year=0, month=0, day=0;
	int year_time=0;
	int month_time=0;
	int day_time=0;
	int real=0;

	//輸入日期
	do
	{
		printf("輸入某年某月某天(格式爲:年,月,日): ");
		scanf("%d,%d,%d", &year, &month, &day);
		do
		{
		}while(getchar()!='\n');

		if(month>12)
			printf("輸錯了!!一年只有12月哦! 請重新輸入!!!!\n");
		else if((month==1)&&(day > 31))
			printf("輸錯了!!1月只有31哦!再來一次吧\n");
		else if((month==2)&&(day>29)&&(year_time==1))
			printf("輸錯了!!閏年2月只有29天哦!再來一次吧\n");
		else if((month==2)&&(day>28)&&(year_time==0))
			printf("輸錯了!!平年2月只有28天哦!再來一次吧\n");
		else if((month==3)&&(day>31))
			printf("輸錯了!!4月只有31哦!再來一次吧\n");
		else if((month==4)&&(day>30))
			printf("輸錯了!!4月只有30哦!再來一次吧\n");
		else if((month==5)&&(day>31))
			printf("輸錯了!!5月只有31哦!再來一次吧\n");
		else if((month==6)&&(day>30))
			printf("輸錯了!!6月只有30哦!再來一次吧\n");
		else if((month==7)&&(day>31))
			printf("輸錯了!!7月只有31哦!再來一次吧\n");
		else if((month==8)&&(day>31))
			printf("輸錯了!!8月只有31哦!再來一次吧\n");
		else if((month==9)&&(day>30))
			printf("輸錯了!!9月只有30哦!再來一次吧\n");
		else if((month==10)&&(day>31))
			printf("輸錯了!!10月只有31哦!再來一次吧\n");
		else if((month==11)&&(day>30))
			printf("輸錯了!!11月只有30哦!再來一次吧\n");
		else if((month==12)&&(day>31))
			printf("輸錯了!!12月只有31哦!再來一次吧\n");
		else
			real=1;
	}while(real==0);

	//計算天數並輸出
	if(year%4 == 0)
		year_time = 1;
	else     
		year_time= 0;

	switch(month) 
	{
		case 1: month_time = 0;  break;
		case 2: month_time = 31;  break;
		case 3: month_time = 59  + year_time;	break;
		case 4: month_time = 90  + year_time; break;
		case 5: month_time = 121 + year_time; break;
		case 6: month_time = 151 + year_time; break;
		case 7: month_time = 181 + year_time; break;
		case 8: month_time = 212 + year_time; break;
		case 9: month_time = 243 + year_time; break;
		case 10:month_time = 273 + year_time; break;
		case 11:month_time = 304 + year_time; break;
		case 12:month_time = 334 + year_time; break;
		default : month_time = 0; 	 break;
	} 

	day_time = month_time + day;
	printf("%d年%d月%d日是今年的第 %d 天\n\r", year, month, day, day_time);

	return 0;
}
//---------------------------------------------------------------------------


//****************************experiment3*************************************
//輸入利潤計算獎金
//
int test_exp3()
{

	float money=0;
	float bonus=0;
	float bonus0=0,bonus1=0,bonus2=0,bonus4=0,bonus6=0;

	printf("***************獎金計算方法********************************\n\r");
	printf("*低於10萬         :提成百分之10                           *\n\r");
	printf("*高於10萬低於20萬 :提成百分之7.5(低於10萬的部分按10萬計算)*\n\r");
	printf("*高於20萬低於40萬 :提成百分之5                            *\n\r");
	printf("*高於40萬低於60萬 :提成百分之3                            *\n\r");
	printf("*高於60萬低於100萬:提成百分之1.5                          *\n\r");
	printf("*高於100萬        :提成百分之1                            *\n\r");
	printf("*---------------------------------------------------------*\n\r");
	//計算列表
	bonus0 = 100000*0.1;
	bonus1 = bonus0 + 100000*0.075;
	bonus2 = bonus1 + 200000*0.05;
	bonus4 = bonus2 + 200000*0.03;
	bonus6 = bonus4 + 400000*0.015;

	//輸入利潤
	printf("輸入一個利潤: ");
	scanf("%f",&money);
	do
	{
	}while(getchar()!='\n');

	//計算並輸出
	if(money >= 1000000)
		bonus = bonus6 + (money - 1000000)*0.01;
	else if(money >= 600000)
		bonus = bonus4 + (money - 600000)*0.015;
	else if(money >= 400000)
		bonus = bonus2 + (money - 400000)*0.03;
	else if(money >= 200000)
		bonus = bonus1 + (money - 200000)*0.05;
	else if(money >= 100000)
		bonus = bonus0 + (money - 100000)*0.075;
	else 
		bonus = money*0.1;
	printf("%f\n\r",bonus);

	return 0;
}
//-----------------------------------------------------------------------------


//****************************experiment2**************************************
//輸入三個陣列成一個新數,輸出一個最大的數
//
int test_exp2() 
{       
	int d[3]={0};
	int real=0;
	int i=0,j=0;
	int b=0;

	//輸入數據	
	do
	{
		printf("輸入三個小於9的數(格式爲 a b c): ");
		scanf("%d %d %d",&d[0],&d[1],&d[2]);
		do
		{
		}while(getchar()!='\n');

		if(d[0]>9 || d[1]>9 || d[2]>9)
		{
			printf("不能大於9,懂不懂,來,再輸入一次吧!!!!!\n");
			real=0;
		}
		else 
		{
			//   printf("輸入數據爲: %d %d %d \n",d[0],d[1],d[2]);
			real=1;
		}
	}while(real==0);

	//組成新數
	for(i=0;i<2;i++)
	{
		for(j=0;j<2;j++)
		{
			if(d[j]<d[j+1])
			{
				b=d[j];
				d[j]=d[j+1];
				d[j+1]=b;
			}
		}
	}	
	printf("輸出最大的一個數: %d%d%d\n\r",d[0],d[1],d[2]);

	return 0;
}   
//----------------------------------------------------------------------------


//**********************experiment1*********************************************
//輸出一棱型
//
int test_exp1()
{
	int i = 0;
	int space = 0;
	int k = 0;
	int row = 0;

	printf("輸入行數: "); 
	scanf("%d",&row);
	do
	{
	}while(getchar()!='\n');

	for(i=1;i<=row; ++i,k=0)
	{
		for(space=1; space<=row-i;++space)
		{
			printf(" ");
		}

		while(k!=2*i-1)
		{
			printf("*");
			++k;
		}

		printf("          row:%d,space:%d,k:%d",i,space,k);
		printf("\n");
	}

	for(i=row-1;i>0;--i,k=0)
	{

		for(space=1;space<=row-i;++space)
		{
			printf(" ");
		}

		while(k!=2*i-1)
		{
			printf("*");
			++k;
		}

		printf("          row:%d,space:%d,k:%d",i,space,k);
		printf("\n");
	}

	return 0;
}
//----------------------------------------------------------------------