C語言練習題:陣列(C language exercise: Array)

Ping-Lun Liao
6 min readNov 5, 2020

--

練習一:整數陣列加總
使用一個大小為10的整數陣列來讀取使用者所輸入的10個整數,並算出此十個整數的總和。

Exercise 1: Sum of an array of integer

Using an integer array of size 10 to store input from user. Now print the sum of these 10 integers.

練習一參考解法:
Exercise 1 solution:

#include <stdio.h>
#include <stdlib.h>
int main()
{
int numbers[10], sum = 0;
for(int i = 0; i < 10; i++)
{
printf("Enter an integer for numbers[%d]:", i);
scanf("%d", &numbers[i]);
sum = sum + numbers[i];
}
printf("\nSum:%d", sum); return 0;
}

練習二:整數陣列中最大的整數
使用亂數函數 rand() 產生 10 整數,並找出最大值。

Exercise 2: Find the largest integer
Using rand() function to generate 10 integers and find the biggest integer.

練習二參考解法:
Exercise 2 solution:

#include <stdio.h>
#include <stdlib.h>
int main()
{
int numbers[10], big = 0;
printf("The numbers:");
for(int i = 0; i < 10; i++)
{
numbers[i] = rand();
printf("%d,", numbers[i]);
if(big < numbers[i])
big = numbers[i];
}
printf("\nThe biggest integer:%d.\n", big);
return 0;
}

練習三:Greeting message
Get the user’s name from keyboard and print it with greeting message.

Exercise 3: 打招呼
請使用者輸入自己的姓名,程式輸出【姓名】,【打招呼訊息】。

練習三參考解法:
Exercise 3 solution:

#include <stdio.h>
#include <stdlib.h>
int main()
{
char name[50];
printf("Input your name:");
scanf("%s", name); // name is a string that don't need'&' operator
printf("%s, nice to meet you.\n", name);
return 0;
}

練習四:奇數或偶數
使用亂數函數 rand() 產生 10 整數,分別對奇數的數加總以及偶數的數加總。

Exercise 4: Even or Odd

Using rand() function to generate 10 integers. Now, print the sum of even numbers and the sum of odd numbers.

練習四參考解法:
Exercise 4 solution:

#include <stdio.h>
#include <stdlib.h>
int main()
{
int numbers[10], evenSum = 0, oddSum = 0;
printf("The numbers:");
for(int i = 0; i < 10; i++)
{
numbers[i] = rand() % 10;
printf("%d,", numbers[i]);
if(numbers[i] % 2)
{
oddSum += numbers[i];
}
else
{
evenSum += numbers[i];
}
}
printf("\nThe sum of even numbers:%d\n", evenSum);
printf("The sum of odd numbers:%d\n", oddSum);
return 0;
}

練習五:二維陣列

使用亂數函數 rand()來建立大小為 3 x 3 的二維陣列。並輸出此矩陣的元素以及矩陣所有元素的平均值。

Exercise 5: 2D Array

Using rand() function to write a program for a 2D array of size 3x3. Then display the matrix and calculate the average of the matrix’s elements.

練習五參考解法:
Exercise 5 solution:

#include <stdio.h>
#include <stdlib.h>
int main()
{
int matrix[3][3];
float avg = 0.0f;
printf("The matrix:\n");
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 3; j++)
{
matrix[i][j] = rand() % 100;
avg += matrix[i][j];
printf("matrix[%d][%d] = %2d, ", i, j, matrix[i][j]);
}
printf("\n");
}
avg = avg / 9.0;
printf("Average:%f\n", avg);
return 0;
}

練習六:矩陣相加

使用亂數函數 rand()來建立兩個大小為 3 x 3 的二維陣列。並輸出此兩矩陣相加後的結果。

Exercise 6: Matrix Addition
Using rand() function to write a program for two 2D array of size 3x3. And output the addition of the two matrix.

練習六參考解法:
Exercise 6 solution:

#include <stdio.h>
#include <stdlib.h>
void prtMatrix(int m[3][3])
{
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 3; j++)
{
printf("[%d][%d] = %2d, ", i, j, m[i][j]);
}
printf("\n");
}
}int main()
{
int a[3][3];
int b[3][3];
int c[3][3];
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 3; j++)
{
a[i][j] = rand() % 100;
b[i][j] = rand() % 100;
c[i][j] = a[i][j] + b[i][j];
}
}
printf("a:\n");
prtMatrix(a);
printf("\n"); printf("b:\n");
prtMatrix(b);
printf("\n"); printf("The addition of matrix a and matrix b:\n");
prtMatrix(c);
return 0;
}

練習七:矩陣相減
使用亂數函數 rand()來建立兩個大小為 3 x 3 的二維陣列。並輸出此兩矩陣相減後的結果。

Exercise 7: Matrix Subtraction
Using rand() function to write a program for two 2D array of size 3x3. And output the subtraction of the two matrix.

練習七參考解法:
Exercise 7 solution:

#include <stdio.h>
#include <stdlib.h>
void prtMatrix(int m[3][3])
{
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 3; j++)
{
printf("[%d][%d] = %2d, ", i, j, m[i][j]);
}
printf("\n");
}
}int main()
{
int a[3][3];
int b[3][3];
int c[3][3];
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 3; j++)
{
a[i][j] = rand() % 100;
b[i][j] = rand() % 100;
c[i][j] = a[i][j] - b[i][j];
}
}
printf("a:\n");
prtMatrix(a);
printf("\n"); printf("b:\n");
prtMatrix(b);
printf("\n"); printf("The subtraction of matrix a and matrix b:\n");
prtMatrix(c);
return 0;
}

練習八:方陣相乘
使用亂數函數 rand()來建立兩個大小為 3 x 3 的方陣 A 與 B。並輸出此兩方陣A乘B後的結果。

Exercise 8: Square Matrices Multiplication
Using rand() function to write a program for two 2D array of size 3x3. And output the subtraction of the two square matrices.

練習八參考解法:
Exercise 8 solution:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void prtMatrix(int m[3][3])
{
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 3; j++)
{
printf("[%d][%d] = %3d, ", i, j, m[i][j]);
}
printf("\n");
}
}int main()
{
int A[3][3];
int B[3][3];
int C[3][3];
srand((unsigned) time(0)); // Matrices initialization
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 3; j++)
{
A[i][j] = rand() % 10;
B[i][j] = rand() % 10;
C[i][j] = 0;
}
}
// C = A x B
int sum = 0;
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 3; j++)
{
sum = 0;
for(int k = 0; k < 3; k++)
{
sum = sum + A[i][k] * B[k][j];
}
C[i][j] = sum;
}
}
printf("A:\n");
prtMatrix(A);
printf("\n"); printf("B:\n");
prtMatrix(B);
printf("\n"); printf("The A X B:\n");
prtMatrix(C);
return 0;
}

練習九:取代陣列內的元素

使用亂數函數 rand() 產生 10 個整數,尋找特定的數值,並用 -1 來取代。

Exercise 9: Replace an element in an array
Using rand() function to generate 10 integers. Then find a specific integer and replace it with -1.

練習九參考解法:
Exercise 9 solution:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int numbers[10], target = -1;
srand(time(0)); printf("Enter an integer between [0 - 9]:");
scanf("%d", &target);
printf("The numbers:\n");
for(int i = 0; i < 10; i++)
{
numbers[i] = rand() % 10;
printf("%2d,", numbers[i]);
// Find the target and replace it with -1
if(numbers[i] == target)
numbers[i] = -1;
}
printf("\nAfter replacing, the numbers:\n");
for(int i = 0; i < 10; i++)
{
printf("%2d,", numbers[i]);
} printf("\n");
return 0;
}

練習十:費氏數列
輸入一個正整數 N,使用陣列的方式來產生前 N 個的費氏數列。

Exercise 10: Fibonacci Sequence

Input a positive integer N. Then show the fibonacci series up to n terms.

練習十參考解法:
Exercise 10 solution:

#include <stdio.h>
#include <stdlib.h>
int main()
{
int fibo[1000];
int N;
int t;
printf("Enter a positive integer [1-999]:");
scanf("%d", &N);
fibo[0] = 0;
fibo[1] = 1;
for(int i = 2; i < N; i++)
{
fibo[i] = fibo[i-1] + fibo[i-2];
}
for(int i = 0; i < N; i++)
printf("%2d,", fibo[i]);
printf("\n");
return 0;
}

Originally published at https://yunlinsong.blogspot.com.

--

--

No responses yet