关于C语言的几个问题
1.给出年、月、日,计算该日是该年的第几天。2.给出年份和天数,求出相应的月、日。3.输入10个学生5门课的成绩,分别求:每个学生的平均分;每门课的平均分;按总成绩的学生...
1.给出年、月、日,计算该日是该年的第几天。
2.给出年份和天数,求出相应的月、日。
3.输入10 个学生5 门课的成绩,分别求:每个学生的平均分;每门课的平均分;按总成
绩的学生排名。
4.应用指针,编写堆栈的基本操作函数。
5.应用指针,编写队列的基本操作函数。
6.编写一程序,从标准输入键入n 行信息,并输出最后m 行信息。
7.编写一程序,能对输入的两个多项式进行加法运算。
8.输入15 个数存放在一个数组中。输入一个数,用二分(折半)查找法判断该数是否在数组中,若是则输出是数组中的第几个元素。
希望高手能帮我解答这几题
最好在一些程序后面有注释
谢谢!! 展开
2.给出年份和天数,求出相应的月、日。
3.输入10 个学生5 门课的成绩,分别求:每个学生的平均分;每门课的平均分;按总成
绩的学生排名。
4.应用指针,编写堆栈的基本操作函数。
5.应用指针,编写队列的基本操作函数。
6.编写一程序,从标准输入键入n 行信息,并输出最后m 行信息。
7.编写一程序,能对输入的两个多项式进行加法运算。
8.输入15 个数存放在一个数组中。输入一个数,用二分(折半)查找法判断该数是否在数组中,若是则输出是数组中的第几个元素。
希望高手能帮我解答这几题
最好在一些程序后面有注释
谢谢!! 展开
2个回答
展开全部
1:
#define START_YEAR 1950
#define END_YEAR 2050
int IsLeapYear(WORD iYear)
{return !(iYear%4)&&(iYear%100) || !(iYear%400);}
LONG CalcDateDiff(WORD iEndYear, WORD iEndMonth, WORD iEndDay,
WORD iStartYear, WORD iStartMonth, WORD iStartDay)
{
WORD monthday[]={0, 31, 59 ,90, 120, 151, 181, 212, 243, 273, 304, 334};
//计算两个年份1月1日之间相差的天数
LONG iDiffDays =(iEndYear - iStartYear)*365;
iDiffDays += (iEndYear-1)/4 - (iStartYear-1)/4;
iDiffDays -= ((iEndYear-1)/100 - (iStartYear-1)/100);
iDiffDays += (iEndYear-1)/400 - (iStartYear-1)/400;
//加上iEndYear年1月1日到iEndMonth月iEndDay日之间的天数
iDiffDays += monthday[iEndMonth-1] +
(IsLeapYear(iEndYear)&&iEndMonth>2? 1: 0);
iDiffDays += iEndDay;
//减去iStartYear年1月1日到iStartMonth月iStartDay日之间的天数
iDiffDays -= (monthday[iStartMonth-1] +
(IsLeapYear(iStartYear)&&iStartMonth>2 ? 1: 0));
iDiffDays -= iStartDay;
return iDiffDays;
}
上面的宏定义可以改成需要的,这是用C++写的,你可以将WORD改成unsigned int,没有什么区别的!
由于时间有限,先回答这一点了。
#define START_YEAR 1950
#define END_YEAR 2050
int IsLeapYear(WORD iYear)
{return !(iYear%4)&&(iYear%100) || !(iYear%400);}
LONG CalcDateDiff(WORD iEndYear, WORD iEndMonth, WORD iEndDay,
WORD iStartYear, WORD iStartMonth, WORD iStartDay)
{
WORD monthday[]={0, 31, 59 ,90, 120, 151, 181, 212, 243, 273, 304, 334};
//计算两个年份1月1日之间相差的天数
LONG iDiffDays =(iEndYear - iStartYear)*365;
iDiffDays += (iEndYear-1)/4 - (iStartYear-1)/4;
iDiffDays -= ((iEndYear-1)/100 - (iStartYear-1)/100);
iDiffDays += (iEndYear-1)/400 - (iStartYear-1)/400;
//加上iEndYear年1月1日到iEndMonth月iEndDay日之间的天数
iDiffDays += monthday[iEndMonth-1] +
(IsLeapYear(iEndYear)&&iEndMonth>2? 1: 0);
iDiffDays += iEndDay;
//减去iStartYear年1月1日到iStartMonth月iStartDay日之间的天数
iDiffDays -= (monthday[iStartMonth-1] +
(IsLeapYear(iStartYear)&&iStartMonth>2 ? 1: 0));
iDiffDays -= iStartDay;
return iDiffDays;
}
上面的宏定义可以改成需要的,这是用C++写的,你可以将WORD改成unsigned int,没有什么区别的!
由于时间有限,先回答这一点了。
展开全部
最后一个的解
#include \"Stdio.h\"
#include \"Conio.h\"
int main(void)
{ int a[15],i,j,n,mid;
for (i=0;i<15;i++)
{ a[i]=i*2;
printf(\"a[%d]=%d\\n\",i,i*2);}
printf(\"please input n=\");
scanf(\"%d\",&n);
mid=(a[0]+a[14])/2 ;
while(mid!=n)
{ if (mid>n) mid=(mid+a[0])/2;
if (mid<n) mid=(mid+a[14])/2; }/*这就使你要的折半法*/
printf(\"find!! %d is right\",mid);
}
#include \"Stdio.h\"
#include \"Conio.h\"
int main(void)
{ int a[15],i,j,n,mid;
for (i=0;i<15;i++)
{ a[i]=i*2;
printf(\"a[%d]=%d\\n\",i,i*2);}
printf(\"please input n=\");
scanf(\"%d\",&n);
mid=(a[0]+a[14])/2 ;
while(mid!=n)
{ if (mid>n) mid=(mid+a[0])/2;
if (mid<n) mid=(mid+a[14])/2; }/*这就使你要的折半法*/
printf(\"find!! %d is right\",mid);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询