c语言小代码一直说timeout。输入年月,输出天数。跪求大神给看看怎么改
这是我在ACM实验试题中通过的程序。
你好像没考虑年数对天数的影响。
#include stdio.h
int main()
{
int y, m, d, r, sum;
while(scanf(“%d/%d/%d”, y, m, d) !=EOF)
{
switch(m)
{
case 1: sum=0;break;
case 2: sum=31;break;
case 3: sum=59;break;
case 4: sum=90;break;
case 5: sum=120;break;
case 6: sum=151;break;
case 7: sum=181;break;
case 8: sum=212;break;
case 9: sum=243;break;
case 10: sum=273;break;
case 11: sum=304;break;
case 12: sum=334;break;
default: printf(“Data error!”);break;
}
if((y%400==0) || (y%4==0y%100!=0)) r=1;
else r=0;
if(m2) sum = sum+d+r;
else sum = sum+d;
printf(“%d\n”,sum);
}
return 0;
}
C语言,计时器
秒表计时器的代码
#include
stdio.h
#include
conio.h
#include
windows.h
#include
stdlib.h
struct
tm
//定义时间结构体,包括时分秒和10毫秒
{
int
hours,minutes,seconds;
int
hscd;
}time,tmp,total;
//time用以计时显示,tmp用以存储上一阶段时间,total记总时间
int
cnt;
FILE*
fout;
//每次调用update函数,相当于时间过了10ms
void
update(struct
tm
*t)
{
(*t).hscd++;
//10ms单位时间加1
cnt++;
if
((*t).hscd==100)
//计时满1s,进位
{
(*t).hscd=0;
(*t).seconds++;
}
if
((*t).seconds==60)
//计时满一分,进位
{
(*t).seconds=0;
(*t).minutes++;
}
if
((*t).minutes==60)
//计时满一小时,进位
{
(*t).minutes=0;
(*t).hours++;
}
if((*t).hours==24)
(*t).hours=0;
//delay();
Sleep(10);
//Sleep是windows提供的函数,作用是暂停程序,单位毫秒,所以此处暂停10ms
}
void
display(struct
tm
*t)
{
//此处输出计时结果,\r为回车不换行,既一直在同一行更新时间
printf(“%d:”,(*t).hours);
printf(“%d:”,(*t).minutes);
printf(“%d:”,(*t).seconds);
printf(“%d\r”,(*t).hscd);
//printf(“Now,
press
‘e’
key
to
stop
the
clock…”);
}
void
time_init()
//初始化时间
{
time.hours=time.minutes=time.seconds=time.hscd=0;
}
void
get_total()
//计算总时间
{
total.hscd
=
cnt
%
100;
cnt
/=
100;
total.seconds
=
cnt
%
60;
cnt
/=
60;
total.minutes
=
cnt
%
60;
cnt
/=
60;
total.hours
=
cnt;
}
int
main()
{
char
m;
time_init();
cnt
=
0;
fout
=
fopen(“timeout.txt”,”w”);
printf(“按回车键开始计时!\n”);
while(1)
{
m
=
getch();
if(m
!=
‘\r’)
//读入一个输入,如果是回车,那么跳出次循环
printf(“输入错误,仅能输入回车键!\n”);
else
break;
}
printf(“已经开始计时,但是你可以按回车键以分段计时!\n”);
while(1)
{
if(kbhit())
//此处检查是否有键盘输入
{
m=getch();
if(m
==
‘\r’)
//如果等于回车,那么计时结束,跳出循环
break;
else
if(m
==
‘
‘)
//如果等于空格,显示此次计时,初始化计时器
{
tmp
=
time;
//记录上一段计时器结果
fprintf(fout,”%d:%d:%d:%d\n”,tmp.hours,tmp.minutes,tmp.seconds,tmp.hscd);
//写入文件
time_init();
printf(“\n”);
}
else
{
printf(“输入错误,仅支持输入回车键或者空格键!\n”);
}
}
update(time);
//更新计时器
display(time);
//显示计时器时间
}
tmp
=
time;
//输出最后一次即使结果,写入文件
fprintf(fout,”%d:%d:%d:%d\n”,tmp.hours,tmp.minutes,tmp.seconds,tmp.hscd);
get_total();
//计算总的时间,显示,并写入文件
printf(“\n总时间:%d:%d:%d:%d\n”,total.hours,total.minutes,total.seconds,total.hscd);
fprintf(fout,”统计时间:%d:%d:%d:%d\n”,total.hours,total.minutes,total.seconds,total.hscd);
fclose(fout);
printf(“已经保存到当前目录下的timeout.txt文件中按任意键结束!”);
getch();
}
如何用C语言编程,使出现一个界面几秒后自动跳到另一个界面;求高手解答。
你的界面指什么界面???控制台还是应用程序界面??
给个代码你参考下吧,是秒表计时器程序的代码
#include stdio.h
#include conio.h
#include windows.h
#include stdlib.h
struct tm //定义时间结构体,包括时分秒和10毫秒
{
int hours,minutes,seconds;
int hscd;
}time,tmp,total; //time用以计时显示,tmp用以存储上一阶段时间,total记总时间
int cnt;
FILE* fout;
//每次调用update函数,相当于时间过了10ms
void update(struct tm *t)
{
(*t).hscd++; //10ms单位时间加1
cnt++;
if ((*t).hscd==100) //计时满1s,进位
{
(*t).hscd=0;
(*t).seconds++;
}
if ((*t).seconds==60) //计时满一分,进位
{
(*t).seconds=0;
(*t).minutes++;
}
if ((*t).minutes==60) //计时满一小时,进位
{
(*t).minutes=0;
(*t).hours++;
}
if((*t).hours==24) (*t).hours=0;
//delay();
Sleep(10); //Sleep是windows提供的函数,作用是暂停程序,单位毫秒,所以此处暂停10ms
}
void display(struct tm *t)
{
//此处输出计时结果,\r为回车不换行,既一直在同一行更新时间
printf(“%d:”,(*t).hours);
printf(“%d:”,(*t).minutes);
printf(“%d:”,(*t).seconds);
printf(“%d\r”,(*t).hscd);
//printf(“Now, press ‘e’ key to stop the clock…”);
}
void time_init() //初始化时间
{
time.hours=time.minutes=time.seconds=time.hscd=0;
}
void get_total() //计算总时间
{
total.hscd = cnt % 100;
cnt /= 100;
total.seconds = cnt % 60;
cnt /= 60;
total.minutes = cnt % 60;
cnt /= 60;
total.hours = cnt;
}
int main()
{
char m;
time_init();
cnt = 0;
fout = fopen(“timeout.txt”,”w”);
printf(“按回车键开始计时!\n”);
while(1)
{
m = getch();
if(m != ‘\r’) //读入一个输入,如果是回车,那么跳出次循环
printf(“输入错误,仅能输入回车键!\n”);
else
break;
}
printf(“已经开始计时,但是你可以按回车键以分段计时!\n”);
while(1)
{
if(kbhit()) //此处检查是否有键盘输入
{
m=getch();
if(m == ‘\r’) //如果等于回车,那么计时结束,跳出循环
break;
else if(m == ‘ ‘) //如果等于空格,显示此次计时,初始化计时器
{
tmp = time; //记录上一段计时器结果
fprintf(fout,”%d:%d:%d:%d\n”,tmp.hours,tmp.minutes,tmp.seconds,tmp.hscd); //写入文件
time_init();
printf(“\n”);
}
else
{
printf(“输入错误,仅支持输入回车键或者空格键!\n”);
}
}
update(time); //更新计时器
display(time); //显示计时器时间
}
tmp = time; //输出最后一次即使结果,写入文件
fprintf(fout,”%d:%d:%d:%d\n”,tmp.hours,tmp.minutes,tmp.seconds,tmp.hscd);
get_total(); //计算总的时间,显示,并写入文件
printf(“\n总时间:%d:%d:%d:%d\n”,total.hours,total.minutes,total.seconds,total.hscd);
fprintf(fout,”统计时间:%d:%d:%d:%d\n”,total.hours,total.minutes,total.seconds,total.hscd);
fclose(fout);
printf(“已经保存到当前目录下的timeout.txt文件中按任意键结束!”);
getch();
}
C语言如何控制文字输出速度?
显示一行是和快的,至少肉眼感觉是这样的。
在显示完一行后,适当延时(延时方法可用循环语句来完成,时长通过改变循环终值来控制),再输出下一行。
C语言 struct timeval timeout = ..; 是什么意思啊?
您可能都知道wu-ftp的格式化漏洞吧,呵呵,网络上的破坏程序多的是。有了破坏程序,可是怎么找目标一试身手呢。因为我的工作平台是linux,所以扫描程序丰富程度比起windows下的逊多了。看着那些简单操作的软件,口水都流下来了(太夸张了!@~!#@!#)。所以,我只好自己动手写了一个扫描匿名ftp服务器的扫描器,是一个多线程的程序(不过扫描部分是从书上copy来的,可还是费了我不少工夫,总算学会了多线程编程)。可惜,它很傻,不能分辨是微软的ftp还是unix的ftp。哎,我现在比较忙,先写出来用了在说,等以后有时间我在加些像流光那样的ftp简单探测功能吧。以下是源程序。参数s是开始的ip,参数e是结束的ip,参数o是扫描结果存放的文件,如果不加的话,默认的文件名是host。因为比较懒,所以没有写ip的转换函数,也就是大家只能写数字ip了。不过大家有源码,可以自己加吗。顺便附加一个在上找到的wu-ftp的exploit程序。针对linux(版本=6.2)和freebsd的。
eg. #./scanftp -s 127.0.0.1 -e 127.0.65.255 -o host1
#includepthread.h
#includesys/time.h
#includesys/types.h
#includesys/socket.h
#includenetinet/in.h
#includearpa/inet.h
#includeunistd.h
#includefcntl.h
#includestring.h
#includeerrno.h
#includestdio.h
#includestdlib.h
#includestring.h
#define BUF_LEN 255
#define THREADNUM 100 /*你想开的线程数,我的猫是56k的,memory是64,cpu比较惨超频的赛扬450,我开*/ /*100个线程时,cpu已全力运行,memory还有的剩,如果大家的机器比较爽,带宽*/ /* 较大,那就可以多开了。视你自己的情况而定了。*/
#define NORM \”\\033[0m\”
#define GREEN \”\\033[32m\”
#define RED \”\\033[31m\”
#define BLUE \”\\033[34m\”
#define BROWN \”\\033[33m\”
#define time 10
extern int errno;
uint32_t startip,endip,k;
pthread_t thread[THREADNUM];
pthread_mutex_t mut=PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t file=PTHREAD_MUTEX_INITIALIZER;
char *filename=\”host\”;
void usage(char *progname)
{
printf(BLUE \” Scananonymousftp is beta 1.0\\n\\n\”
RED \” 2001 by Tang Jing biao and cpu\\n\\n\”
GREEN \”usage: \” NORM \”%s [-s startip] [-e endip] [-o filename] [-h help]\\n\\n\”,
progname
);
exit(-1);
}
void filewrite(char *name,char *ip)
{
char *p1,*p2,*p3;
FILE *fd;
int len1,len2;
p1=name;
p2=ip;
p3=\”\\n\”;
printf(\”Ip is written!\\n\”);
if((fd=fopen(p1,\”r+t\”))==NULL)
{
printf(\”Reading file was failed!\\n\”);
exit(0);
}
fseek(fd,0L,SEEK_END);
len1=strlen(p2);
len2=strlen(p3);
fwrite(p2,sizeof(char),len1,fd);
fwrite(p3,sizeof(char),len2,fd);
if(fclose(fd))
printf(\”The file is not closed!\\n\”);
}
void *scanhost()
{
struct sockaddr_in saddr;
int sockfd,flags,len,error,status,temp;
char buf[BUF_LEN],*hostip;
struct timeval timeout=;
fd_set wmask,rmask;
saddr.sin_port=htons(21);
saddr.sin_family=AF_INET;
pthread_mutex_lock(mut);
while(k=endip)
{
saddr.sin_addr.s_addr=htonl((uint32_t)k);
pthread_mutex_unlock(mut);
if((sockfd=socket(AF_INET,SOCK_STREAM,0))0)
{
printf(\”Socket error!\\n\”);
exit(-1);
}
printf(\”scanthread%d is scanning…%s at %d\\n\”,pthread_self(),inet_ntoa(saddr.sin_addr),sockfd);
fflush(stdout);
FD_ZERO(wmask);
FD_SET(sockfd,wmask);
rmask=wmask;
timeout.tv_sec=time;
timeout.tv_usec=0;
status=fcntl(sockfd,F_GETFL);
fcntl(sockfd,F_SETFL,status|O_NONBLOCK);
temp=connect(sockfd,(struct sockaddr *)saddr,sizeof(saddr));
if(temp0)
{
flags=select(sockfd+1,rmask,wmask,(fd_set *)NULL,timeout);
if(flags=0)
{
close(sockfd);
pthread_mutex_lock(mut);
k++;
continue;
}
if(FD_ISSET(sockfd,rmask)||FD_ISSET(sockfd,wmask))
{
if(FD_ISSET(sockfd,rmask)FD_ISSET(sockfd,wmask))
{
len=sizeof(error);
temp=getsockopt(sockfd,SOL_SOCKET,SO_ERROR,error,len);
if((temp!=0)||(error!=0))
{
close(sockfd);
pthread_mutex_lock(mut);
k++;
continue;
}
}
}
}
可能都知道wu-ftp的格式化漏洞吧,呵呵,网络上的破坏程序多的是。有了破坏程序,可是怎么找目标一试身手呢。因为我的工作平台是linux,所以扫描程序丰富程度比起windows下的逊多了。看着那些简单操作的软件,口水都流下来了(太夸张了!@~!#@!#)。所以,我只好自己动手写了一个扫描匿名ftp服务器的扫描器,是一个多线程的程序(不过扫描部分是从书上copy来的,可还是费了我不少工夫,总算学会了多线程编程)。可惜,它很傻,不能分辨是微软的ftp还是unix的ftp。哎,我现在比较忙,先写出来用了在说,等以后有时间我在加些像流光那样的ftp简单探测功能吧。以下是源程序。参数s是开始的ip,参数e是结束的ip,参数o是扫描结果存放的文件,如果不加的话,默认的文件名是host。因为比较懒,所以没有写ip的转换函数,也就是大家只能写数字ip了。不过大家有源码,可以自己加吗。顺便附加一个在上找到的wu-ftp的exploit程序。针对linux(版本=6.2)和freebsd的。
eg. #./scanftp -s 127.0.0.1 -e 127.0.65.255 -o host1
#includepthread.h
#includesys/time.h
#includesys/types.h
#includesys/socket.h
#includenetinet/in.h
#includearpa/inet.h
#includeunistd.h
#includefcntl.h
#includestring.h
#includeerrno.h
#includestdio.h
#includestdlib.h
#includestring.h
#define BUF_LEN 255
#define THREADNUM 100 /*你想开的线程数,我的猫是56k的,memory是64,cpu比较惨超频的赛扬450,我开*/ /*100个线程时,cpu已全力运行,memory还有的剩,如果大家的机器比较爽,带宽*/ /* 较大,那就可以多开了。视你自己的情况而定了。*/
#define NORM \”\\033[0m\”
#define GREEN \”\\033[32m\”
#define RED \”\\033[31m\”
#define BLUE \”\\033[34m\”
#define BROWN \”\\033[33m\”
#define time 10
extern int errno;
uint32_t startip,endip,k;
pthread_t thread[THREADNUM];
pthread_mutex_t mut=PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t file=PTHREAD_MUTEX_INITIALIZER;
char *filename=\”host\”;
void usage(char *progname)
{
printf(BLUE \” Scananonymousftp is beta 1.0\\n\\n\”
RED \” 2001 by Tang Jing biao and cpu\\n\\n\”
GREEN \”usage: \” NORM \”%s [-s startip] [-e endip] [-o filename] [-h help]\\n\\n\”,
progname
);
exit(-1);
}
void filewrite(char *name,char *ip)
{
char *p1,*p2,*p3;
FILE *fd;
int len1,len2;
p1=name;
p2=ip;
p3=\”\\n\”;
printf(\”Ip is written!\\n\”);
if((fd=fopen(p1,\”r+t\”))==NULL)
{
printf(\”Reading file was failed!\\n\”);
exit(0);
}
fseek(fd,0L,SEEK_END);
len1=strlen(p2);
len2=strlen(p3);
fwrite(p2,sizeof(char),len1,fd);
fwrite(p3,sizeof(char),len2,fd);
if(fclose(fd))
printf(\”The file is not closed!\\n\”);
}
void *scanhost()
{
struct sockaddr_in saddr;
int sockfd,flags,len,error,status,temp;
char buf[BUF_LEN],*hostip;
struct timeval timeout=;
fd_set wmask,rmask;
saddr.sin_port=htons(21);
saddr.sin_family=AF_INET;
pthread_mutex_lock(mut);
while(k=endip)
{
saddr.sin_addr.s_addr=htonl((uint32_t)k);
pthread_mutex_unlock(mut);
if((sockfd=socket(AF_INET,SOCK_STREAM,0))0)
{
printf(\”Socket error!\\n\”);
exit(-1);
}
printf(\”scanthread%d is scanning…%s at %d\\n\”,pthread_self(),inet_ntoa(saddr.sin_addr),sockfd);
fflush(stdout);
FD_ZERO(wmask);
FD_SET(sockfd,wmask);
rmask=wmask;
timeout.tv_sec=time;
timeout.tv_usec=0;
status=fcntl(sockfd,F_GETFL);
fcntl(sockfd,F_SETFL,status|O_NONBLOCK);
temp=connect(sockfd,(struct sockaddr *)saddr,sizeof(saddr));
if(temp0)
{
flags=select(sockfd+1,rmask,wmask,(fd_set *)NULL,timeout);
if(flags=0)
{
close(sockfd);
pthread_mutex_lock(mut);
k++;
continue;
}
if(FD_ISSET(sockfd,rmask)||FD_ISSET(sockfd,wmask))
{
if(FD_ISSET(sockfd,rmask)FD_ISSET(sockfd,wmask))
{
len=sizeof(error);
temp=getsockopt(sockfd,SOL_SOCKET,SO_ERROR,error,len);
if((temp!=0)||(error!=0))
{
close(sockfd);
pthread_mutex_lock(mut);
k++;
continue;
}
}
}
}
bzero(buf,BUF_LEN);
fcntl(sockfd,F_SETFL,status);
if((len=read(sockfd,buf,BUF_LEN))=0)
{
if(strncmp(buf,\”220\”,3)==0)
{
write(sockfd,\”user anonymous\\n\”,15);
if((len=read(sockfd,buf,BUF_LEN))=0)
{
if(strncmp(buf,\”331\”,3)==0)
{
write(sockfd,\”pass shit@\\n\”,11);
if((len=read(sockfd,buf,BUF_LEN))=0)
{
if(strncmp(buf,\”230\”,3)==0)
{
printf(\”%d HaHa! find ! Ip is %s\\n\”,pthread_self(),inet_ntoa(saddr.sin_addr));
hostip=inet_ntoa(saddr.sin_addr);
pthread_mutex_lock(file);
filewrite(filename,hostip);
pthread_mutex_unlock(file);
fflush(stdout);
close(sockfd);
}
}
}
}
}
}
close(sockfd);
pthread_mutex_lock(mut);
k++;
}
pthread_mutex_unlock(mut);
pthread_exit(NULL);
}
int create_thread()
{
int i=0,temp;
for(i=0;iTHREADNUM;i++)
{
pthread_mutex_lock(mut);
if(kendip)
{
pthread_mutex_unlock(mut);
break;
}
pthread_mutex_unlock(mut);
pthread_create(thread[i],NULL,scanhost,NULL);
pthread_mutex_lock(mut);
k++;
pthread_mutex_unlock(mut);
}
temp=i;
for(i=0;itemp;i++)
{
pthread_join(thread[i],NULL);
printf(\”scanthread %d is closed!\\n\”,i);
}
return i;
}
int main(int argc,char *argv[])
{
char c ;
FILE *fdmain;
int thnum;
if(argc2)
{
printf(\”Please input parameter! Type -h\\n\”);
exit(0);
}
while ((c = getopt(argc, argv, \”s:e:o:h\”)) != EOF)
{
switch (c)
{
case \’s\’:
startip=ntohl(inet_addr(optarg));
break;
case \’e\’:
endip=ntohl(inet_addr(optarg));
break;
case \’o\’:
filename = optarg;
break;
case \’h\’:
usage(argv[0]);
break;
default:
break;
}
}
if(startipendip)
{
k=startip;
startip=endip;
endip=k;
}
k=startip;
if((fdmain=fopen(filename,\”w+t\”))==NULL)
{
printf(\”The file was not opened!!!!!\\n\”);
exit(0);
}
fclose(fdmain);
printf(\”The main process created %d thread \\n\”,THREADNUM);
pthread_mutex_init(mut,NULL);
pthread_mutex_init(file,NULL);
thnum=create_thread();
printf(\”The main process is closed.\\n\”);
}
希望被采纳
祝您好运!~
单片机里面的C语言··不懂timecount++是什么意思?timecount–是什么意思?
timeout++ 意思是 timeout = timeout +1 意思是这个变量自加1;
–同上;
timeout==0 返回一个bool值,如果两者相等返回真或者非0.不相等返回假或者0