LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 785|回复: 2

一个简单的体彩自动选号程序(posix c实现)

[复制链接]
发表于 2006-6-22 13:56:10 | 显示全部楼层 |阅读模式
=====
main.c
=====
[php]
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#include <cgi.h>
#include <time.h>

extern void trim(char *str);

int ato36(char *str)
{
  int n = atoi(str);
  return ((n>=1 && n<=36)?n:0);
}

int find(int (*pa)[],int n, int limit) {
  int i;
  for (i=0;i<limit;i++) {
    if ((*pa) == n) {
      return i;
    }
  }
  return -1;
}

void sort(int (*pa)[], int length) {
  int i;
  int j;
  for (j=length;j>1;j--) {
    for (i=0;i<j-1;i++) {
      if ((*pa) > (*pa)[i+1]) {
(*pa) = (*pa) + (*pa)[i+1];
(*pa)[i+1] = (*pa) - (*pa)[i+1];
(*pa) = (*pa) - (*pa)[i+1];
      }
    }
  }
}

int main() {
  char *input = malloc(1024);
  printf("please input your lucky number: ");
  fgets(input, 1024, stdin);
  
  int n;
  while((n = ato36(input))==0) {
    printf("lucky number must between 1 and 36!\n");
    printf("please input your lucky number: ");
    fgets(input, 1024, stdin);
  }
  free(input);
  int result[7];
  result[0] = n;
  int i=1;
  srand(time(0));
  while (i<7) {
    int r = rand()%36+1;
    if (find(&result, r, i) == -1) {
      result = r;
      i++;
    }
  }
  
  sort(&result, 7);
  for (i=0;i<7;i++) {
    printf("%d ", result);
  }
  printf("\n");
  return 0;
}
[/php]

=====
Makefile
=====
[php]
CC = gcc
CFLAGS = -Wall

main : main.c
        $(CC) $(CFLAGS) -o main -lcgi main.c

.PHONY : clean


clean :
        rm -f main
        rm -f *~
[/php]
发表于 2006-6-23 10:46:26 | 显示全部楼层
where is cgi.h?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-23 16:16:22 | 显示全部楼层
cgi.h是libcgi带的头文件。我本来是要用这个库里的trim()函数的。后来又没用上,所以这个include以及后面的extern trim函数声明和编译时的-lcgi完全可以去掉。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表