C-Sprache in sieben Tagen lernen – Tag 4 (Array)

Fügen Sie hier eine Bildbeschreibung ein

1. Definieren Sie ein eindimensionales Array

In der Sprache C ist ein eindimensionales Array eine geordnete Sammlung von Elementen mit demselben Datentyp. Die grundlegende Syntax zum Definieren eines eindimensionalen Arrays lautet wie folgt:

data_type array_name[array_size];

In:

  • data_typeIst der Datentyp des Array-Elements, der eine Ganzzahl, eine Gleitkommazahl, ein Zeichen usw. sein kann.
  • array_nameist der Name des Arrays, Sie können ihn anpassen.
  • array_sizeist die Größe des Arrays und gibt die Anzahl der Elemente an, die das Array enthalten kann.

Beispiel 1: Weisen Sie der Reihe nach die Werte 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 bis 10 Array-Elemente zu und geben Sie diese in umgekehrter Reihenfolge aus.

#include <stdio.h>

int main() {
    
    
    int i;
    int a[10];  // 定义一个包含10个整数的数组

    // 使用循环为数组元素赋值
    for (i = 0; i < 10; i++) {
    
    
        a[i] = i; // 数组的每个元素赋值为它的索引
    }

    // 倒序输出数组元素
    for (i = 9; i >= 0; i--) {
    
    
        printf("%d\t", a[i]); // 输出数组元素的值
    }
    printf("\n");

    return 0;
}

Operationsergebnis:

Fügen Sie hier eine Bildbeschreibung ein

Beispiel 2: Geben Sie die Flächen von 10 Regionen ein (Flächen sind ganze Zahlen), sortieren Sie sie von klein nach groß und geben Sie die sortierten Ergebnisse aus.

Verwenden Sie zwei verschiedene Sortieralgorithmen: einer ist die Auswahlsortierung und der andere ist die Blasensortierung.

Auswahlmethode (Auswahlsortierung):

#include<stdio.h>

int main()
{
    
    
    int a[10];
    int i, j, t;

    // 输入10个面积值
    printf("请输入10个面积:\n");
    for (i = 0; i < 10; i++)
        scanf("%d", &a[i]);

    // 选择排序算法
    for (i = 0; i < 9; i++) {
    
    
        for (j = i + 1; j < 10; j++) {
    
    
            if (a[i] > a[j]) {
    
    
                // 交换元素
                t = a[i];
                a[i] = a[j];
                a[j] = t;
            }
        }
    }

    // 输出排序后的面积值
    printf("排序后的面积依次是:\n");
    for (i = 0; i < 10; i++)
        printf("%d\t", a[i]);
    printf("\n");

    return 0;
}

Operationsergebnis:

Fügen Sie hier eine Bildbeschreibung ein

Blasenmethode (sinkende Methode, Blasensortierung):

#include<stdio.h>

int main()
{
    
    
    int a[10];
    int i, j, t;

    // 输入10个面积值
    printf("请输入10个面积:\n");
    for (i = 0; i < 10; i++)
        scanf("%d", &a[i]);

    // 冒泡排序算法
    for (j = 0; j < 9; j++) {
    
    
        for (i = 0; i < 9 - j; i++) {
    
    
            if (a[i] > a[i + 1]) {
    
    
                // 交换元素
                t = a[i];
                a[i] = a[i + 1];
                a[i + 1] = t;
            }
        }
    }

    // 输出排序后的面积值
    printf("排序后的面积依次是:\n");
    for (i = 0; i < 10; i++)
        printf("%d\t", a[i]);
    printf("\n");

    return 0;
}

Operationsergebnis:

Fügen Sie hier eine Bildbeschreibung ein

Das Prinzip der Auswahlsortierung besteht darin, den Mindestwert aus dem unsortierten Teil zu ermitteln, ihn dann mit dem ersten Element des unsortierten Teils auszutauschen, dann den unsortierten Teil zu verkleinern und diesen Vorgang fortzusetzen, bis das gesamte Array sortiert ist. Das Prinzip der Blasensortierung besteht darin, benachbarte Elemente zu vergleichen und sie auszutauschen, wenn sie nicht in der richtigen Reihenfolge sind. Dieser Vorgang wird wiederholt, bis das gesamte Array sortiert ist.

Die Kernideen der beiden sind unterschiedlich: Die Auswahlsortierung wählt in jeder Runde nur einen Mindestwert aus, während die Blasensortierung in jeder Runde mehrere Austauschoperationen haben kann. Beide Algorithmen können die Eingabebereichswerte korrekt sortieren, aber die Auswahlsortierung tauscht Elemente nur einmal pro Runde aus, während die Blasensortierung Elemente möglicherweise mehrmals pro Runde tauscht.

2. Definieren Sie ein zweidimensionales Array

Ähnlich wie ein eindimensionales Array ist ein zweidimensionales Array ein Array mit zwei Dimensionen. Es wird typischerweise zur Darstellung von Matrix- oder Tabellendaten verwendet. Die Syntax zum Definieren eines zweidimensionalen Arrays lautet wie folgt:

data_type array_name[row_size][column_size];

In:

  • data_typeEs handelt sich um den Datentyp von Array-Elementen, bei dem es sich auch um Ganzzahlen, Gleitkommazahlen, Zeichen usw. handeln kann.
  • array_nameist der Name des Arrays.
  • row_sizeund column_sizestellen die Anzahl der Zeilen bzw. Spalten des zweidimensionalen Arrays dar.

Definieren Sie beispielsweise ein zweidimensionales 3x3-Array aus Ganzzahlen:

int matrix[3][3];

Beispiel 1: Fügen Sie hier eine Bildbeschreibung ein
Vertauschen Sie die Zeilen- und Spaltenelemente eines zweidimensionalen Arrays, speichern Sie es in einem anderen zweidimensionalen Array b und geben Sie es aus.

#include <stdio.h>

int main() {
    
    
    int a[2][3] = {
    
    {
    
    1, 2, 3}, {
    
    4, 5, 6}};
    int b[3][2];
    int i, j;

    // 使用循环将数组a转置为数组b
    for (i = 0; i <= 1; i++) {
    
    
        for (j = 0; j <= 2; j++) {
    
    
            b[j][i] = a[i][j];
        }
    }

    // 输出数组b
    printf("数组 b 为:\n");
    for (j = 0; j <= 2; j++) {
    
    
        for (i = 0; i <= 1; i++) {
    
    
            printf("%d\t", b[j][i]);
        }
        printf("\n");
    }

    return 0;
}

Operationsergebnis:

Fügen Sie hier eine Bildbeschreibung ein

Beispiel 2: Bei einer gegebenen Matrix Fügen Sie hier eine Bildbeschreibung ein
programmieren Sie bitte, um das Element mit dem größten Wert zu finden.

#include <stdio.h>

int main() {
    
    
    int i, j, max;
    int a[3][3] = {
    
    {
    
    1, 2, 3}, {
    
    9, 8, 7}, {
    
    -10, 10, -5}};

    // 假设最大值为数组的第一个元素
    max = a[0][0];

    // 使用嵌套循环遍历数组,找到最大值
    for (i = 0; i <= 2; i++) {
    
    
        for (j = 0; j <= 2; j++) {
    
    
            if (a[i][j] > max) {
    
    
                max = a[i][j];
            }
        }
    }

    // 输出最大值
    printf("最大元素的值为 %d\n", max);

    return 0;
}

Operationsergebnis:

Fügen Sie hier eine Bildbeschreibung ein

3. Definieren Sie das Zeichenarray

Ein Zeichen-Array ist ein spezieller Array-Typ, der zum Speichern von Zeichenfolgen verwendet wird. Eine Zeichenfolge ist eine Zeichenfolge, die '\0'durch ein Nullzeichen abgeschlossen wird. So definieren Sie ein Zeichenarray:

char string_name[length];

In:

  • charStellt den Elementtyp eines Zeichenarrays dar.
  • string_nameist der Name des Zeichenarrays.
  • lengthist die Länge des Zeichenarrays, einschließlich des Nullzeichens am Ende der Zeichenfolge '\0'.

Definieren Sie beispielsweise ein Zeichenarray zum Speichern von Namen:

char name[20];

Beispiel 1: Definieren Sie ein Zeichenarray zum Speichern von Namen

#include <stdio.h>

int main() {
    
    
    // 声明并初始化一个字符数组来存储名字
    char name[20]; // 假设名字最多包含19个字符,留一个位置给空字符 '\0'

    // 输入名字
    printf("请输入你的名字: ");
    scanf("%19s", name); // 限制输入的字符数不超过19个,并自动在末尾添加 '\0'

    // 打印名字
    printf("你好,%s!\n", name);

    return 0;
}

Operationsergebnis:

Fügen Sie hier eine Bildbeschreibung ein

4. Zeichenarray ausgeben

Um ein Zeichenarray auszugeben, können Sie die Funktionen der C-Standardbibliothek verwenden printf(). Hier ist ein Beispiel:

char name[] = "John";
printf("Name: %s\n", name);

Dies wird Folgendes ausgeben:Name: John

Beispiel 1: Definieren Sie eine Zeichenfolge „Hallo, alle!!“ und geben Sie diese Zeichenfolge dann aus.

#include<stdio.h>

int main() {
    
    
    char c[15] = {
    
    'H', 'i', ',', ' ', 'E', 'v', 'e', 'r', 'y', 'b', 'o', 'd', 'y', '!', '!'};

    int i;
    for (i = 0; c[i] != '\0'; i++) {
    
    
        printf("%c", c[i]);
    }

    printf("\n");
    return 0;
}

Operationsergebnis:

Fügen Sie hier eine Bildbeschreibung ein

Fügen Sie hier eine Bildbeschreibung ein
Beispiel 2: Ein Muster ausgeben

#include<stdio.h>

int main() {
    
    
    char c[3][3] = {
    
    {
    
    ' ', '*', ' '}, {
    
    '*', ' ', '*'}, {
    
    ' ', '*', ' '}};

    int i, j;
    for (i = 0; i <= 2; i++) {
    
    
        for (j = 0; j <= 2; j++) {
    
    
            printf("%c", c[i][j]);
        }
        printf("\n");
    }

    return 0;
}

Operationsergebnis:

Fügen Sie hier eine Bildbeschreibung ein

5. Geben Sie ein Zeichenarray ein

Um Eingaben vom Benutzer zu empfangen und in einem Zeichenarray zu speichern, können Sie die Standardbibliotheksfunktionen scanf()oder verwenden gets(). Hier ist ein Beispiel:

Verwendung scanf():

char name[20];
printf("Enter your name: ");
scanf("%s", name);

Verwendung gets()(Hinweis: nicht empfohlen, da es Sicherheitsprobleme gibt):

char name[20];
printf("Enter your name: ");
gets(name);

Beispiel 1: Geben Sie eine Zeichenzeile ein, die aus Leerzeichen und Wörtern besteht (die Anzahl der Zeichen liegt innerhalb von 80), bitte zählen Sie, wie viele Wörter es sind.

#include <stdio.h>
#include <string.h>
#include <stdbool.h>

int main() {
    
    
    char input[80]; // 声明一个字符数组来存储输入
    int wordCount = 0; // 用于统计单词数量
    bool inWord = false; // 用于标记是否在单词中

    // 提示用户输入字符数组
    printf("请输入一行由空格和单词组成的字符 (最多80个字符):\n");

    // 使用fgets函数获取用户输入
    fgets(input, sizeof(input), stdin);

    // 去掉输入中的换行符
    size_t len = strlen(input);
    if (len > 0 && input[len - 1] == '\n') {
    
    
        input[len - 1] = '\0';
    }

    // 遍历输入的字符数组来统计单词数量
    for (int i = 0; i < len; i++) {
    
    
        if (input[i] == ' ' || input[i] == '\t') {
    
    
            // 遇到空格或制表符,标记不在单词中
            inWord = false;
        } else {
    
    
            if (!inWord) {
    
    
                // 进入新单词,增加单词数量
                wordCount++;
                inWord = true;
            }
        }
    }

    // 输出统计结果
    printf("输入的字符包含 %d 个单词。\n", wordCount);

    return 0;
}

Operationsergebnis:

Fügen Sie hier eine Bildbeschreibung ein

Acho que você gosta

Origin blog.csdn.net/m0_53918860/article/details/133045213
Recomendado
Clasificación