自学的一个“成果”。
自学了几十天了,总算弄出个对于我来说相对“大”点的东西来了。虽然它的“成果”是微乎其微的,但对于我来说,也是可以值得浮几白的了。呵呵,刚才弄个附件传了一下,后来自己在机器上一看,不成,因为DOS不支持中文。所以,就发个源码吧,请众位高手指教一二:
#include<stdio.h>
char hello[5][300]={{"*************************************************************\n"},
{"您好,欢迎您来玩这个小游戏。您可以输入年、月、日或者年份、天数\n"
"或者年份,系统为您判定它是一年中的第几天或者那年的几月几日或者\n"
"判定它是闰年还是平年。请不要输入数字以外的字符,那样会造成不必\n"
"要的麻烦。谢谢!\n"},
{" 请输入年、月、日:\n"},
{"请输入年份及天数:\n"},
{"请输入年份:\n"} };
static int yue[2][13]={
{0,31,28,31,30,31,30,31,31,30,31,30,31},
{ 0,31,29,31,30,31,30,31,31,30,31,30,31}} ;
int pr(int n)
{
int c;
c= n%4==0&&n%100!=0|| n%400==0;
return c;
}
int panduan_1(int y,int r,int i)
{
int j,n=0;
for(j=0;j<y;j++)
n+=yue[i][j];
n+=r;
return n;
}
void panduan_2(int n,int r,int i)
{
int j=1,m=1;
while(r>yue[i][j])
{
r-= yue[i][j];
j++;
m++;
}
printf("这是%d年,%d月,%d日\n",n,m,r);
}
void caidan()
{
printf("%s\n\n",hello[0]);
printf("请您作出选择:\n");
printf("1. 输入年、月、日,求它是那年中的哪一天。\n"
"2. 输入年份及天数,求它是那年中的哪月哪日。\n"
"3. 输入年份,求它是平年或者是闰年。\n"
"4. 退出。\n");
printf("请输入选择:\n");
}
int main(void)
{
int n,y,r,i,j;
printf("%s%s\n",hello[0],hello[1]);
do
{
caidan();
scanf("\n%d",&j);
puts(" ");
while(j<1||j>4)
{
printf("您输入的字符非法,请重新选择:\n");
caidan();
scanf("%d",&j);
}
}
while(j<0||j>5);
while(j!=4)
{
switch(j)
{
case 1:printf("请输入年、月、日,空格格开,enter结束输入:\n");
scanf("\n %d %d %d",&n,&y,&r);
puts(" ");
i=pr(n);
j=panduan_1(y,r,i);
printf("它是%d年的第%d天\n",n,j);
break;
case 2:printf("请输入年、天数,空格格开,enter结束输入:\n");
scanf("%d %d",&n,&r);
puts(" ");
i=pr(n);
panduan_2(n,r,i);
break;
case 3:printf("请输入待测试的年份:\n");
scanf("%d",&n);
i=pr(n);
if(i==0)
{
printf("它是平年。\n");
break;
}
if(i==1)
{
printf("它是闰年。\n");
break;
}
}
caidan();
scanf("%d",&j);
}
if(j==4)printf("谢谢您!再见!");
getchar();
}
[[it] 本帖最后由 广陵绝唱 于 2008-3-1 23:47 编辑 [/it]]
把代码该短些 不错,帮你顶一下.....继续加油
共同学习
我把你的代码放在VC++ 6.0上运行通过,程序非常严谨,非常好! 鼓励一下LZ.[em14] 谢谢大家的鼓励,偶会再接再励滴。 哇````不错哦````很少看到让看起来感觉舒服的代码```大概看了一下```不错````至少我的感觉很好```
唯一的缺点是```没有注释````
LZ```继续加油啊!!!!!! 5#
你的VC6.0真的能通过吗?
反正在devc++不可能通过 LS``你的DEV-CPP多少版本的``
我的4.9.9.2``我编译通过了`` 支持一下LZ哈!
我也是学习C语言专业的哈!
还要多多交流和学习哈! 广陵:(因为敬佩你,才搜索了您所有的贴子)
看到您自学了几十天就这么利害,本人也自学了一段时间(看了谭浩强<C程序设计>五六遍),还是云里雾里.就是一个排序的问题上次也问了你N多遍,没人指点的经历真的是非常痛苦的.
敢问您是否收我做个徒弟?(您千万不要谦虚.三人行必有我师)
要不,我哪天加您QQ(能否留下QQ号) 广陵:上次的例子
例:输入三个数,按大小顺序输出
main()
{
float a,b,c,t; /* t是代表什么? */
scanf("%f,%f,%f",&a,&b,&c);
if(a>b)
{t=a;a=b;b=t;} /* 不理解 */
if(a>c)
{t=a;a=c;c=t;} /* 不理解 */
if(b>c)
{t=b;b=c;c=t;} /* 不理解 */
printf("%5.2f,%5.2f,%5.2f",a,b,c);
}
比较大小之冒泡法原理:if a>b真,即交换上下位置,大的在下面,小的在上面,
if a>b 为假,即不交换位置,保持原位置
以上这样理解是否正确? 不错支持下 顺便发 一下我前些天写的作业 也算是鼓励下自己把 广陵 看下我门差距咯 我可是一直拿你做比较的 比较中进步 虽然原理很简单 但是头次写这种类型的 代码
#include<stdio.h>
#include<stdlib.h>
void spt();
void main()
{
char ch; int a,m,b; //1石头,2尖刀,3布
do
{
printf("请输入(1石头,2尖刀,3布)\n");
scanf("%d",&a);
m= rand()%3+1; spt(m);
if(a>=m) b=a-m;
else if(a==1&&m==2) b=m/a;
else b=a%m;
switch (b)
{
case 0: printf("饿,平了继续加油");break;
case 1: printf("啊哦,输了,再接再力");break;
case 2: printf("挖塞 你赢了");break;
}
printf("是否继续'y'or'n'\n");
fflush(stdin);
scanf("%c",&ch);
}while(ch=='y');
}
void spt(int m)
{
switch (m)
{
case 1: printf("他出了石头O");break;
case 2: printf("他出了尖刀O");break;
case 3: printf("他出了布O");break;
}
}
加油咯广陵 有个人等着超你呢 [quote][bo]以下是引用 [un]zjh19840213[/un] 在 2008-4-13 11:23 的发言:[/bo]
广陵:上次的例子
例:输入三个数,按大小顺序输出
main()
{
float a,b,c,t; /* t是代表什么? */
scanf("%f,%f,%f",&a,&b,&c);
if(a>b)
{t=a;a=b;b=t;} /* 不理解 */
if(a>c)
{t=a;a=c;c=t;} /* 不理解 */
if(b>c)
{t=b;b= ... [/quote]
等量带换 的比较排序 也就是比较排序 如果成立 等量带换 我用的是WIN-TC
编译成功但输出的都是乱码怎么回事啊?
~~!!
程序很好 支持下 顺便问下 怎么才能把编写出来的东西改成。TXT让他双击就能运行 呵呵,程序非常不错!LZ继续努力!看了很让人舒服!呵呵! 好好努力.... 这是啥?看不懂 ..
页:
[1]
2
