C语言函数练习题2.docx
《C语言函数练习题2.docx》由会员分享,可在线阅读,更多相关《C语言函数练习题2.docx(46页珍藏版)》请在冰豆网上搜索。
C语言函数练习题2
/*
姓名:
白银
日期:
2007.6.11
描述:
英尺,英寸,米,厘米之间的转换
*/
#include
floatGetInch(floatfeet);
floatGetMeter(floatinch);
floatGetCentiMeter(floatmeter);
voidmain()
{
floatinch;
floatmeter;
floatcentimeter;
floatfeet;
printf("请输入英尺的值\n");
scanf("%f",&feet);
inch=GetInch(feet);
printf("转换成英寸的结果是%.2f:
",inch);
printf("\n");
meter=GetMeter(GetInch(feet));
printf("转换成米的结果是%.2f:
",meter);
printf("\n");
centimeter=GetCentiMeter(GetMeter(GetInch(feet)));
printf("转换成米的结果是%.2f:
",centimeter);
printf("\n");
}
floatGetInch(floatfeet)
{
floatinch;
inch=feet*12;
returninch;
}
floatGetMeter(floatinch)
{
floatmeter;
meter=inch*2.54;
returnmeter;
}
floatGetCentiMeter(floatmeter)
{
floatcentimeter;
centimeter=meter*100;
returncentimeter;
}
/*
姓名:
白银
日期:
2007.6.11
描述:
底和高求三角形面积
*/
#include
floatGetArea(floath,floatl);
voidmain()
{
floatarea;
floath;
floatl;
printf("请输入底和高\n");
scanf("%f,%f",&l,&h);
area=GetArea(h,l);
printf("三角形面积=%.2f",area);
printf("\n");
}
floatGetArea(floath,floatl)
{
floatarea;
area=h*l/2;
returnarea;
}
/*
姓名:
白银
日期:
2007.6.11
描述:
函数递归求阶乘
*/
#include
intGetFactorial(intnumber);
voidmain()
{
intnumber;
unsignedlongintresult;
printf("请输入number的值\n");
scanf("%d",&number);
result=GetFactorial(number);
printf("结果是%d\n",result);
}
intGetFactorial(intnumber)
{
intresult;
if(number==1)
{
result=1;
}
else
{
result=GetFactorial(number-1)*number;
}
returnresult;
}
/*
姓名:
白银
日期:
2007.6.11
描述:
画出一个正方形
*/
#include
voidDraw(intnum);
voidOutPut1(intnum);
voidOutPut2(intnum);
voidmain()
{
intnum;
printf("请输入正方型的行数\n");
scanf("%d",&num);
Draw(num);
printf("\n");
}
voidOutPut1(intnum)
{
inti;
for(i=0;i
{
printf("*");
}
for(i=0;i
{
printf("\n");
}
}
voidOutPut2(intnum)
{
inti;
for(i=0;i
{
printf("\n");
}
for(i=0;i
{
printf("*");
}
}
voidDraw(intnum)
{
inti;
intj;
OutPut1(num);
for(i=0;i
{
for(j=0;j
{
if((i==0&&j==0)||(i==(num-1)&&j==0)||(i==(num-1)&&j==(num-1))||(i==0&&j==(num-1)))
{
printf("*");
}
else
{
printf("");
}
}
printf("\n");
}
OutPut2(num);
}
/*
姓名:
白银
日期:
2007.6.11
描述:
求出3个数字的立方的和
*/
#include
#include
floatGetNumber(floata,floatb,floatc);
voidmain()
{
floata,b,c;
floatnum;
printf("请输入3个数字\n");
scanf("%f%f%f",&a,&b,&c);
num=GetNumber(a,b,c);
printf("结果=%.2f\n",num);
}
floatGetNumber(floata,floatb,floatc)
{
floatnum;
num=(float)(pow(a,3)+pow(b,3)+pow(c,3));
returnnum;
}
/*
作者:
白银
日期:
2007.6.11
描述:
输入一定的钱数,得出最少需要多少张
*/
#include
intGetMoney(int*num,intmoney);
voidmain()
{
inta[7];
int*p;
intnum;
p=#
printf("请输入钱数\n");
scanf("%d",p);
a[0]=GetMoney(p,100);
a[1]=GetMoney(p,50);
a[2]=GetMoney(p,20);
a[3]=GetMoney(p,10);
a[4]=GetMoney(p,5);
a[5]=GetMoney(p,2);
a[6]=GetMoney(p,1);
printf("需要100元的%d张\n",a[0]);
printf("需要50元的%d张\n",a[1]);
printf("需要20元的%d张\n",a[2]);
printf("需要10元的%d张\n",a[3]);
printf("需要5元的%d张\n",a[4]);
printf("需要2元的%d张\n",a[5]);
printf("需要1元的%d张\n",a[6]);
}
intGetMoney(int*num,intmoney)
{
intcount;
count=*num/money;
*num=*num%money;
returncount;
}
/*
作者:
白银
日期:
2007,6,11
描述:
输入一个数转换成16,2,12,7,8进制的数字,并且输出。
。
。
。
*/
#include
voidGetSixteen(intnum);//
转换成16进制
voidGetTwo(intnum);//
转换成2
进制
voidGetEight(intnum);//
转换成
8进制
voidGetTwelve(intnum);//
转换成12进制
voidGetSeven(intnum);//
转换成
7进制
voidSort(int*a,inti);//
反向输出
voidmain()
{
intnum;
printf("请输入一个数字\n");
scanf("%d",&num);
GetSixteen(num);
GetTwo(num);
GetEight(num);
GetTwelve(num);
GetSeven(num);
}
voidSort(int*a,inti)
{
intj;
for(j=i-1;j>=0;j--)
{
printf("%d",a[j]);
}
printf("\n");
}
voidGetSixteen(intnum)
{
inta[100];
inti=0;
intj;
printf("转换成16进制为:
");
while(num!
=0)
{
a[i]=num%16;
num=num/16;
i++;
}
for(j=i-1;j>=0;j--)
{
printf("%x",a[j]);
}
printf("\n");
}
voidGetTwo(intnum)
{
inta[100];
inti=0;
printf("转换成2进制为:
");
while(num!
=0)
{
a[i]=num%2;
num=num/2;
i++;
}
Sort(a,i);
}
voidGetEight(intnum)
{
inta[100];
inti=0;
printf("转换成8进制为:
");
while(num!
=0)
{
a[i]=num%8;
num=num/8;
i++;
}
Sort(a,i);
}
voidGetTwelve(intnum)
{
inta[100];
inti=0;
printf("转换成12进制为:
");
while(num!
=0)
{
a[i]=num%12;
num=num/12;
i++;
}
Sort(a,i);
}
voidGetSeven(intnum)
{
inta[100];
inti=0;
printf("转换成7进制为:
");
while(num!
=0)
{
a[i]=num%7;
num=num/7;
i++;
}
Sort(a,i);
}
/*
姓名:
白银
时间:
2007.6.11
描述:
输入半径,底和高求出圆的面积,周长和三角形面积
*/
#include
#definePI3.14
floatGetRoundArea(floatr);
floatGetRoundPerimeter(floatr);
floatGetTrigonArea(floathight,floatlength);
voidmain()
{
floatr;
floathight;
floatlength;
floatarea;
floatperimeter;
printf("请输入半径,高和底边长度\n");
scanf("%f%f%f",&r,&hight,&length);
area=GetRoundArea(r);
printf("圆的面积是%f\n",area);
perimeter=GetRoundPerimeter(r);
printf("圆的周长是%f\n",perimeter);
area=GetTrigonArea(hight,length);
printf("三角形的面积是%f\n",area);
}
floatGetRoundArea(floatr)
{
floatarea;
area=PI*r*r;
returnarea;
}
floatGetRoundPerimeter(floatr)
{
floatperimeter;
perimeter=2*PI*r;
returnperimeter;
}
floatGetTrigonArea(floathight,floatlength)
{
floatarea;
area=hight*length/2;
returnarea;
}
/*
姓名:
白银
日期:
2007.6.11
描述:
输入一个字符串,统计小写字母个数
*/
#include
#defineN10000
intGetNumber(char*a,intn);
voidmain()
{
chara[N];
inti;
intnum;
printf("请输入一个字符数组\n");
for(i=0;i
{
scanf("%c",&a[i]);
if(a[i]=='\n')
{
break;
}
}
num=GetNumber(a,i);
printf("数组中小写字母的个数是%d\n",num);
}
intGetNumber(char*a,intn)
{
inti;
intcount=0;
for(i=0;i
{
if(a[i]<='z'&&a[i]>='Z')
{
count++;
}
}
returncount;
}
/*
姓名:
白银
日期:
2007.6.11
描述:
输出一个由*和A或者a组成的三角形
*/
#include
charInput();
intInputNumber();
voidOutput(charc,intnum);
voidmain()
{
intc;
intnum;
c=Input();
num=InputNumber();
Output(c,num);
}
charInput()
{
charc;
charans='y';
printf("请输入a,A,或者*\n");
while(ans=='y')
{
fflush(stdin);
scanf("%c",&c);
if(c=='a'||c=='A'||c=='*')
{
break;
}
else
{
printf("输入错误,重新输入\n");
}
}
returnc;
}
intInputNumber()
{
intnum;
charans='y';
printf("请输入你要的三角型的行数(<26)\n");
while(ans=='y')
{
scanf("%d",&num);
if(num<26)
{
break;
}
else
{
printf("输入错误,重新输入\n");
}
}
returnnum;
}
voidOutput(charc,intnum)
{
inti;
intj;
for(j=1;j<=num;j++)
{
for(i=1;i<=num-j;i++)
{
printf("");
}
for(i=1;i<=2*j-1;i++)
{
printf("%c",c);
}
printf("\n");
}
}
/*
作者:
白银
日期:
2007.6.11
描述:
取得日期。
这个月多少天,输入的日期是否存在,取得下一天的日期
*/
#include
#include
intIsRealDays(intyear,intmonth,intday);
voidGetNextday(intyear,intmonth,intday);
intIsLeapyear(intyear);
intGetDays(intyear,intmonth);
voidmain()
{
intyear;
intmonth;
intday;
intresult;
intdays;
printf("请输入year\n");
scanf("%d",&year);
printf("请输入month\n");
scanf("%d",&month);
printf("请输入day\n");
scanf("%d",&day);
IsRealDays(year,month,day);
result=IsLeapyear(year);
if(result==1)
{
printf("闰年\n");
}
else
{
printf("不是闰年\n");
}
days=GetDays(year,month);
printf("这个月有%d天\n",days);
GetNextday(year,month,day);
}
intIsLeapyear(intyear)
{
intresult;
if((year%4==0&&year%100!
=0)||year%400==0)
{
returnresult=1;
}
else
{
returnresult=0;
}
}
intGetDays(intyear,intmonth)
{
intdays;
switch(month)
{
case1:
case3:
case5:
case7:
case8:
case10:
case12:
days=31;
break;
case4:
case6:
case9:
case11:
days=30;
break;
case2:
if(IsLeapyear(year)==1)
{
days=29;
}
else
{
days=28;
}
break;
}
returndays;
}
intIsRealDays(intyear,intmonth,intday)
{
intresult;
if((month>12&&month<1)||year<0)
{
printf("错误的日期\n");
result=0;
}
elseif((day>GetDays(year,month))||day<1)
{
printf("错误的日期\n");
result=0;
}
else
{
printf("正确的日期\n");
result=1;
}
returnresult;
}
voidGetNextday(intyear,intmonth,intday)
{
if(IsRealDays(year,month,day)==0)
{
printf("错误\n");
exit(0);
}
if(day==GetDays(year,month))
{
if(month==12)
{
year++;
month=1;
day=1;
}
else
{
month++;
day=1;
}
}
else
{
day++;
}
printf("下一天是%d,%d,%d",year,month,day);
}
/*
姓名:
白银
日期:
2007.6.11
描述:
建立一个函数,输入数组元素,主函数调用这个数组,输出这个数组中元素的和
*/
#include
#defineN1000
intInPutArray(int*a);
voidmain()
{
intary[N];
intnum;
inti;
intsum=0;
num=InPutArray(ary);
for(i=0;i
{
sum=sum+ary[i];
}
printf("数组元素的和是%d\n",sum);
}
int