| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1077 人关注过本帖
标题:[求助]以下几道题的算法
只看楼主 加入收藏
oヤ偽妳變壞
Rank: 2
等 级:新手上路
威 望:4
帖 子:2251
专家分:0
注 册:2006-3-19
收藏
得分:0 
好好看看书 书上有
2006-03-24 16:05
chlly
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-3-22
收藏
得分:0 

n的阶乘:
main()

{int n,i=1,b=1;
scanf("输入n的值:",&n);

if(i<n)
{b=b*i;

i++;}
printf("输出n的值:",b);
}

2006-03-24 17:48
cyysh0
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-3-25
收藏
得分:0 
   一般讲C语言的书上都有讲哦!
2006-03-25 13:16
左岸星辰
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-1-18
收藏
得分:0 
C语言教科书上有,自己找

用SWITCH语句
2006-03-25 19:56
queemsun
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-2-24
收藏
得分:0 

晚上看到的,一时兴趣就写了3个程序,都在机子上调试过了,应该问题不大,如有问题恳请指正

1.求n的阶乘
#include<stdio.h>
long int jiecheng(int n)/*这个函数用来计算n的阶乘*/
{long int re=1;
int i;
for(i=2;i<=n;i++)
re=re*i;
return re;
}
main()
{int x;
long int result;
printf("\n\nPlease input [n]:");/*输入数值n*/
scanf("%d",&x);
result=jiecheng(x); /*计算*/
printf("\nThe answer is : %ld",result);
getchar();
}


还是听妈妈的话吧,少上点网吧
2006-03-26 00:32
queemsun
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-2-24
收藏
得分:0 

2.求学生成绩 如果不及格 就给+5分 60-70及格 70-90良好 90-100优秀

#include<stdio.h>
#define NUM 10 /*定义学生人数,这个可以自己改*/

/*定义一个结构体记录学生的成绩和信息*/
struct students
{int no;/*学生序号*/
float data; /*学生分数*/
char *inf;/*学生信息*/
};

main()
{struct students std[NUM];
int i,temp;
printf("\n\nPlease input the score of all the students:\n");
printf("ATENTION:Once input a number please press [ENTER] !\n");
for(i=0;i<NUM;i++)
{std[i].no=i+1;
scanf("%f",&(std[i].data)); /*注意:输入一个分数按一次回车*/
}
for(i=0;i<NUM;i++)
{temp=(int)(std[i].data/10);/*temp为整型*/
switch(temp)
{case 10:
case 9:std[i].inf="Excellent";break; /*90=<score<=100优秀*/
case 8:
case 7:std[i].inf="Good";break; /*70=<score<90良好*/
case 6:std[i].inf="Passed";break; /*60=<score<70及格*/
default:std[i].data=std[i].data+5; /*不及格+5分*/
std[i].inf="Incresed 5 points";
break;
}
}
printf("\n\nThe statistica result is:\n");
for(i=0;i<NUM;i++)
{printf("N0.%d--score:%.1f ",std[i].no,std[i].data);
puts(std[i].inf);
}
getchar();
}


还是听妈妈的话吧,少上点网吧
2006-03-26 00:34
queemsun
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-2-24
收藏
得分:0 

3.接受一个日期的输入判断日期的有效性 输出这一天的下一天的日期 输出这一天是当前年的第几天

#include<stdio.h>

int judge_year(int year) /*判断输入的年份是不是闰年*/
{if(year%4==0)
{if(year%100!=0)return 1;
else if(year%400==0)return 1;
else return 0;
}
else return 0;
}
int judge(char *da)/*判断输入的日期是否合法*/
{int y,m,d;
if(strlen(da)!=10)return 0;/*判断输入年份的长度*/
if(da[4]!='-'||da[7]!='-')return 0;/*判断有没有分隔号-*/
/*下面判断输入的为数字*/
if(!((da[0]<=57)&&(da[0]>=48)&&(da[1]<=57)&&(da[1]>=48)
&&(da[2]<=57)&&(da[2]>=48)&&(da[3]<=57)&&(da[3]>=48)
&&(da[5]<=57)&&(da[5]>=48)&&(da[6]<=57)&&(da[6]>=48)
&&(da[8]<=57)&&(da[8]>=48)&&(da[9]<=57)&&(da[9]>=48)))return 0;
/*把输入的字符串转化为10进制数*/
y=(da[0]-48)*1000+(da[1]-48)*100+(da[2]-48)*10+da[3]-48;
m=(da[5]-48)*10+da[6]-48;
d=(da[8]-48)*10+da[9]-48;
/*下面判断大月为1-31号,小月为1-30号,闰年时2月为1-29号,非闰年时为1-28号*/
if((m==1||m==3||m==5||m==7||m==8||m==11)&&(d<=31&&d>=1))return 1;
else if((m==4||m==6||m==9||m==12)&&(d<=30&&d>=1))return 1;
else if(m==2&&judge_year(y)&&d<=29&&d>=1)return 1;
else if(m==2&&(!judge_year(y))&&d<=28&&d>=1)return 1;
else return 0;
}
int judge_again(int y,int m,int d)/*判断年月日的合法性*/
{/*下面判断大月为1-31号,小月为1-30号,闰年时2月为1-29号,非闰年时为1-28号*/
if((m==1||m==3||m==5||m==7||m==8||m==11)&&(d<=31&&d>=1))return 1;
else if((m==4||m==6||m==9||m==12)&&(d<=30&&d>=1))return 1;
else if(m==2&&judge_year(y)&&d<=29&&d>=1)return 1;
else if(m==2&&(!judge_year(y))&&d<=28&&d>=1)return 1;
else return 0;
}

main()
{char c[20];
int yy,mm,dd;
int order1[12]={1,32,60,91,121,152,182,213,244,274,305,335};
/*定义闰年时每个月的第一天是一年中的第多少天*/
int order0[12]={1,32,61,92,122,153,183,214,245,275,306,336};
/*定义非闰年时每个月的第一天是一年中的第多少天*/
printf("\n\nPlease input the date(xxxx-xx-xx):\n");
gets(c);
if(judge(c))/*若输入的日期合法*/
{yy=(c[0]-48)*1000+(c[1]-48)*100+(c[2]-48)*10+c[3]-48;
mm=(c[5]-48)*10+c[6]-48;
dd=(c[8]-48)*10+c[9]-48;
if(judge_again(yy,mm,dd+1))
{printf("\nThe next day is:%4d-%2d-%2d",yy,mm,dd+1);
if(judge_year(yy))printf("\nIt is the %dth day of year %d.",order1[mm]+dd,yy);
else if(!judge_year(yy))printf("\nIt is the %dth day of year %d.",order0[mm]+dd,yy);
}
else if(!judge_again(yy,mm,dd+1)&&judge_again(yy,mm+1,dd))/*若当天为月末则下一天应该是月数+1,而天数应为1号*/
{printf("\nThe next day is: %4d-%2d-01",yy,mm+1);
if(judge_year(yy))printf("\nIt is the %dth day of year %d.",order1[mm]+dd,yy);
else if(!judge_year(yy))printf("\nIt is the %dth day of year %d.",order0[mm]+dd,yy);
}
else if(!judge_again(yy,mm,dd+1)&&!judge_again(yy,mm+1,dd))
{printf("\nThe next day is: %4d-01-01",yy+1);
printf("\nIt is the 1th day of year %d.",yy+1);
}
}
else {printf("Input Error!");exit(0);}
getchar();
}



还是听妈妈的话吧,少上点网吧
2006-03-26 00:35
queemsun
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-2-24
收藏
得分:0 
我只是按你的要求做题,至于算法我没有仔细研究,所以可能有的地方烦琐
水平有限哦

还是听妈妈的话吧,少上点网吧
2006-03-26 00:37
快速回复:[求助]以下几道题的算法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025321 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved