上一篇中寫了學習總結,在這裏附上學習一週寫的例程和原始碼。
檢視如下:
原始碼如下:
#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;
}
//----------------------------------------------------------------------