C语言经典题目(28)

简介: C语言经典题目(28)

编写函数实现两数交换(指针方式)

编写一个函数,实现两个整数的交换,要求采用指针的方式实现。

#include <stdio.h>
int main() {
    int a,b;
    scanf("%d",&a);
    scanf("%d",&b);
    int *p1 = &a;
    int *p2 = &b;
    int p3 = *p1;
    *p1 = *p2;
    *p2 = p3;
    printf("%d %d",a,b);
    return 0;
}

电子日历

KiKi学习了面向对象技术,学会了通过封装属性(变量)和行为(函数)定义类,现在他要设计一个电子日历类TDate。
它有3个私有数据成员:Month,Day,Year和若干个公有成员函数,要求:
(1)带有默认形参值的构造函数,默认值为0, 0, 0;
(2)输出日期函数,用“日/月/年”格式输出日期;
(3)设置日期函数,从键盘输入年、月、日。

#include<stdio.h>
int main()
{
    int year=0,month=0,day=0;
    scanf("%d %d %d",&year,&month,&day);
    printf("%d/%d/%d",day,month,year);
    return 0;
}

链表删除

从键盘输入了一个长度为 n 的数组,把这个数组转换成链表然后把链表中所有值是 x 的节点都删除。

#include <stdio.h>

typedef struct Node
{
    int data;
    struct Node *next;
}Node,*Linklist;

int main() {
    int n, x;
    scanf("%d%d",&n,&x);
    Linklist L=(Linklist)malloc(sizeof(Node));
    L->next=NULL;
    Node *p=L;
     for(int i=0;i<n;i++)
    {
        p->next= (Linklist)malloc(sizeof(Node));
        getchar();
        scanf("%d",&p->next->data);
        if(i!=n-1)
        {
            p=p->next;
        }
        else
        {
            p=p->next;
            p->next=NULL;
        }
    }
    Linklist  q;
    p = L;
    for (int i = 0; i < n; i++)
    {
        if (p->next->data == x)
        {
            q = p->next;
            p->next = q->next;
            free(q);
         }
        else {
            printf("%d ", p->next->data);
            p = p->next;          
        }
    }
    return 0;
}

双链表求和

输入了两个长度相同的数组分别是 a 和 b ,然后把数组 a 和 b 转换成链表 a 和链表 b 。把链表 a 中的全部值按顺序加到链表 b 中。
把数组 a 和数组 b 转换成链表,然后把链表 a 中的值加到链表 b 中,然后输出加和后的链表。
image.png

#include<stdio.h>
 
typedef struct ListNode {
    int val;
    struct ListNode *next;
}ListNode;
 
int main() {
    int n, val, val1, res = 0;
    scanf("%d", &n);
    ListNode *head = (ListNode *)malloc(sizeof(ListNode));
    ListNode *head1 = (ListNode *)malloc(sizeof(ListNode));
    ListNode *cur = head;
    ListNode *cur1 = head1;
    for (int i = 0; i < n; ++i)
    {
        cur->next = (ListNode *)malloc(sizeof(ListNode));
        cur = cur->next;
        scanf("%d", &val);
        cur->val = val;
        cur->next = NULL;
    }
        cur = head->next;
 
    for (int i = 0; i < n; ++i)
    {
        cur1->next = (ListNode *)malloc(sizeof(ListNode));
        cur1 = cur1->next;
        scanf("%d", &val1);
        cur1->val = val1;
        cur1->next = NULL;
    }
        cur1 = head1->next;
    while (cur)
    {
        res = cur->val+cur1->val;
        cur = cur->next;
        cur1 = cur1->next;
        printf("%d ", res);
    }
    return 0;
}
相关文章
|
5月前
|
C语言
C语言:数组和指针笔试题解析(包括一些容易混淆的指针题目)
C语言:数组和指针笔试题解析(包括一些容易混淆的指针题目)
|
5月前
|
存储 C语言 C++
C语言------------指针笔试题目深度剖析
C语言------------指针笔试题目深度剖析
42 1
|
10月前
2.C语言题目---字符串左旋
2.C语言题目---字符串左旋
71 1
|
10月前
|
存储
1.C语言题目---指针类(基础)
1.C语言题目---指针类(基础)
53 1
|
2月前
|
存储 编译器 C语言
【C语言】指针练习题目
【C语言】指针练习题目
|
4月前
|
测试技术 C语言
数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)
数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)
41 1
|
5月前
|
算法 编译器 API
C语言易混淆、简单算法、结构体题目练习、常见关键字总结-1
C语言易混淆、简单算法、结构体题目练习、常见关键字总结
|
4月前
|
C语言
c语言循环题目
c语言循环题目
|
5月前
|
C语言
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-4 报数 (20分)
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-4 报数 (20分)
|
5月前
|
C语言
C语言 浙大版《C语言程序设计(第3版)》题目集 练习8-8 移动字母 (10分)
C语言 浙大版《C语言程序设计(第3版)》题目集 练习8-8 移动字母 (10分)