主页 > 人工智能  > 

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

吉林大学程序设计基础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; }

标签:

吉林大学程序设计基础2022级实验复盘2.23由讯客互联人工智能栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“吉林大学程序设计基础2022级实验复盘2.23