求C++或者c语言比较好的给编个程序。。最好是C++
程序就是“随便输入个年月日能够正确输出那天是星期几(还要考虑闰年之类的)”,求救啊。。希望程序很精简,因为我们老师还要我们照着程序画一个类似流程图的东东,,如果程序复杂我...
程序就是“随便输入个年月日能够正确输出那天是星期几(还要考虑闰年之类的)”,求救啊。。希望程序很精简,因为我们老师还要我们照着程序画一个类似流程图的东东,,如果程序复杂我画起来就很难了。。。。请大家帮忙
展开
展开全部
精简的。。。
#include<stdio.h>
void main()
{
int d[12]={31,28,31,30,31,30,31,31,30,31,30,31};//平年每个月的天数
char week[7][3]={"日","一","二","三","四","五","六"};
int day,month,year,i;
long sum=0;//sum为从公元1年1月1日至今的天数
printf("请输入年月日,以空格隔开\n");
scanf("%d %d %d",&year,&month,&day);
if ((year%4==0&&year%100!=0)||(year%400==0))d[1]++;//闰年二月为29天
if (year<1||month<1||month>12||day<1||day>d[month-1])printf("\n日期输入错误!\n");
else
{
for(i=0;i<month-1;i++)sum+=d[i];//求前month-1个月总天数
sum+=day;//加上month这个月已经过完的天数
sum+=(year-1)*365+((year-1)/4-(year-1)/100+(year-1)/400);//加上前year-1年总天数
printf("星期%s\n",week[sum%7]);
}
}
#include<stdio.h>
void main()
{
int d[12]={31,28,31,30,31,30,31,31,30,31,30,31};//平年每个月的天数
char week[7][3]={"日","一","二","三","四","五","六"};
int day,month,year,i;
long sum=0;//sum为从公元1年1月1日至今的天数
printf("请输入年月日,以空格隔开\n");
scanf("%d %d %d",&year,&month,&day);
if ((year%4==0&&year%100!=0)||(year%400==0))d[1]++;//闰年二月为29天
if (year<1||month<1||month>12||day<1||day>d[month-1])printf("\n日期输入错误!\n");
else
{
for(i=0;i<month-1;i++)sum+=d[i];//求前month-1个月总天数
sum+=day;//加上month这个月已经过完的天数
sum+=(year-1)*365+((year-1)/4-(year-1)/100+(year-1)/400);//加上前year-1年总天数
printf("星期%s\n",week[sum%7]);
}
}
展开全部
给分哦,以下代码复制,在VC6.0++使用。
#include<stdio.h>
#include<stdlib.h>
int isLeapYear(int year)
{
if( ( year%4==0 && year%100!=0) || (year%100==0) && ( year%3200!=0 ) )
return 1;
else return 0;
}
int main()
{
loop2:
system("cls");
int a[12]={1,0,1,0,1,0,1,1,0,1,0,1};
int weekDay,c,y,temp;
int year,month,day;
char k;
printf("请按年月日格式输入(如1949 10 1): ");
loop: scanf("%d%d%d",&year,&month,&day);
//判断输入的年月日是否正确
if(year<0)
{
printf("年份不能为负数!请重输: ");
goto loop;
}
else if(month<1||month>12)
{
printf("输入月份只能在1-12之间!请重输: ");
goto loop;
}
else if(day<1||day>31)
{
printf("日的最大范围只在1-31之间!请重输: ");
goto loop;
}
else if(month==2 && day>29)
{
printf("二月没有%d日!请重输: ",day);
goto loop;
}
else if(month==2)
{
if(!isLeapYear(year) && day==29)
{
printf("该年不是闰年,二月没有29日!请重输: ");
goto loop;
}
}
else if(!a[month-1] && day==31)
{
printf("%d月是小月,没有31日!请重输: ",month);
goto loop;
}
//蔡勒(Zeller)公式:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
loop3: if( month==1 || month==2)
{
month+=12;
year--;
}
y = year % 100;
c = year / 100 ;
temp = y + y/4 + c/4 - 2*c + 26*(month+1)/10 + day - 1;
while(temp<0)
{
temp+=7;
}
weekDay = temp%7;
printf("\n\n那天正逢星期");
switch(weekDay)
{
case 0: printf("日");break;
case 1: printf("一");break;
case 2: printf("二");break;
case 3: printf("三");break;
case 4: printf("四");break;
case 5: printf("五");break;
case 6: printf("六");break;
}
printf("\n\n\n");
printf("退出程序吗?(y/n)\n\n");
do k=getchar();
while(k!='y'&&k!='n'&&k!='Y'&&k!='N');
if(k=='y'||k=='Y') ;
else goto loop2;
}
#include<stdio.h>
#include<stdlib.h>
int isLeapYear(int year)
{
if( ( year%4==0 && year%100!=0) || (year%100==0) && ( year%3200!=0 ) )
return 1;
else return 0;
}
int main()
{
loop2:
system("cls");
int a[12]={1,0,1,0,1,0,1,1,0,1,0,1};
int weekDay,c,y,temp;
int year,month,day;
char k;
printf("请按年月日格式输入(如1949 10 1): ");
loop: scanf("%d%d%d",&year,&month,&day);
//判断输入的年月日是否正确
if(year<0)
{
printf("年份不能为负数!请重输: ");
goto loop;
}
else if(month<1||month>12)
{
printf("输入月份只能在1-12之间!请重输: ");
goto loop;
}
else if(day<1||day>31)
{
printf("日的最大范围只在1-31之间!请重输: ");
goto loop;
}
else if(month==2 && day>29)
{
printf("二月没有%d日!请重输: ",day);
goto loop;
}
else if(month==2)
{
if(!isLeapYear(year) && day==29)
{
printf("该年不是闰年,二月没有29日!请重输: ");
goto loop;
}
}
else if(!a[month-1] && day==31)
{
printf("%d月是小月,没有31日!请重输: ",month);
goto loop;
}
//蔡勒(Zeller)公式:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
loop3: if( month==1 || month==2)
{
month+=12;
year--;
}
y = year % 100;
c = year / 100 ;
temp = y + y/4 + c/4 - 2*c + 26*(month+1)/10 + day - 1;
while(temp<0)
{
temp+=7;
}
weekDay = temp%7;
printf("\n\n那天正逢星期");
switch(weekDay)
{
case 0: printf("日");break;
case 1: printf("一");break;
case 2: printf("二");break;
case 3: printf("三");break;
case 4: printf("四");break;
case 5: printf("五");break;
case 6: printf("六");break;
}
printf("\n\n\n");
printf("退出程序吗?(y/n)\n\n");
do k=getchar();
while(k!='y'&&k!='n'&&k!='Y'&&k!='N');
if(k=='y'||k=='Y') ;
else goto loop2;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-04-15
展开全部
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
main()
{
//创建套接字
int serverSocket= socket(AF_INET,SOCK_STREAM,0);
struct sockaddr_in server_addr;
struct sockaddr_in clientAddr;
int addr_len = sizeof(clientAddr);
int client;
char buffer[200];
//创建地址
bzero(&server_addr,sizeof(server_addr));
server_addr.sin_family =AF_INET;
server_addr.sin_port = htons(5555);
server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
//绑定
bind(serverSocket,(struct sockaddr *)&server_addr,sizeof(server_addr));
//帧听
listen(serverSocket,5);
printf("客户端发过来的 :\n");
//接收
client=accept(serverSocket,(sockaddr *)&clientAddr,(socklen_t*)&addr_len);
printf("客户端发过来的 :\n");
while(1)
{
if(recv(client,buffer,sizeof(buffer),0)>0)
printf("客户端发过来的 : %s\n",buffer);
}
return 0;
}
//客户端
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
main()
{
struct sockaddr_in serverAddr;
int clientSocket=socket(AF_INET,SOCK_STREAM,0);
char sendbuf[200];
//创建地址信息
serverAddr.sin_family=AF_INET;
serverAddr.sin_port=htons(5555);
serverAddr.sin_addr.s_addr=inet_addr("127.0.0.1");
//连接服务器
connect(clientSocket,(sockaddr*)&serverAddr,sizeof(serverAddr));
printf("连接目标主机中.....\n连接完成......\n");
//
while(1)
{
printf("请输入发给服务器的数据 : ");
scanf("%s",sendbuf);
//strcmp函数作用,比较两个东东(按ASCII值大小相比较),相同就==0。
if(strcmp(sendbuf,"x")==0)
break;
send(clientSocket,sendbuf,sizeof(sendbuf),0);
}
close(clientSocket);
return 0;
}
另外,站长团上有产品团购,便宜有保证
#include <fcntl.h>
#include <errno.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
main()
{
//创建套接字
int serverSocket= socket(AF_INET,SOCK_STREAM,0);
struct sockaddr_in server_addr;
struct sockaddr_in clientAddr;
int addr_len = sizeof(clientAddr);
int client;
char buffer[200];
//创建地址
bzero(&server_addr,sizeof(server_addr));
server_addr.sin_family =AF_INET;
server_addr.sin_port = htons(5555);
server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
//绑定
bind(serverSocket,(struct sockaddr *)&server_addr,sizeof(server_addr));
//帧听
listen(serverSocket,5);
printf("客户端发过来的 :\n");
//接收
client=accept(serverSocket,(sockaddr *)&clientAddr,(socklen_t*)&addr_len);
printf("客户端发过来的 :\n");
while(1)
{
if(recv(client,buffer,sizeof(buffer),0)>0)
printf("客户端发过来的 : %s\n",buffer);
}
return 0;
}
//客户端
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
main()
{
struct sockaddr_in serverAddr;
int clientSocket=socket(AF_INET,SOCK_STREAM,0);
char sendbuf[200];
//创建地址信息
serverAddr.sin_family=AF_INET;
serverAddr.sin_port=htons(5555);
serverAddr.sin_addr.s_addr=inet_addr("127.0.0.1");
//连接服务器
connect(clientSocket,(sockaddr*)&serverAddr,sizeof(serverAddr));
printf("连接目标主机中.....\n连接完成......\n");
//
while(1)
{
printf("请输入发给服务器的数据 : ");
scanf("%s",sendbuf);
//strcmp函数作用,比较两个东东(按ASCII值大小相比较),相同就==0。
if(strcmp(sendbuf,"x")==0)
break;
send(clientSocket,sendbuf,sizeof(sendbuf),0);
}
close(clientSocket);
return 0;
}
另外,站长团上有产品团购,便宜有保证
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C 语言课本上面有这个程序的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询