不會玩陰陽師,但我照樣帶你一鍵下載所有卡牌,並識別文字信息
西瓜視頻同步更新https://www.ixigua.com/i6836341666006172174/。
習題36
求100之內的素數。
實現思路:
使用函數實現,並循環遍歷依次判斷。
代碼如下:
#include <stdio.h>
#include <math.h>
int main(){
int isPrime(int n);
int i, count = 0;
for(i = 2; i < 101; i++){
if(isPrime(i)){
count++;
printf("%5d", i);
if(count % 5 == 0){
printf("\n");
}
}
}
return 0;
}
int isPrime(int n){
int i, prime = 1;
for(i = 2; i <= sqrt(n); i++){
if(n % i == 0){
prime = 0;
break;
}
}
return prime;
}
打印:
2 3 5 7 11
13 17 19 23 29
31 37 41 43 47
53 59 61 67 71
73 79 83 89 97
習題37
對10個數進行排序。
實現思路:
可使用冒泡法或其他方法對數進行排序,一般都需要經過交換過程。
代碼如下:
#include <stdio.h>
int main(){
void sort(int ua[], int l);
int i, unsorted_list[] = {12, 54, 81, 3, 72, 47, 99, 32, 41, 62}, *p;
printf("Unsorted:\n");
for(i = 0; i < 10; i++){
printf("%d ", unsorted_list[i]);
}
p = unsorted_list;
int length = sizeof(unsorted_list) / sizeof(unsorted_list[0]);
sort(p, length);
printf("\nAfter sorted:\n");
for(i = 0; i < 10; i++){
printf("%d ", unsorted_list[i]);
}
return 0;
}
void sort(int ua[], int l){
int i, j, temp;
for(i = l - 2; i >= 0; i--){
for(j = 0; j <= i; j++){
if(ua[j] > ua[j + 1]){
temp = ua[j];
ua[j] = ua[j + 1];
ua[j + 1] = temp;
}
}
}
}
打印:
Unsorted:
12 54 81 3 72 47 99 32 41 62
After sorted:
3 12 32 41 47 54 62 72 81 99
習題38
求一個3*3矩陣對角線元素之和。
實現思路:
利用雙重for循環控制輸入二維數組,再將i和j相同的數組元素累加後輸出。
代碼如下:
#include <stdio.h>
int main(){
int a[3][3] = {0}, i, j, sum = 0;
printf("Please input the 9 numbers:\n");
for(i = 0; i < 3; i++){
for(j = 0; j < 3; j++){
scanf("%d", &a[i][j]);
}
}
for(i = 0; i < 3; i++){
for(j = 0; j < 3; j++){
if(i == j){
sum += a[i][j];
}
}
}
printf("Sum = %d\n", sum);
return 0;
}
打印:
Please input the 9 numbers:
1 2 3 4 5 6 7 8 9
Sum = 15
習題39
有一個已經排好序的數組。
現輸入一個數,要求插入後該數組還是有序的。
實現思路:
先判斷此數是否大於最後一個數,然後再考慮插入中間的數的情況,插入後此元素之後的數,依次後移一個位置。
代碼如下:
#include <stdio.h>
int main(){
int a[11] = {1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 0}, num, i, j;
printf("Please input the number to insert:\n");
scanf("%d", &num);
if(num >= a[9]){
a[10] = num;
}else{
i = 9;
while(a[i] > num){
i--;
}
for(j = 10; j > i + 1; j--){
a[j] = a[j - 1];
}
a[i + 1] = num;
}
for(i = 0; i < 11; i++){
printf("%d ", a[i]);
}
return 0;
}
打印:
Please input the number to insert:
50
1 4 9 16 25 36 49 50 64 81 100
習題40
將一個數組逆序輸出。
實現思路:
將數組均分成兩半,用前後對應位置的元素交互即可。
也可以通過兩個數組,前後位置的元素交換。
代碼如下:
#include <stdio.h>
#define N 10
int main(){
int a[N] = {1, 4, 9, 16, 25, 36, 49, 64, 81, 100}, num, i, j, temp;
printf("Normal order:\n");
for(i = 0; i < 10; i++){
printf("%d ", a[i]);
}
for(i = 0; i < N / 2; i++){
temp = a[i];
a[i] = a[ N - 1 - i];
a[ N - 1 - i] = temp;
}
printf("\nReversed order:\n");
for(i = 0; i < 10; i++){
printf("%d ", a[i]);
}
return 0;
}
打印:
Normal order:
1 4 9 16 25 36 49 64 81 100
Reversed order:
100 81 64 49 36 25 16 9 4 1
圖解Python數據結構與算法-實戰篇