1. 字串反轉:讀取 input.txt 的字串,然後整個反轉後寫入 output.txt 裡面
#include <stdio.h> #include <string.h> #define MAX 256 int main(){ FILE *ip, *op; ip = fopen("input.txt", "r"); op = fopen("output.txt", "w"); char line[MAX]; int N = 0; while(fgets(line, MAX, ip) != NULL){ } N = strlen(line); for(int i = N - 1; i >= 0; i--){ // N must - 1 while line[N] == NULL; fprintf(op,"%c", line[i]); } fclose(ip); fclose(op); return 0; } |
2. 尋找因數: 用一迴圈尋找任意整數的因數
#include <stdio.h> int main(){ int num; scanf("%d", &num); printf("The divisors of %d are: ", num); for(int i = 1; i <= num; i++){ if(num % i == 0) printf("%d ", i); } return 0; } |
3. 承上題: 尋找兩數的最大公因數HCF
#include <stdio.h> int main(){ int T; // T for n lines; int m, n; // m, n for two ints; int hcf = 0; // hcf for hcf scanf("%d", &T); for(int i = 0; i < T; i++){ scanf("%d %d", &m, &n); if(m > n){ for(int j = 1; j <= n; j++){ if(m % j == 0 && n % j == 0){ hcf = j; } } } else{ for(int j = 1; j <= m; j++){ if(m % j == 0 && n % j == 0){ hcf = j; } } } printf("%d\n", hcf); } return 0; } |
4. 多項式的linked list: 定一多項式任一項,之後把多項式A每個係數輸入後,最後print出該多項式。
#include <stdio.h> #include <stdlib.h> #define max 256 typedef struct poly_node{ int coef; int exp; struct poly_node *link; }Node; int main(){ Node *header = NULL, *cur = NULL; // declare struct pointer int m[max], n[max]; int T, first = 1, temp; // T for cases, first for the first check, temp for bubble sort. while(scanf("%d %d", &m[T], &n[T])){ if(m[T] == 0 && n[T] == 0) break; T++; } for(int i = 0; i < T - 1; i++){ for(int j = 0; j < T - 1 - i; j++){ if(n[j] < n[j + 1]){ temp = n[j]; n[j] = n[j + 1]; n[j + 1] = temp; temp = m[j]; m[j] = m[j + 1]; m[j + 1] = temp; } } } // bubble sort for(int i = 0; i < T; i++){ if(i == 0){ header = (Node*)malloc(sizeof(Node)); header -> coef = m[i]; header -> exp = n[i]; header -> link = NULL; cur = header; continue; } cur -> link = (Node*)malloc(sizeof(Node)); cur = cur -> link; cur -> coef = m[i]; cur -> exp = n[i]; cur -> link = NULL; } // put m and n into the linked list. printf("A = "); while(header != NULL){ if(first == 1){ first = 0; printf("%dX^%d", header -> coef, header -> exp); } else printf(" + %dX^%d", header -> coef, header -> exp); header = header -> link; } return 0; } |
5.級數的和: (1 + 2) + (2 + 4) + (3 + 6) + ... +(n + 2* n) 的和,阿其實就是 (1 + 2 + ... + n)*3
#include <stdio.h> int main(){ int T; // T for test cases; int num; // num for case; int sum = 0; // sum for sum of case; scanf("%d", &T); for(int i = 0; i < T; i++){ scanf("%d", &num); for(int j = 0; j <= num; j++){ sum = sum + (j + j * 2); } printf("%d\n", sum); sum = 0; } return 0; } |
6.密碼鎖: int password = 48763, pw; scanf("%d", &pw); if pw == password 過了
#include <stdio.h> #define password 1688 int main(){ int pw; while(printf("Please Enter the Number: ")){ scanf("%d", &pw); if(pw == password) break; } printf("Log In Successfully! "); // I use English instead of Chinese while there is compiling problem with Chinese words. return 0; } |
7.矩陣加總: 恩就矩陣加總
#include <stdio.h> #include <stdlib.h> #define ROW 3 #define COL 3 int main(){ int *a, *b, *sum; int space = 0; space = ROW * COL; a = (int *)malloc(sizeof(int) * space); b = (int *)malloc(sizeof(int) * space); sum = (int *)malloc(sizeof(int) * space); printf("\nEnter all data of array A :", space); for(int i = 0; i < space; i++){ scanf("%d", a + i); } printf("\nEnter all data of array B :", space); for(int i = 0; i < space; i++){ scanf("%d", b + i); } for(int i = 0; i < space; i++){ *(sum + i) = *(a + i) + *(b + i); } printf("\nThe result is:\n"); printf("Array A:\n"); for(int i = 0; i < space; i++){ if((i + 1 ) % ROW == 0){ printf("%d\n", *(a + i)); } else{ printf("%d, ", *(a + i)); } } printf("+\n"); printf("Array B:\n"); for(int i = 0; i < space; i++){ if((i + 1 ) % ROW == 0){ printf("%d\n", *(b + i)); } else{ printf("%d, ", *(b + i)); } } printf("=\n"); for(int i = 0; i < space; i++){ if((i + 1 ) % ROW == 0){ printf("%d\n", *(sum + i)); } else{ printf("%d, ", *(sum + i)); } } return 0; } |
8.季節判斷: 輸入幾月就哪個季節安捏
#include <stdio.h> int main(){ int month; printf("Please enter the month: "); scanf("%d", &month); if(month > 12 || month < 1) return 0; else if(month == 12 || month == 1 || month == 2) printf("The season now is Winter"); else if(month == 3 || month == 4 || month == 5) printf("The season now is Spring"); else if(month == 6 || month == 7 || month == 8) printf("The season now is Summer"); else printf("The season now is Fall"); return 0; } |
9.指標、陣列運用: 宣告一個函式void addTwoArrays(int *, int *)可以加總兩個二維陣列
10. 判斷兩個正整數是否互質
#include <stdio.h> #include <stdlib.h> #define ROW 3 #define COL 3 int addTwoArrays(int *m, int *n){ int sum = 0; sum = *m + *n; *n = sum; } int main(){ int *a, *b, *sum; int space = 0; space = ROW * COL; int temp = 0; a = (int *)malloc(sizeof(int) * space); b = (int *)malloc(sizeof(int) * space); sum = (int *)malloc(sizeof(int) * space); printf("\nEnter all data of array A :", space); for(int i = 0; i < space; i++){ scanf("%d", a + i); } printf("\nEnter all data of array B :", space); for(int i = 0; i < space; i++){ scanf("%d", b + i); } printf("\nThe original arrays are:\n"); printf("Array A:\n"); for(int i = 0; i < space; i++){ if((i + 1 ) % ROW == 0){ printf("%d\n", *(a + i)); } else{ printf("%d, ", *(a + i)); } } printf("and\n"); printf("Array B:\n"); for(int i = 0; i < space; i++){ if((i + 1 ) % ROW == 0){ printf("%d\n", *(b + i)); } else{ printf("%d, ", *(b + i)); } } for(int i = 0; i < space; i++){ addTwoArrays(a + i, b + i); } printf("\nThe operated arrays are:\n"); printf("Array A:\n"); for(int i = 0; i < space; i++){ if((i + 1 ) % ROW == 0){ printf("%d\n", *(a + i)); } else{ printf("%d, ", *(a + i)); } } printf("and\n"); printf("Array B:\n"); for(int i = 0; i < space; i++){ if((i + 1 ) % ROW == 0){ printf("%d\n", *(b + i)); } else{ printf("%d, ", *(b + i)); } } return 0; } |
10. 判斷兩個正整數是否互質
#include <stdio.h> int main(){ int T; // T for n lines; int m, n; // m, n for two ints; int hcf = 0; // hcf for hcf scanf("%d", &T); for(int i = 0; i < T; i++){ scanf("%d %d", &m, &n); if(m > n){ for(int j = 1; j <= n; j++){ if(m % j == 0 && n % j == 0){ hcf = j; } } } else{ for(int j = 1; j <= m; j++){ if(m % j == 0 && n % j == 0){ hcf = j; } } } if(hcf == 1) printf("Yes\n"); else printf("%d\n", hcf); } return 0; } |