(1)
#include
#include
/* 主程式 */
int main() {
int courses[6][5]={0, 2, 0, 2, 0,
1, 4, 1, 4, 1,
5, 0, 5, 0, 5,
0, 0, 0, 0, 0,
3, 0, 3, 0, 3,
0, 0, 0, 0, 0 };
int week_no;
int num;
int code;
printf("請輸入星期(1 到 5). ==> ");
scanf("%d", &week_no);
printf("請輸入第幾節課(1 到 6). ==> ");
scanf("%d", &num);
code = courses[num-1][week_no-1];
printf("課程代碼: %d\n", code);
switch ( code ) {
case 0: printf("沒課!\n");
break;
case 1: printf("計算機概論\n");
break;
case 2: printf("離散數學\n");
break;
case 3: printf("資料結構\n");
break;
case 4: printf("資料庫理論\n");
break;
case 5: printf("上機實習\n");
break;
}
system("PAUSE");
return 0;
}
---------------------------------------------------
(2)
#include
#include
/* 主程式 */
int main() {
int scores[10] = {76,85,90,67,59,79,82,95,91,65};
int num;
int grade;
int i, choice;
int doit = 1;
while ( doit ) {
printf("----選單----\n");
printf("1: 查詢成績\n");
printf("2: 修改成績\n");
printf("3: 顯示成績\n");
printf("4: 離開作業\n");
printf("請輸入選項( 1 到 4 ). ==> ");
scanf("%d", &choice);
if (choice < 3 ) {
printf("請輸入學生學號( 0 到 9). ==> ");
scanf("%d", &num); /* 讀入學號 */
}
switch( choice ) {
case 1: /* 查詢成績 */
grade = scores[num];
printf("學生成績: %d\n", grade);
break;
case 2:
grade = scores[num];
printf("原來學生成績: %d\n", grade);
printf("輸入新成績. ==> ");
scanf("%d", &grade);
scores[num] = grade;
break;
case 3:
printf("學生成績: \n");
for ( i = 0; i < 10; i )
printf("%d:%d ", i, scores[i]);
printf("\n");
break;
case 4:
doit = 0;
break;
}
}
system("PAUSE");
return 0;
}
---------------------------------------------------
(3)
#include
#include
int main() {
int i = 5;
int *ptr = &i;
int **ptr1 = &ptr;
int ***ptr2 = &ptr1;
printf("i = 位址=%p\n", i, &i);
printf("ptr =%p 位址=%p\n", ptr, &ptr);
printf("ptr1=%p 位址=%p\n", ptr1, &ptr1);
printf("ptr2=%p 位址=%p\n", ptr2, &ptr2);
printf("*ptr :位址%p的值=\n", ptr, *ptr);
printf("*ptr1:位址%p的值=%p\n", ptr1, *ptr1);
printf("*ptr2:位址%p的值=%p\n", ptr2, *ptr2);
printf("*ptr = %d\n", *ptr);
printf("**ptr1 = %d\n", **ptr1);
printf("***ptr2= %d\n", ***ptr2);
system("PAUSE");
return 0;
}
(4)
#include
#include
#define LEN 6
int main() {
int i;
int array[LEN] = { 1, 23, 33, 17, -40, 100 };
int *ptr = array; /* 第一個元素 */
for ( i = 0; i < LEN; i )
printf("array[%d]=%d ",i,array[i]);
printf("\n");
ptr = array; /* 第一個元素 */
for ( i = 0; i < LEN; i )
printf("ptr %d=%d ", i, *(ptr i));
printf("\n");
ptr = &array[0]; /* 第一個元素 */
for ( i = 0; i < LEN; i )
printf("ptr %d=%d ", i, *ptr );
printf("\n");
ptr = &array[LEN-1]; /* 最後一個元素 */
for ( i = 0; i < LEN; i )
printf("ptr-%d=%d ", i, *ptr--);
printf("\n");
system("PAUSE");
return 0;
}
-------------------------------------------------------
(5)
/●Ch4-3-1.c●/
#include
#include
#include "Ch4-3.h"
#include "createList.c"
int main() {
int temp;
int data[6]={ 1, 2, 3, 4, 5, 6 };
List ptr;
createList(6, data);
printf("原來的串列: ");
printList();
printf("串列是否空的: %d\n", isListEmpty());
temp = 0;
while ( temp != -1 ) {
printf("請輸入搜尋的郵寄編號(-1結束) ==> ");
scanf("%d", &temp);
if ( temp != -1 )
if ( searchNode(temp) != NULL )
printf("串列包含節點[%d]\n", temp);
else
printf("串列不含節點[%d]\n", temp);
}
system("PAUSE");
return 0;
}
----------------------------------------------------
(6)
以下是第(5)的副程式..
/ ●Ch4-3.h● /
struct Node {
int data;
struct Node *next;
};
typedef struct Node LNode;
typedef LNode *List;
List first = NULL;
extern void creatList(int len, int *array);
extern int isListEmpty();
extern void printList();
extern List searchNode(int d);
extern int deleteNode(List ptr);
extern void insertNode(List ptr, int d);
------------------------------------------------
/* createDList.c */
void createDList(int len, int *array) {
int i;
DList newnode, before;
first = (DList) malloc(sizeof(DNode));
first->data = array[0];
first->previous = NULL;
before = first;
now = first;
for ( i = 1; i < len; i ) {
newnode = (DList) malloc(sizeof(DNode));
newnode->data = array[i];
newnode->next = NULL;
newnode->previous=before;
before->next=newnode;
before = newnode;
}
}
void printDList() {
DList current = first;
while ( current != NULL ) {
if ( current == now )
printf("#%d#", current->data);
else
printf("[%d]", current->data);
current = current->next;
}
printf("\n");
}
void nextNode() {
if ( now->next != NULL )
now = now->next;
}
void previousNode() {
if ( now->previous != NULL )
now = now->previous;
}
void resetNode() { now = first; }
DList readNode() { return now; }
---------------------------------------------------
(7)
#include
#include
int hanoiTower(int dishs,int peg1,int peg2,int peg3) {
if ( dishs == 1)
printf("盤子從 %d 移到 %d\n", peg1, peg3);
else {
hanoiTower(dishs - 1,peg1,peg3,peg2);
printf("盤子從 %d 移到 %d\n", peg1, peg3);
hanoiTower(dishs - 1,peg2,peg1,peg3);
}
}
/* 主程式 */
int main() {
hanoiTower(3,1,2,3);
system("PAUSE");
return 0;
}
-------------------------------------------------------------
(8)
#include
#include
int maze[7][10] = {
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 0, 1, 0, 1, 0, 0, 0, 0, 1,
1, 0, 1, 0, 1, 0, 1, 1, 0, 1,
1, 0, 1, 0, 1, 1, 1, 0, 0, 1,
1, 0, 1, 0, 0, 0, 0, 0, 1, 1,
1, 0, 0, 0, 1, 1, 1, 0, 0, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
int findPath(int x,int y) {
if ( x == 1 && y == 1 ) {
maze[x][y] = 2;
return 1;
}
else if ( maze[x][y] == 0 ) {
maze[x][y] = 2;
if ( ( findPath(x - 1,y)
findPath(x 1,y)
findPath(x,y - 1)
findPath(x,y 1) ) > 0 )
return 1;
else {
maze[x][y] = 0;
return 0;
}
}
else return 0;
}
int main() {
int i,j;
findPath(5,8);
printf("迷宮路徑圖(從右下角到左上角): \n");
for ( i = 0; i <= 6; i ) {
for ( j = 0; j <= 9; j )
printf("%d ", maze[i][j]);
printf("\n");
}
printf("\n數字 1: 牆壁\n數字 2: 走過的路徑\n");
system("PAUSE");
return 0;
}
---------------------------------------------------------------
(9)
/●Ch6-2-1.c●/
#include
#include
#include "Ch6-2-1.h"
int isQueueEmpty() {
if ( front == rear ) return 1;
else return 0;
}
int enqueue(int d) {
if ( rear >= MAXQUEUE )
return 0;
else {
queue[ rear] = d;
return 1;
}
}
int dequeue() {
if ( isQueueEmpty() )
return -1;
else
return queue[ front];
}
int main() {
int data[6] = {1, 2, 3, 4, 5, 6};
int i;
printf("存入佇列資料的順序: ");
for ( i = 0; i < 6; i ) {
enqueue(data[i]);
printf("[%d]", data[i]);
}
printf("\n取出佇列資料的順序: ");
while ( !isQueueEmpty() )
printf("[%d]", dequeue());
printf("\n");
system("PAUSE");
return 0;
}
-----------------------------------------------------
以下為(9)的副程式:
/●Ch6-2-1.h●/
#define MAXQUEUE 10
int queue[MAXQUEUE];
int front = -1;
int rear = -1;
extern int isQueueEmpty();
extern int enqueue(int d);
extern int dequeue();
-------------------------------------------------------
(10)
/●Ch6-2-2.c●/
#include
#include
#include "Ch6-2-2.h"
int isQueueEmpty() {
if ( front == NULL ) return 1;
else return 0;
}
void enqueue(int d) {
LQueue new_node;
new_node = (LQueue)malloc(sizeof(QNode));
new_node->data = d;
new_node->next = NULL;
if ( rear == NULL )
front = new_node;
else
rear->next = new_node;
rear = new_node;
}
int dequeue() {
LQueue ptr;
int temp;
if ( !isQueueEmpty() ) {
if ( front == rear )
rear = NULL;
ptr = front;
front = front->next;
temp = ptr->data;
free(ptr);
return temp;
}
else return -1;
} int main() {
int input[100], output[100];
int select = 1;
int numOfInput = 0;
int numOfOutput = 0;
int i, temp;
printf("鏈結串列的佇列處理......\n");
while ( select != 3 ) {
printf("[1]存入 [2]取出 [3]顯示全部內容 ==> ");
scanf("%d", &select);
switch ( select ) {
case 1:
printf("請輸入存入值(%d) ==> ", numOfInput);
scanf("%d", &temp);
enqueue(temp);
input[numOfInput ] = temp;
break;
case 2:
if ( !isQueueEmpty() ) {
temp = dequeue();
printf("取出佇列元素: %d\n", temp);
output[numOfOutput ] = temp;
}
break;
}
}
printf("輸入佇列的元素: ");
for ( i = 0; i < numOfInput; i )
printf("[%d]", input[i]);
printf("\n取出佇列的元素: ");
for ( i = 0; i < numOfOutput; i )
printf("[%d]", output[i]);
printf("\n剩下佇列的元素: ");
while ( !isQueueEmpty() )
printf("[%d]", dequeue());
printf("\n");
system("PAUSE");
return 0;
}
-----------------------------------------------------------
以下為(10)的副程式:
/●Ch6-2-2.h ●/
struct Node {
int data;
struct Node *next;
};
typedef struct Node QNode;
typedef QNode *LQueue;
LQueue front = NULL;
LQueue rear = NULL;
extern int isQueueEmpty();
extern void enqueue(int d);
extern int dequeue();
-------------------------------------------------------
請各位大大幫幫忙囉!!...3Q~~
發表人 - pwipwi 於 2004/12/29 17:54:54