上一篇中写了学习总结,在这里附上学习一周写的例程和源码。
视图如下:
源码如下:
#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;
}
//----------------------------------------------------------------------