当前位置: 首页 > news >正文

吉林大学 程序设计基础 2022级 实验复盘 2.23

本人能力有限,发出只为帮助有需要的人。

以下为实验课的复盘,内容会有大量失真,请多多包涵。

此次实验限时一个小时,时间很紧张,很多内容可能并不准确。

1.输出有规律的字母串

输入输出如下;

输入:1

输出:A

输入:2

输出:ABA

输入:3

输出:ABACABA

题解如下

#include<stdio.h>
void printLetter(int n)
{
    if(n==0)//递归出口
        return;
    printLetter(n-1);//进行前后两轮递归,构建字母组成的结构
    printf("%c",n+'A'-1);//输出字母
    printLetter(n-1);
}
int main(void)
{
    int x;
    scanf("%d",&x);
    printLetter(x);
    return 0;
}

2.喂恐龙(11.17题目)

此题给出了一个小恐龙吃鸡肉的情景。虽然源代码很长,但编码的难度极低,基本只需要理解结构体的组成。填空的地方只需要复制粘贴,在此就不赘述了。

3.简化地图寻路(填空题)

输入一组坐标(x>=1且y>=1)作为终点,以在第一象限中的(1,1)为起始点,计算从起始点到终点需要走的步数。

输入:3 3

输出:4

原题为(注释处为缺少的空)

此题空的位置比较刁钻,记忆的版本和现实可能有误差

#include<stdio.h>
/*
*/
int findStep(int m,int n)
{
    if(/*	*/)
/*


*/
        return findStep(m-1,n)+/*  */;
}
int main (void)
{
    int m,n;
    scanf("%d %d",&m,&n);
    printf("%d",findStep(m,n));
    return 0;
}

一种题解(可能和想考的不一样)

#include<stdio.h>
int flag=0;//设置flag为全局变量,标记走过的步数
int findStep(int m,int n)//此题原点出发只有两个方向,不用回溯
{
    if(m==1&&n==1)//注意此题的出发点是(1,1)则此处为递归出口
        return flag;
    flag++;
    if(m>1)//保证m不会越界
        return findStep(m-1,n);
    if(n>1)//保证n不会越界
        return findStep(m,n-1);
    return 0;
}
int main (void)
{
    int m,n;
    scanf("%d %d",&m,&n);
    printf("%d",findStep(m,n));
    return 0;
}

4.删除链表中的重复元素

此题和oj期末考试(2.23)的题干一致,但此题作为填空题,我没能在考试时间内理解其代码想表达意思,就不在这里写了。有需要的可以看看期末考试(2.23)中的解法。

给出一个结构体链表,包含姓名、学号、年龄三个要素。输入一个n,要求输入n个三要素后,再输入一个数字,删除年龄为这个数字的链表节点,并输出链表。

输入:

3

1 zhangsan 18

2 lisi 19

3 wangwu 18

18

输出

2 lisi 19

题解如下

#include <stdio.h>
#include <malloc.h>
struct cell
{
    int x;
    char name[1000];//字符数字储存姓名
    int age;
    struct cell* next;
};

struct cell *build(int num)//输入链表
{
	struct cell *tmp;
    struct cell *headA = (struct cell*)malloc(sizeof(struct cell));
	scanf("%d %s %d",&headA->x,headA->name,&headA->age);//注意字符串的输入方法
    struct cell *end = headA;
	for(int i=0; i<num-1; i++)//输入num个元素
	{
		tmp = (struct cell*)malloc(sizeof(struct cell));
	    scanf("%d %s %d",&tmp->x,tmp->name,&tmp->age);
		end->next = tmp;
		end = tmp; 
	}
	end->next = NULL;
	return headA;
}

void print(struct cell* head)//输出链表
{
    struct cell* p;
    p=head;
    while(p!=NULL)
    {
        printf("%d %s %d\n",p->x,p->name,p->age);
        p=p->next;
    }
}
void release(struct cell* head)//释放链表所占用的空间
{
    struct cell *p,*tmp;
    p=tmp=head->next;
    while(p!=NULL)
    {
        tmp=p;
        p=p->next;
        free(tmp);
    }
    p=head=tmp=NULL;
}

struct cell* delCell(struct cell *head,int n)
{
    while(head->age==n)//当头节点的值要删除时,将头节点向后挪
        head=head->next;
    struct cell *p,*p0;
    p=head;
    while(p!=NULL)
    {
        if(p->age==n)//删除节点的标准操作
        {
            p0->next=p->next;
            p=p0;
        }
        p0=p;
        p=p->next;
    }
    return head;
}


int main(void)
{
    struct cell*head;
    int num,n;
    scanf("%d",&num);
    head=build(num);
    scanf("%d",&n);
    head=delCell(head,n);
    print(head);
    release(head);
    return 0;
}

相关文章:

  • 【Java】TCP网络编程(字节/符流)
  • Ubuntu 安装指定版本 Mysql,并设置远程连接(以安装mysql 5.5 为例)
  • STM32——毕设智能感应窗户
  • 前端面试题
  • 【LeetCode】剑指 Offer(11)
  • 华为OD机试模拟题 用 C++ 实现 - 寻找连续区间(2023.Q1)
  • 优雅的controller层设计
  • Echarts 每个柱子一种渐变色的象形柱状图
  • Liunx(狂神课堂笔记)
  • 2023软件测试工程师全新技术栈,吃透这些,起薪就是25k~
  • k8s新增节点机器,无法拉取和推送镜像的解决方案
  • AIX系统常见漏洞修复(exec、rlogin、rsh、ftp、telnet远端服务运行中)
  • 计算机组成原理(1)--计算机系统概论
  • 带你深入了解c语言指针后续
  • 单调栈(C/C++)
  • 「牛客网C」初学者入门训练BC139,BC158
  • ESP32设备驱动-MAX30100心率监测传感器驱动
  • SpringMVC常见面试题(2023最新)
  • Linux系统下搭建maven环境
  • java:自定义变量加载到系统变量后替换shell模版并执行shell
  • 海南一男子涨潮时赶海与同伴走散,警民协同3小时将其救上岸
  • 亲诚惠容行大道,命运与共开新篇——中共中央政治局委员、外交部长王毅谈习近平主席对越南、马来西亚、柬埔寨进行国事访问
  • 长三角铁路五一假期预计发送旅客2880万人次,同比增6%
  • 李强签署国务院令,公布《国务院关于修改〈快递暂行条例〉的决定》
  • 今年1-3月全国吸收外资2692.3亿元人民币
  • 稳健开局!今年粮食产量瞄准1.4万亿斤