69,371
社区成员
发帖
与我相关
我的任务
分享
#include "define.h"
char er[MAX_AR];
unsigned long number;
extern void Print(void);
extern void Delete(unsigned long number);
int main(void)
{
int n;
for(n=0;n<MAX_AR;n++)
er[n]=255;
for(number=2;number<=MAX_NU;number++)
if(test_bit(er,number)==TRUE)
Delete(number);
Print();
return 0;
}
#include "64.h"
#include "define.h"
#include <stdio.h>
extern char er[MAX_AR];
extern unsigned long number;
extern int test_bit(char bit_array[],unsigned long bit_number);
extern void clear_bit(char bit_array[],unsigned long bit_number);
void Print(void)
{
for(number=2;number<=MAX_NU;number++)
if(test_bit(er,number)==TRUE)
printf("%lu\n",number);
}
void Delete(unsigned long number)
{
for(number+=number;number<=MAX_NU;number++)
clear_bit(er,number);
}
#include "54.h"
#include "define.h"
void set_bit(char bit_array[],unsigned long bit_number)
{
bit_array[char_offset(bit_number)]|=TRUE<<bit_offset(bit_number);
}
void clear_bit(char bit_array[],unsigned long bit_number)
{
bit_array[char_offset(bit_number)]&=FALSE<<bit_offset(bit_number);
}
void assign_bit(char bit_array[],unsigned long bit_number,
int value)
{
if(value==FALSE)
bit_array[char_offset(bit_number)]&=FALSE<<bit_offset(bit_number);
else
bit_array[char_offset(bit_number)]|=TRUE<<bit_offset(bit_number);
}
int test_bit(char bit_array[],unsigned long bit_number)
{
if(bit_array[char_offset(bit_number)]>>bit_offset(bit_number)
%2==TRUE)
return TRUE;
else
return FALSE;
}
unsigned char_offset(unsigned long bit_number)
{
return bit_number/CHAR_MAX;
}
unsigned bit_offset(unsigned long bit_number)
{
return bit_number%CHAR_MAX;
}
void Print(void);
void Delete(unsigned long number);
void set_bit(char bit_array[],unsigned long bit_number);
void clear_bit(char bit_array[],unsigned long bit_number);
void assign_bit(char bit_array[],unsigned long bit_number,
int value);
int test_bit(char bit_array[],unsigned long bit_number);
unsigned char_offset(unsigned long bit_number);
unsigned bit_offset(unsigned long bit_number);
#ifndef MAX_AR
#include <limits.h>
#define MAX_AR INT_MAX/8+1
#define MAX_NU INT_MAX
#define TRUE 1
#define FALSE 0
#endif
object=main.o 64.o 54.o
64:$(object)
cc -o 64 $(object)
main.o:define.h
64.o:64.h define.h
54.o:54.h define.h
.PHONY:clean
clean:
rm 64 $(object)
CC =gcc
#如果头文件和源文件都在同一级目录下,如果不是后面相对源文件的路径
CFLAGS = -I./
OBJS = main.o 64.o 54.o
TARGET = 64
$(TARGET):$(OBJS)
$(CC) -o $(TARGET) $(OBJS) $(CFLAGS)
$(OBJS):%.o:%.c
$(CC) -c $(CFLAGS) $< -o $@
clean:
rm 64 $(OBJS)