國家郵政局:2022 年“五一”假期全國郵政快遞業攬投快遞包裹 28.1 億件
阿新 • • 發佈:2022-05-05
實驗一:
task1-1:
① int型陣列a陣列a在記憶體中是連續存放的,每個元素佔用4個記憶體位元組單
② char型陣列b陣列b在記憶體中是連續存放的,每個元素佔用1個記憶體位元組單元。
③對應的值一樣。
#include <stdio.h> #define N 4 int main() { int a[N] = {2, 0, 2, 2}; char b[N] = {'2', '0', '2', '2'}; int i; printf("sizeof(int) = %d\n", sizeof(int)); printf("sizeof(char) = %d\n", sizeof(char)); printf("\n"); // 輸出陣列a中每個元素的地址、值 for (i = 0; i < N; ++i) printf("%p: %d\n", &a[i], a[i]); printf("\n"); // 輸出陣列b中每個元素的地址、值 for (i = 0; i < N; ++i) printf("%p: %c\n", &b[i], b[i]); printf("\n"); // 輸出陣列名a和b對應的值 printf("a = %p\n", a); printf("b = %p\n", b); return 0; }
task1-2:
① int型二維陣列a,在記憶體中是否是"按行連續存放"是按行連續存放的,每個元素佔用4個記憶體位元組單元。
② char型二維陣列b,在記憶體中是否是"按行連續存放"是的,每個元素佔用1個記憶體位元組單元。
#include <stdio.h> #define N 2 #define M 3 int main() { int a[N][M] = {{1, 2, 3}, {4, 5, 6}}; char b[N][M] = {{'1', '2', '3'}, {'4', '5', '6'}}; int i, j; // 輸出二維陣列a中每個元素的地址和值 for (i = 0; i < N; ++i) for (j = 0; j < M; ++j) printf("%p: %d\n", &a[i][j], a[i][j]); printf("\n"); // 輸出二維陣列a中每個元素的地址和值 for (i = 0; i < N; ++i) for (j = 0; j < M; ++j) printf("%p: %c\n", &b[i][j], b[i][j]); return 0; }
task2:
#include <stdio.h> int days_of_year(int year, int month, int day); // 函式宣告 int main() { int year, month, day; int days; while (scanf_s("%d%d%d", &year, &month, &day) != 0) // 按下Ctrl+D終止 { days=days_of_year(year, month, day); // 函式呼叫 printf("%4d-%02d-%02d是這一年的第%d天.\n\n", year, month, day, days);} return 0;}// 函式定義// 補足函式days_of_year的定義// xx int days_of_year(int year, int month, int day) { int hh, n, k,h; n = 0; h = month; hh = year % 4 == 0 && year % 100 != 0 || year % 400 == 0; int yue[13] = { 0,31,28 + hh,31,30,31,30,31,31,30,31,30,31 }; for (; month >= 0; month--) { n += yue[month]; } k = n-yue[h]+day; return k; }
task3:
#include <stdio.h> #define N 5 // 函式宣告 void input(int x[], int n); void output(int x[], int n); double average(int x[], int n); void sort(int x[], int n); int main() { int scores[N]; double ave; printf("錄入%d個分數:\n", N); input(scores, N); printf("\n輸出課程分數: \n"); output(scores, N); printf("\n課程分數處理: 計算均分、排序...\n"); ave = average(scores, N); sort(scores, N); printf("\n輸出課程均分: %.2f\n", ave); printf("\n輸出課程分數(高->低):\n"); output(scores, N); return 0; } // 函式定義 // 輸入n個整數儲存到整型陣列x中 void input(int x[], int n) { int i; for(i=0; i<n; ++i) scanf("%d", &x[i]); } // 輸出整型陣列x中n個元素 void output(int x[], int n) { int i; for(i=0; i<n; ++i) printf("%d ", x[i]); printf("\n"); } double average(int x[], int n) { int i; double s=0; for(i=0;i<n;i++) s+=x[i]; return s/n; } void sort(int x[],int n) { int i,j,t; for(i=0;i<n-1;i++) { for(j=0;j<n-1-i;j++) { if(x[j]<x[j+1]) { t =x[j]; x[j]=x[j+1]; x[j+1]=t; } } } }
task4:
#include <stdio.h> #define N 100 void dec2n(int x, int n); // 函式宣告 int main() { int x; printf("輸入一個十進位制整數: "); scanf_s("%d", &x); dec2n(x, 2); // 函式呼叫: 把x轉換成二進位制輸出 dec2n(x, 8); // 函式呼叫: 把x轉換成八進位制輸出 dec2n(x, 16); // 函式呼叫: 把x轉換成十六進位制輸出 return 0; }// 函式定義// 功能: 把十進位制數x轉換成n進位制,列印輸出// 補足函式實現 void dec2n(int x, int n) { char h[N]; int i, j = 0, k = 0, l = 0; for (i = 0; x != 0; i++, j++) { k = x % n; if (k < 10) { h[i] = '0' + k; } if (k >= 10) { h[i] = 'A' + k - 10; } x = x / n; } for (l = j - 1; l >= 0; l--) { printf("%c", h[l]); } printf("\n"); }
task5:
#include <stdio.h> int main() { int n,i,j; while (printf("Enter n:"),scanf("%d",&n)!=EOF) { int a[n][n]; for (i=0;i<n;i++) { for (j=i;j<n;j++) { a[i][j]=i+1; } } for (j=0;j<n;j++) { for (i=j;i<n;i++) { a[i][j]=j+1; } } for (i=0;i<n;i++) { for (j=0;j<n;j++) { printf("%d ",a[i][j]); } printf("\n"); } printf("\n"); } return 0;
task6:
#include<stdio.h> #define N 80 int main() { char views1[N]="hey,c,i hate u."; char views2[N]="hey,c,i love u."; int i,j; char t; printf("original views:\n"); printf("views1:\n"); for(j=0;j<N;j++) printf("%c",views1[j]); printf("\n"); printf("views2:\n"); for(j=0;j<N;j++) printf("%c",views2[j]); printf("\n"); printf("swapping...\n"); for(i=0;i<N;i++) { t=views1[i]; views1[i]=views2[i]; views2[i]=t; } printf("views1:"); for(j=0;j<N;j++) printf("%c",views1[j]); printf("\n"); printf("views2:"); for(j=0;j<N;j++) printf("%c",views2[j]); }
task7:
#include <stdio.h> #include <string.h> #define N 5 #define M 20 void bubble_sort(char str[][M], int n); // 函式宣告 int main() { char name[][M] = {"Bob", "Bill", "Joseph", "Taylor", "George"}; int i; printf("輸出初始名單:\n"); for (i = 0; i < N; i++) printf("%s\n", name[i]); printf("\n排序中...\n"); bubble_sort(name, N); // 函式呼叫 printf("\n按字典序輸出名單:\n"); for (i = 0; i < N; i++) printf("%s\n", name[i]); return 0; } void bubble_sort(char str[][M], int n) { int i,j; char t[80]; for(i=0;i<n-1;i++) { for(j=0;j<n-1-i;j++) { if(strcmp(str[j],str[j+1])>0) { strcpy(t,str[j]); strcpy(str[j],str[j+1]); strcpy(str[j+1],t); } } } }