C语言程序设计课程设计练习题
《C语言程序设计》练习题
1.输入10个整数,输出其中最大者和最小者。
解析:用数组保存这10个数,从第一个数开始做比较,若后一个数比前一个数小则调换位置。做如此的排序,则第一个数为最大者,最后一个数为最小者。
程序清单:
#include
int main(void)
{
int a[10],i,j,t;
printf("input 10 numbers:\n");
for (i=0;i<10;i++)
scanf("%d",&a[i]);
for (i=0;i<9;i++)
for (j=0;j<9-i;j++)
if (a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
printf("the max is:%d\n",a[9]);
printf("the min is:%d\n",a[0]);
return 0;
}
运行结果:
input 10 numbers:
1 2 3 4 5 6 7 8 66 55
the max is:66
the min is:1
2.判断输入的任意年是否为闰年。
解析:能被4整除而且不能被100整除或者能被400整除的年份是闰年。
程序清单:
#include
int main(void)
{
int a;
printf("请输入一个年份\n");
scanf("%d",&a);
if (a%4==0&&a%100!=0||a%400==0)
printf("是闰年\n");
else
printf("不是闰年\n");
return 0;
}
运行结果:
请输入一个年份
c语言数组最大值最小值
2004
是闰年
3.输入一个年、月、日,输出该日是本年中的第几天。
解析:主函数接收从键盘输入的日期,并调用sum-day和leap函数计算天数。
程序清单:
#include
int main(void)
{
int sum_day(int,int);
int leap(int year);
int year,month,day,days;
printf("input date (year,month,day):");
scanf("%d,%d,%d",&year,&month,&day);
printf("%d/%d/%d",year,month,day);
days=sum_day(month,day);
if (leap(year)&&month>=3)
days=days+1;
printf("is the %dth day in this year.\n",days);
return 0;
}
int sum_day(int month,int day)
{
int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int i;
for (i=1;i<month;i++)< bdsfid="131" p=""></month;i++)<>
day+=day_tab[i];
return (day);
}
int leap(int year)
{
int leap;
leap=year%4==0&&year%100!=0||year%400==0;
return (leap);
}
运行结果:
input date (year,month,day):2012,5,27
2012/5/27is the 148th day in this year.
4.求两个正整数m和n的最大公约数和最小公倍数。
解析:用辗转相除法求之。
程序清单:
#include
int main(void)
{
int n,m,t,p,r;
printf("请输入两个正整数:");
scanf("%d %d",&n,&m);
if (n<m)< bdsfid="155" p=""></m)<>
{
t=n;
n=m;
m=t;
}
p=n*m;
while (m!=0)
{
r=n%m;
n=m;
m=r;
}
printf("最大公约数是:%d\n",n);