aa

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
aa [2024/12/02 18:55] doge24190aa [2025/04/15 01:32] (当前版本) doge24190
行 6: 行 6:
  
 点击下载 点击下载
-<code> 
-以下是根据题目要求设计的两个C语言程序: 
  
-(1) insert函数 +{{tag>存}}
- +
-设计一个char* insert(char* s1, char* s2, int n)函数,在字符串s1的第n个位置插入字符串s2: +
- +
-#include <stdio.h> +
-#include <string.h> +
-#include <stdlib.h> +
- +
-char* insert(char* s1, char* s2, int n) { +
-    int len1 = strlen(s1); +
-    int len2 = strlen(s2); +
-    char* result = (char*)malloc(len1 + len2 + 1); // 分配新的内存 +
- +
-    if (n > len1) n = len1; // 防止n超出范围 +
- +
-    // 拷贝s1前n个字符 +
-    strncpy(result, s1, n); +
-    result[n] = '\0'; +
- +
-    // 拼接s2 +
-    strcat(result, s2); +
- +
-    // 拼接s1剩余部分 +
-    strcat(result, s1 + n); +
- +
-    return result; +
-+
- +
-int main() { +
-    char s1[100], s2[100]; +
-    int n; +
- +
-    printf("请输入字符串s1: "); +
-    scanf("%s", s1); +
-    printf("请输入字符串s2: "); +
-    scanf("%s", s2); +
-    printf("请输入插入位置n: "); +
-    scanf("%d", &n); +
- +
-    char* result = insert(s1, s2, n); +
-    printf("结果字符串: %s\n", result); +
- +
-    free(result); // 释放动态分配的内存 +
-    return 0; +
-+
- +
-(2) 改写strcpy函数 +
- +
-利用指针实现char* strcpy(char* s1, char* s2)的功能: +
- +
-#include <stdio.h> +
- +
-char* strcpy_custom(char* s1, char* s2) { +
-    char* p = s1; // 保起始地址 +
-    while ((*s1++ = *s2++) != '\0'); // 逐字符复制 +
-    return p; +
-} +
- +
-int main() { +
-    char s1[100], s2[100]; +
- +
-    printf("请输入源字符串s2: "); +
-    scanf("%s", s2); +
- +
-    strcpy_custom(s1, s2); +
-    printf("复制结果s1: %s\n", s1); +
- +
-    return 0; +
-} +
- +
-以上代码分别完成了两个任务,运行后输入测试数据即可查看结果。 +
- +
- +
-根据图片中的要求,以下是各题的 C 语言程序实现: +
- +
-(1) 学生信息的结构体 +
- +
-#include <stdio.h> +
- +
-typedef struct { +
-    char name[50]; +
-    int id; +
-    int age; +
-} Student; +
- +
-int main() { +
-    Student students[5]; +
-    int sum_age = 0, min_age_index = 0; +
- +
-    // 输入学生信息 +
-    for (int i = 0; i < 5; i++) { +
-        printf("输入学生%d的姓名、学号和年龄:\n", i + 1); +
-        scanf("%s %d %d", students[i].name, &students[i].id, &students[i].age); +
-        sum_age += students[i].age; +
-        if (students[i].age < students[min_age_index].age) { +
-            min_age_index = i; +
-        } +
-    } +
- +
-    printf("\n平均年龄: %.2f\n", sum_age / 5.0); +
-    printf("年龄最小的学生信息: 姓名: %s, 学号: %d, 年龄: %d\n", +
-           students[min_age_index].name, students[min_age_index].id, students[min_age_index].age); +
-    return 0; +
-+
- +
-(2) Student_Record 的结构体和排序 +
- +
-#include <stdio.h> +
-#include <string.h> +
- +
-typedef struct { +
-    char name[50]; +
-    char birth_date[15]; +
-    float total_score; +
-} StudentRecord; +
- +
-int main() { +
-    StudentRecord students[10]; +
- +
-    // 输入学生信息 +
-    for (int i = 0; i < 10; i++) { +
-        printf("输入第%d个学生的姓名、出生日期和总分:\n", i + 1); +
-        scanf("%s %s %f", students[i].name, students[i].birth_date, &students[i].total_score); +
-    } +
- +
-    // 按总分排序 +
-    for (int i = 0; i < 9; i++) { +
-        for (int j = i + 1; j < 10; j++) { +
-            if (students[i].total_score < students[j].total_score) { +
-                StudentRecord temp = students[i]; +
-                students[i] = students[j]; +
-                students[j] = temp; +
-            } +
-        } +
-    } +
- +
-    printf("\n按总分排序的学生信息:\n"); +
-    for (int i = 0; i < 10; i++) { +
-        printf("姓名: %s, 出生日期: %s, 总分: %.2f\n", +
-               students[i].name, students[i].birth_date, students[i].total_score); +
-    } +
- +
-    return 0; +
-+
- +
-(3) 城市信息的排序 +
- +
-#include <stdio.h> +
-#include <string.h> +
- +
-typedef struct { +
-    char name[50]; +
-    int population; +
-    int culture_level; +
-} City; +
- +
-void sortCities(City cities[], int n, int key) { +
-    for (int i = 0; i < n - 1; i++) { +
-        for (int j = i + 1; j < n; j++) { +
-            if ((key == 1 && strcmp(cities[i].name, cities[j].name) > 0) || +
-                (key == 2 && cities[i].population < cities[j].population) || +
-                (key == 3 && cities[i].culture_level < cities[j].culture_level)) { +
-                City temp = cities[i]; +
-                cities[i] = cities[j]; +
-                cities[j] = temp; +
-            } +
-        } +
-    } +
-+
- +
-int main() { +
-    City cities[5]; +
- +
-    // 随机输入城市信息 +
-    for (int i = 0; i < 5; i++) { +
-        printf("输入第%d个城市的名称、人口和文化程度:\n", i + 1); +
-        scanf("%s %d %d", cities[i].name, &cities[i].population, &cities[i].culture_level); +
-    } +
- +
-    // 排序并显示 +
-    for (int i = 1; i <= 3; i++) { +
-        sortCities(cities, 5, i); +
-        printf("\n排序方式 %d 的结果:\n", i); +
-        for (int j = 0; j < 5; j++) { +
-            printf("城市: %s, 人口: %d, 文化程度: %d\n", +
-                   cities[j].name, cities[j].population, cities[j].culture_level); +
-        } +
-    } +
- +
-    return 0; +
-+
- +
-(4) 书名排序 +
- +
-#include <stdio.h> +
-#include <string.h> +
- +
-typedef struct { +
-    char title[50]; +
-} Book; +
- +
-void sortBooks(Book books[], int n) { +
-    for (int i = 0; i < n - 1; i++) { +
-        for (int j = i + 1; j < n; j++) { +
-            if (strcmp(books[i].title, books[j].title) > 0) { +
-                Book temp = books[i]; +
-                books[i] = books[j]; +
-                books[j] = temp; +
-            } +
-        } +
-    } +
-+
- +
-int main() { +
-    Book books[10]; +
- +
-    // 输入书名 +
-    for (int i = 0; i < 10; i++) { +
-        printf("输入第%d本书的书名:\n", i + 1); +
-        scanf("%s", books[i].title); +
-    } +
- +
-    sortBooks(books, 10); +
- +
-    printf("\n排序后的书名:\n"); +
-    for (int i = 0; i < 10; i++) { +
-        printf("%s\n", books[i].title); +
-    } +
- +
-    return 0; +
-+
- +
-(5-7) 单向链表操作 +
- +
-#include <stdio.h> +
-#include <stdlib.h> +
- +
-typedef struct Node { +
-    char name[50]; +
-    int age; +
-    float salary; +
-    struct Node* next; +
-} Node; +
- +
-Node* createList() { +
-    Node* head = NULL; +
-    Node* temp = NULL; +
- +
-    for (int i = 0; i < 5; i++) { +
-        Node* newNode = (Node*)malloc(sizeof(Node)); +
-        printf("输入第%d个节点的姓名、年龄和工资:\n", i + 1); +
-        scanf("%s %d %f", newNode->name, &newNode->age, &newNode->salary); +
-        newNode->next = NULL; +
- +
-        if (head == NULL) { +
-            head = newNode; +
-        } else { +
-            temp->next = newNode; +
-        } +
-        temp = newNode; +
-    } +
-    return head; +
-+
- +
-void displayList(Node* head) { +
-    Node* temp = head; +
-    while (temp != NULL) { +
-        printf("姓名: %s, 年龄: %d, 工资: %.2f\n", temp->name, temp->age, temp->salary); +
-        temp = temp->next; +
-    } +
-+
- +
-Node* insertNode(Node* head, int position, char name[], int age, float salary) { +
-    Node* newNode = (Node*)malloc(sizeof(Node)); +
-    strcpy(newNode->name, name); +
-    newNode->age = age; +
-    newNode->salary = salary; +
- +
-    if (position == 0) { +
-        newNode->next = head; +
-        return newNode; +
-    } +
- +
-    Node* temp = head; +
-    for (int i = 0; i < position - 1 && temp != NULL; i++) { +
-        temp = temp->next; +
-    } +
- +
-    if (temp != NULL) { +
-        newNode->next = temp->next; +
-        temp->next = newNode; +
-    } +
-    return head; +
-+
- +
-Node* deleteNode(Node* head, int position) { +
-    if (position == 0 && head != NULL) { +
-        Node* temp = head; +
-        head = head->next; +
-        free(temp); +
-        return head; +
-    } +
- +
-    Node* temp = head; +
-    for (int i = 0; i < position - 1 && temp != NULL; i++) { +
-        temp = temp->next; +
-    } +
- +
-    if (temp != NULL && temp->next != NULL) { +
-        Node* toDelete = temp->next; +
-        temp->next = temp->next->next; +
-        free(toDelete); +
-    } +
-    return head; +
-+
- +
-int main() { +
-    Node* head = createList(); +
-    printf("\n链表内容:\n"); +
-    displayList(head); +
- +
-    head = insertNode(head, 2, "新节点", 25, 5000.0); +
-    printf("\n插入后的链表:\n"); +
-    displayList(head); +
- +
-    head = deleteNode(head, 2); +
-    printf("\n删除后的链表:\n"); +
-    displayList(head); +
- +
-    return 0; +
-+
- +
-以上程序覆盖了所有要求,如有需要调整的部分,请告诉我! +
-</code>+
  • aa.1733136934.txt.gz
  • 最后更改: 2024/12/02 18:55
  • doge24190