1.2 C旅途的起点

上一篇中写了学习总结,在这里附上学习一周写的例程和源码。

视图如下:

源码如下:

#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;
}
//----------------------------------------------------------------------

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值