编写函数实现两数交换(指针方式)
编写一个函数,实现两个整数的交换,要求采用指针的方式实现。
#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 中,然后输出加和后的链表。
#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;
}