Skip to content

Latest commit

 

History

History
346 lines (321 loc) · 6.25 KB

选做题.md

File metadata and controls

346 lines (321 loc) · 6.25 KB

开辟三维数组

#include<stdio.h>
int *** create(int lenth , int wide , int high)
{
    int i , j ;
    int *** p = ( int *** )malloc( high * sizeof(int**) );
	for( i = 0 ; i < high ; i ++)
	{
		p[i] = (int **)malloc( wide * sizeof(int*) ) ;
	}
	for( i = 0 ; i < high ; i ++)
   	{
   		for( j = 0 ; j < wide ; j ++)
     	{
            p[i][j] = (int *)malloc( lenth * sizeof(int) ) ;
		}
	}
	return p ;
}

int *** initData(int *** p ,int high ,int wide ,int lenth)
{
    int i , j , l ;
	for(i = 0 ; i < high ; i ++)
    {
        for(j = 0 ; j < wide ; j ++)
        {
            for( l = 0 ; l < lenth ; l ++ )
            {
                p[i][j][l] = i + j + l ;
            }
        }
    }
    return p ;
}

void show(int *** p ,int high ,int wide ,int lenth)
{
    int i , j , l ;
    for(i = 0 ; i < high ; i ++)
    {
        for(j = 0 ; j < wide ; j ++)
        {
            for( l = 0 ; l < lenth ; l ++ )
            {
                printf("%3d", p[i][j][l]);
            }
            printf("\n");
        }
         printf("\n");
    }
}

void deleteArray(int *** p ,int high ,int wide ,int lenth)
{
    int i , j ;
    for( i = 0 ; i < high ; i ++)
    {
       for( j = 0 ; j < wide ; j ++)
        {
            free(p[i][j]);
        }
    }
    for( i = 0 ; i < high ; i ++)
    {
        free(p[i]);
        free(p);
    }
}
int main()
{
	int i , j , l;
	int lenth , wide , high ;
	int *** p ;
	printf("输入长、宽、高:\n");
	scanf("%d%d%d",&lenth,&wide,&high);
	p = create(lenth,wide,high);
	p = initData(p,high,wide,lenth);
	show(p,high,wide,lenth);
	deleteArray(p,high,wide,lenth);
	//printf("%d",p[1][1][1]);
	return 0;
}

链表倒序

#include<stdio.h>

typedef struct listTest
{
    int num ;
    struct listTest *next ;
}mList;

mList * init()
{
    int i ;
    mList *head , *p , *temp;
    temp = (mList *)malloc(sizeof(mList));
    temp->num = 0 ;
    head = temp ;
    for(i = 1 ; i < 5 ; i++)
    {
        p = (mList *)malloc(sizeof(mList));
        p->num = i ;
        temp->next = p ;
        temp = p ;
    }
    temp->next = NULL ;
    return head ;
}

int showListMember(mList *head , int num)
{
    do
    {
        printf("%d\t",head->num);
        num = num + 1 ;
    }while(head = head->next);
    return num ;
}

void resersal(mList *head,int numOfList)
{
    mList *next , *prev = NULL ;
    int i ;
    for(i = 0 ; i < numOfList  ; i ++)
    {

      //printf("test:%d\t",head->num);
        next = head->next;
        //printf("test in:%d\t",head->num);
        head->next = prev;
        prev = head ;
        if(next == NULL)
        {

        }
        else
        {
             head = next ;
        }

    }
    printf("\n");
    do
    {
        printf("%d\t",head->num);

    }while(head = head->next);
}

int main()
{
    mList *head ;
    head = init();
    int numOfList = 0 , i ;
    numOfList = showListMember(head ,numOfList);
    resersal(head,numOfList);
    return 0 ;
}

八个1排8x8,不同行同列(八皇后问题)

#include <stdio.h>
#include <stdlib.h>
#define FALSE (1==0)
#define TRUE  (1==1)
#define SIZE 8

int eight_queen(char checkerboard[SIZE][SIZE], int sum);
int put_queen(char checkerboard[SIZE][SIZE], int row, int column);
int print(char checkerboard[SIZE][SIZE]);

int main(int argc, char *argv[])
 {
	char checkerboard[SIZE][SIZE];

	//init checkerboard
	int i, j;
	for(i = 0; i < SIZE; i++)
	{
		for(j = 0; j < SIZE; j++)
		{
			checkerboard[i][j]='-';
		}
	}
	eight_queen(checkerboard, 0);
	system("pause");
	return 0;
}
int eight_queen(char checkerboard[SIZE][SIZE], int sum)
{
	int i, j, num;
	char array[SIZE][SIZE];
	char array1[SIZE][SIZE];

//复制
	memcpy(array, checkerboard, SIZE*SIZE*sizeof(char));
	memcpy(array1, checkerboard, SIZE*SIZE*sizeof(char));

	if(sum == 8)
	{
		num++;
		printf("~~~~~~~~~第%d种~~~~~~~~~~~~\n",num);
		print(array1);
		//system("pause");
	}
	for(i = 0; i < SIZE; i++)
	{
		for(j = 0; j < SIZE; j++)
		{
			if(TRUE == put_queen(array, i, j))
			{
				sum++;
				if(eight_queen(array, sum) == -1)
				{
					array1[i][j] = '0';
					memcpy(array, array1, SIZE*SIZE*sizeof(char));
					sum--;
				}
			}
		}
	}
	return -1;
}
int put_queen(char checkerboard[SIZE][SIZE], int row, int column)
{
	int i = 0;
	if(checkerboard[row][column]=='-')
	{
		for(i = 0; i < 8; i++)
		{
			checkerboard[row][i] = '0';
			checkerboard[i][column] = '0';
			if(row + i < SIZE && column + i < SIZE)
				checkerboard[row + i][column + i] = '0';
			if(row - i >= 0 && column - i >= 0)
				checkerboard[row - i][column - i] = '0';
			if(row - i >= 0 && column + i < SIZE)
				checkerboard[row - i][column + i] = '0';
			if(row + i < SIZE && column - i >= 0)
				checkerboard[row + i][column - i] = '0';
		}
		checkerboard[row][column] = '1';
		return TRUE;
	}
	return FALSE;
}
int print(char checkerboard[SIZE][SIZE])
{
	int i, j;
	for(i = 0; i < SIZE; i++)
	{
		for(j = 0; j < SIZE; j++)
		{
			printf("%c ",checkerboard[i][j]);
		}
		printf("\n\r");
	}
}

三天打鱼两天晒网

#include<stdio.h>
int leapYear(int year)
{
     if((year%4==0&&year%100!=0)||(year%400==0))
     {
         return 1 ;
     }
     else
     {
         return 0 ;
     }
}
int theDayOfMonth(int month,int isLeap)
{
    if((month>=1) && (month <=7) && (month % 2 == 1))
    {
        return 31 ;
    }
    else if((month>7) && (month <=12) && (month % 2 == 0))
    {
        return 31 ;
    }
    else if((month == 2) && isLeap)
    {
        return 29 ;
    }
    else if((month == 2) && !isLeap)
    {
        return 28 ;
    }
    else
    {
        return 30;
    }

}
int main()
{
    int theSumOfDay = 0 ;
    int month , year , remainder;

    for( year = 1990 ; year < 2017 ; year ++ )
    {
        if(leapYear(year))
        {
            theSumOfDay = theSumOfDay + 366 ;
        }
        else
        {
            theSumOfDay = theSumOfDay + 365 ;
        }
    }
    /*
    for(i = 1 ; i <= 12 ; i ++)
    {
        printf("%d,%d\n",theDayOfMonth(i,1),theDayOfMonth(i,0));
    }
    */
    for( month = 1 ; month < 10 ; month ++)
    {
        theSumOfDay = theSumOfDay + theDayOfMonth(month,leapYear(2017)) ;
    }
    theSumOfDay = theSumOfDay + 15 ;
    remainder = theSumOfDay % 5 ;
    if( remainder <= 3 )
    {
        printf("打渔");
    }
    else
    {
        printf("晒网");
    }
    return 0 ;
}