广工 AnyviewC C语言习题 第十、十一章

2023-05-16

Anyview 第十、十一章


第十章

10.011 请编写一个函数func(char s[], char t[], int n),

由数组s中长度为n的字符序列构造其逆序列,并存储在数组t中。
例如,由给定字符序列s=“are”求得逆序列t=“era”;由s=“time”
求得t=“emit”。

void func(char s[], char t[], int n) 
/* 数组s的前n个元素存放给定的字符序列,
   数组t的前n个元素存放s的逆序列。
   注意:数组的下标从0开始。
*/
{
    for (int i=0;i<n;++i)
    {
        int j=n;
        t[j-1-i]=s[i];
    }
}

10.015 对长度为n的字符串s1,除首、尾字符外,将其余字符

按ASCII码降序排列,组合成一个新的字符串s2。

要求实现函数:

void func(char *s1, char *s2, int n); 
/* s1为字符串的起始地址,
   s2为新字符串的起始地址,
   n为字符串的长度。
   要求:s1串不能发生改变,
         s2串存放新的字符串。
*/
{
    int  i,j;
    strcpy(s2,s1);
    for (i=1;i<n-1;i++)
    {
        for (j=2;j<n-i;j++)
        {
            if (s2[j]>s2[j-1])
            {
                char t=s2[j];
                s2[j]=s2[j-1];
                s2[j-1]=t;
            }
        }
    } 
}

10.016 对字符串s1,除首、尾字符外,将其余字符

按ASCII码降序排列,组合成一个新的字符串s2。

要求实现函数:

void func(char *s1, char *s2); 
/* s1为字符串的起始地址,
   s2为新字符串的起始地址,
   注意:字符串尾字符之后跟随着一个结束符‘\0’,
         即ASCII码为0的字符,结束符不属于字符串。
   要求:s1串不能发生改变,
         s2串存放新的字符串。
*/
{
    int  i,j;
    int n=strlen(s1);
    strcpy(s2,s1);
    for (i=1;i<n-1;i++)
    {
        for (j=2;j<n-i;j++)
        {
            if (s2[j]>s2[j-1])
            {
                char t=s2[j];
                s2[j]=s2[j-1];
                s2[j-1]=t;
            }
        }
}

/**********

10.018 以字符串s第m(>=0)个字符开始的所有字符,

按升序的次序构成字符串t。
**********/

void substr(char *s, int m, char *t)
/* s为字符串的起始地址,
   m>=0,
   t为新字符串的起始地址,
   注意:字符串尾字符之后跟随着一个结束符‘\0’,
         即ASCII码为0的字符,结束符不属于字符串。
   要求:s串不能发生改变,
         t串存放新的字符串。
*/
{
   char *p=s+m;
    while (*p!='\0')
    {
    	*t=*p;
    	p++;
	}
}

10.033 编写函数,计算年份year中第yearday天相应的月和日。例如,

调用函数month_day(2000,61,&m,&d)之后,m=3,d=1,即2000年的第
61天是3月1日。

要求实现函数:
int month_day(int year, int yearday, int pmonth, int pday)
/
year是年,
yearday是天数,
若year和yearday合理,
pmonth和*pday是计算得出的月和日,函数返回1;
否则,函数返回0。
*/

int month_day(int year, int yearday, int *pmonth, int *pday) 
/* year是年,
   yearday是天数,
   若year和yearday合理,
   则*pmonth和*pday是计算得出的月和日,函数返回1;
   否则,函数返回0。
*/
{
     int month[12]={31,28,31,30,31,30,31,31,30,31,30,31}; 
    int i,z,y,flag=0;
    int *p1,*p2;
    
    if (year>0 && yearday>0)
    {
        if ((year%4==0 && year %100 !=0) || (year%400==0))
        {
            flag=1;
        }
        
        if (flag)
        {
            month[1]+=1;
            if (yearday>366)
                return 0;
        }
        else
        {
            if (yearday>365)
                return 0;
        }
        
        i=0,z=0;
        y=yearday;
        while (y>0)
        {
            y-=month[i];
            i++;
            z++;
        }
        y+=month[i-1];
        
        if (y==0)
        {
            z-=1;
            y=month[z-1];
        }
        *pmonth=z;
        *pday=y;
        return 1;
    }
    return 0;
}

10.044 请编写一个函数func,通过略去非数字字符,将字符串s转换为

一个整数(不得调用C语言提供的将字符串转换为整数的函数)。

要求实现函数:

long func(char *s) 
/* s是一个数字字符串的地址,
   函数返回值为由s含有的数字字符转换得到的数(包含正负数情况) 
*/
{
    long sum=0;
  	int e=0,i,j=1;
    char *t=s;
    while (*s!='\0')
    {
    	if (*s>='0' && *s<='9')
    	{
    		if (e>0)
				j=10;
			else
				j=1;	
    		sum=sum*j+*s-'0';
        	
        	e++;
    	}
    	s++;
    }
    
    if (*t=='-')
    sum=-sum;
    return sum;
}

10.105 请编写一个函数findmax(int []s, int n),返回数组s中n(>0)个整数

中的最大值。注意:要求在函数中采用指针(而不是下标)来处理数组元素。int findmax(int s[], int n)

int findmax(int s[], int n)    
/* 返回s中n(>0)个整数的最大值。
   注意:要求在函数中采用指针(而不是下标)来处理数组元素。
*/
{

}

第十一章

11.033 链表L存储了多个人的信息。写一函数,求这些人中年龄最大

(即出生日期最小)者的名字。
结构体类型定义如下:

    struct date{int year; int month; int day;}; //日期结构体类型
    struct studentNode    //链表结点的结构体类型
    {  char name[10];     //人名
       struct date birth; //出生日期
       struct studentNode *next
    };

*/

char *oldest(struct studentNode *L)
/* 若L是空表,则返回空指针null
   否则返回表中年龄最大者的名字
 */
{
    struct studentNode *p;
   struct studentNode *max;
   char *n;
   
   max=L;
   if (NULL==L) return NULL;
   p=L->next;
   while (p)
   {
        if (max->birth.year > p->birth.year)
            max=p;
        else if(max->birth.year == p->birth.year)
        {
            if (max->birth.month > p->birth.month)
                max= p;
            else if(max->birth.month == p->birth.month)
            {
               if (max->birth.day > p->birth.day)
                    max= p;
            }
        }                                                            
        p=p->next;
   }
   return max->name;
}

11.073 课程链表结点的结构体类型定义如下:

    struct courseNode   //课程链表结点的结构体类型
    {  int   cID;       //课程号,取值0~99
       char  name[10];  //课程名
       float credit;    //学分,取值0~5
       int   semester;  //学期,取值1~8
       struct courseNode *next;
    };
  结构体链表Lc存储了各学期多门课程的信息。写一函数,
  求学期s的总学分。
 */

float creditSum(struct courseNode *Lc, int s)
/* 若Lc是空表,则返回0;
   否则返回学期s的总学分
 */
{
    struct courseNode *p;
   float sum=0.0;
   if (NULL==Lc) return 0.0;
   p=Lc;
   while (p)
   {
        if (p->semester==s)
            sum+=p->credit;
        p=p->next;
   }
   return sum;
}

11.173 课程链表结点的结构体类型定义如下:

    struct courseNode   //课程链表结点的结构体类型
    {  int   cID;       //课程号,取值0~99
       char  name[10];  //课程名
       float credit;    //学分,取值0~5
       int   semester;  //学期,取值1~8
       struct courseNode *next;
    };
    ```
  结构体链表Lc存储了多门课程的信息。写一函数,将课程号
  为c的课程的学分修改为t。
 */
struct courseNode *creditChange(struct courseNode *Lc, int c, float t)
/* 若课程c不存在,则修改不成功,返回null;
   否则修改该课程的学分为t,返回指向该课程结点的指针。
 */
{
    struct courseNode *p;
    int flag=0;
    if (NULL==Lc) return NULL;
    if (c==Lc->cID)
    {
        p=Lc;
        p->credit=t;
        return p;
    }
    p=Lc->next;
    while (Lc->next)
    {
        if (Lc->next->cID==c)
        {
            p=Lc->next;
            p->credit=t;
            flag++;
        }
            
        Lc=Lc->next;
    }
    if (flag)
        return p;
    else
        return NULL;    
}

11.183 课程链表结点的结构体类型定义如下:

    struct courseNode   //课程链表结点的结构体类型
    {  int   cID;       //课程号,取值0~99
       char  name[10];  //课程名
       float credit;    //学分,取值0~5
       int   semester;  //学期,取值1~8
       struct courseNode *next;
    };

结构体链表Lc存储了多门课程的信息。写一函数,将课程号为c的课程结点删除。

要求实现下列函数:

struct courseNode *deleteCourse(struct courseNode **Lc, int c)
/* 若在链表Lc中课程c不存在,则删除不成功,返回null;
   否则从链表Lc中删除该课程结点,并返回指向该课程结点的指针。
 */
{
    struct courseNode*p;
    p=*Lc;
    while (p!=NULL)
    {
        if (p->next->cID==c)
        {
            struct courseNode*t=p->next;
           p->next=p->next->next;
           return t;
        }
        if (p->next==NULL)
        {
            if (p->cID==c)
            {               
               Lc[0]=NULL;
               return p;
            }
        }
        p=p->next;
    }
    return NULL;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

广工 AnyviewC C语言习题 第十、十一章 的相关文章

  • Pycharm显示cannot find declaration to go to,设置子目录为根目录

    Pycharm显示cannot find declartion to go to xff0c 设置子目录为根目录 使用Pycharm用ctrl跳转函数时显示cannot find declaration to go to 原因可能有很多 x
  • pycharm 2021.2.2 版本之前试用期过了怎么办

    pycharm 2021 2 2 版本之前试用期过了怎么办 虽然 jetbrains 的产品是商业收费 xff0c 而且价格不菲 xff0c 但官方还是为免费使用留下的空间 xff0c 实在良心 收费版可以免费试用30天 xff0c 问题是
  • layabox Native 自己下载资源并缓存

    我们在开发中 xff0c 不管是打的网络版还是本地版 xff0c 或多或少都有可能加载一些网络上的资源 xff0c 并且这些资源不想用dcc方式 xff0c 毕竟现在苹果对热更新管得比较严 xff0c 那如果不用dcc方式 xff0c 我们
  • Flutter 浅析之 自定义view 六 CircleProgressBar

    技术无止境 xff0c 只怕不学习啊 xff0c Flutter 我们开始吧 CircleProgressBar原型进度条 自定义view结合动画来完成进度条效果 CustomPainter 先来想想使用canvas的哪个方法来完成绘制 首
  • RoboMaster机甲大师:裁判系统服务器搭建(完全版)

    RoboMaster机甲大师 xff1a 裁判系统服务器搭建 xff08 完全版 xff09 更新 2022 03 28更新 2022 03 23前言准备搭建步骤MySQL安装配置环境组建局域网路由器端 Router 服务器端 Server
  • HTTP 请求方法 GET/POST/PUT/DELETE

    Web HTTP基础知识 HTTP请求是什么 xff1f HTTP超文本传输协议 xff0c 是确保服务器 xff08 Server xff09 和客户端 xff08 Client xff09 之间的正确通信 一个请求和响应的过程 xff1
  • kalibr标定工具使用方法

    1 首先在docker中安装ubuntu14 04 在16 04编译不过 xff0c 不知道为什么 xff0e 2 安装kalibr ros包 xff0e 3 下载官方提供的验证数据 xff0e 4 我们先标定相机 xff0c 使用的数据为
  • C语言、C++ 和 C# 三者的区别

    按时间顺序说一说这三门语言的基本吧 xff0c 这样比较一下儿就能知道他们的区别了 一 xff1a xff23 语言 xff23 语言诞生得非常早 xff0c 当时人们普遍还习惯用汇编语言编写软件 xff0c 而且没有什么统一 xff0c
  • requests的代理使用

    import requests from lxml import etree headers 61 39 User Agent 39 39 Mozilla 5 0 Macintosh Intel Mac OS X 10 15 7 Apple
  • HiMPP SAMPLE_VENC分析

    mpp中的例程 每一个例程面向一个典型应用 xff0c common是通用性主体函数 xff0c 我们只分析vencvenc中的main调用venc中的功能函数 xff0c 再调用common中的功能函数 xff0c 再调用mpp中的API
  • H264数据格式解析

    什么是H 264 H264 是 MPEG 4 标准所定义的最新编码格式 xff0c 同时也是技术含量最高 代表最新技术水平的视频编码格式之一 xff0c 标准写法应该是H 264H264 视频格式是经过有损压缩的 xff0c 但在技术上尽可
  • ISP和IQ调试

    什么是ISP isp image signal process 图像信号处理 xff0c 这是技术image signal processor 图像信号处理器 这是设备本质 xff1a 通过数字运算来修补前端采集的不理想数据 xff0c 尽
  • cortex-m3中寄存器

    简介 Cortex M3 是一个 32 位处理器内核 内部的数据路径是 32 位的 xff0c 寄存器是 32 位的 xff0c 存储器接 口也是 32 位的 CM3 采用了哈佛结构 xff0c 拥有独立的指令总线和数据总线 xff0c 可
  • RGBD-SLAM(一)——深度摄像机

    工欲善其事必先利其器 我们先从能够获取RGBD数据的相机开始谈起 首先我们来看一看其分类 一 根据其工作原理主要分为三类 xff1a 1 双目方案 xff1a xff08 1 xff09 原理 xff1a http blog csdn ne
  • 软件执行的流程

    什么是编译原理 代码执行分为2个部分 compilers 编译器 1 将代码编译成可执行文件 xff0c 汇编代码或者字节码 xff0c MDK就是一个编译器interpreters 解释器 1 执行编译器生成的可执行文件 xff0c mc
  • 编译器过程概述

    Lexical Analysis xff08 词法分析 xff09 词法分析的目的是将程序文本划分为单词 xff0c 或者我们在编译器中所说的 xff0c 标记利用程序文本中的空格 xff0c 分号等符号来识别程序文本 Parsing xf
  • 编程语言的一些答疑

    为什么会有这么多中编程语言 因为需求是多种多样的 xff0c 为一种语言实现所有需求是非常困难的 为什么会有新的编程语言 实现一个新的编译器并不困难 xff0c 几个人就可以了 xff0c 大型的编译器可能也就十几个人 xff0c 真正的成
  • 【串口系列】不定长接收多种方式

    目录 背景 声明 开发环境 正文 一 接收中断 43 空闲中断 二 接收中断 43 T35定时器中断 T35定时器 三 空闲中断 43 DMA 43 循环队列 背景 在单片机开发过程中 xff0c 串口通讯是一种非常常用的串行通通讯方式 x
  • 迭代器学习笔记

    本文是学习 STL源码剖析 时的学习笔记 1 迭代器是一种smart pointer 迭代器是一种类 xff0c 其包装了原生指针 xff0c 并重载了operator operator gt operator 61 operator 43
  • linux中gdb调试出现buffer overflow detected,program terminated with signal SIGABRT Aborted

    strcpy str1 str2 或memcpy p1 p2 size 极易出错 一定要确保str1 p1已经申请缓存 xff0c 且缓存空间充足 本次出错地方为 xff1a linux下文件地址较长 xff0c str1只申请了40个字节

随机推荐

  • Git系列一:Git安装 git gui here和git bash here的区别

    Git简介 xff1a Git 的工作就是创建和保存你的项目的快照及与之后的快照进行对比 说白了就是代码版本的控制系统 据个人实测 xff0c 在写论文的时候 xff0c 会有很多论文备份 xff0c 很不方便 xff0c Git对Word
  • VirtualBox虚拟机配置ssh与宿主机互通,实现文件传输

    在virtualbox中安装好Ubuntu16 04之后 xff0c 由于virtualbox与主机之间的文件拖放总是失败 已经安装好了增强功能 xff0c 双向复制 xff0c 文件拖放功能 xff0c 但还是出现问题 xff0c 因此搭
  • catkin_make编译报错:/usr/bin/ld: 找不到 -lxxx

    Linux下编译程序的时候 xff0c 出现 usr bin ld cannot find lxxx的错误 xff0c 主要的原因是找不到相应的动态库 xff0c 库文件没有导入到ld检索目录中 比如找不到 xff1a usr bin ld
  • Altium designer的工程文件都被改成SolidWorks2022了,且无法修改默认的启动程序的解决办法:

    安装soildworks2022后就发现电脑里的PCB工程文件除了 xx PcbDoc 默认打开方式是AD xff0c 其他的默认打开方式都是SoildWorks 而且右键更改属性里的默认打开方式也无法解决问题 解决办法 xff1a 需要修
  • printf输出bool值 | printf转换符

    bool类型是当整形输出的 bool c 61 false printf 34 d n 34 c 1 xff0e 转换说明符 a A 浮点数 十六进制数字和p P 记数法 C99 c 字符 d 有符号十进制整数 f 浮点数 包括float和
  • Cmake升级 更新 Ubuntu16.04 + ROS

    重要提示 千万不要卸载 Ubuntu原有的cmake xff0c 否则之前经过原有cmake编译过的文件将也会被删除 xff0c 比如 ros 千万不要使用下面这句命令删除原有的 cmake xff01 xff01 xff01 xff01
  • Ubuntu下扫描同一局域网的其他设备IP

    1 安装arp scan sudo apt get install arp scan 2 使用ifconfig查看本机IP地址 xff0c 一般有线在interface en0 eth0 无线在wlan0上 ifconfig 箭头中所指是我
  • C/C++基础 C语言预编译宏__LINE__、__FILE__、__DATE__、__TIME__、__FUNCTION__

    ANSIC标准定义了以下6种可供C语言使用的预定义宏 xff1a LINE 在源代码中插入当前源代码行号 FILE 在源代码中插入当前源代码文件名 DATE 在源代码中插入当前编译日期 注意和当前系统日期区别开来 TIME 在源代码中插入当
  • linux下每次git clone不需输入账号密码的方法

    有的仓库有很多的子模块 submodule 当clone的时候每个子模块都会让输入一次账户密码 xff0c 不胜其烦 xff0c 解决方法如下 xff1a 在 下 xff0c touch创建文件 git credentials 用vim编辑
  • Ubuntu创建新用户的两种方法

    组里的服务器是Ubuntu系统 xff0c 跑实验的话需要远程访问 xff0c 这样的话需要在服务器上创建一个自己的账户 xff0c 本文记录一下在Ubuntu系统下创建新用户的过程 xff08 服务器的远程访问一般通过ssh来实现 xff
  • Ubuntu中gnome-terminal的使用

    基本使用 gnome terminal命令用于打开一个新的终端 xff0c 直接在命令行就可以打开一个新的终端 gnome terminal 打开后自动最大化 gnome terminal maximize 打开后全屏 gnome term
  • 【计算机基础】字节序

    字节序 计算机最小的存储单位是 位 xff08 Bit xff09 xff0c 但是 xff0c 计算机中最基本的存储单位是字节 xff08 Byte xff09 1 Byte 61 8 Bit 计算机在存储大于1字节的数据时 xff0c
  • 内存中堆和栈的区别

    在说堆和栈之前 xff0c 我们先说一下JVM xff08 虚拟机 xff09 内存的划分 xff1a Java程序在运行时都要开辟空间 xff0c 任何软件在运行时都要在内存中开辟空间 xff0c Java虚拟机运行时也是要开辟空间的 J
  • 1.5 万字 + 40 张图解 HTTP 常见面试题(值得收藏)

    作者 xff1a 小林coding 图解计算机基础网站 xff1a https xiaolincoding com 大家好 xff0c 我是小林 xff0c 我最开始写的第一篇图解文章就是这篇 xff1a 那时候我也就不到 100 读者 x
  • libcurl第七课 multipart/formdata表单使用

    场景 multipart form data是浏览器用表单上传文件的方式 最常见的情境是 xff1a 在写邮件时 xff0c 向邮件后添加附件 xff0c 附件通常使用表单添加 xff0c 也就是用multipart form data格式
  • 【测绘专用】中海达全站仪数据导入南方CASS

    先从全站仪导入数据到电脑 xff08 我是用U盘的 xff09 xff0c 然后打开数据文件后是这个样子 上图并不是导出后原先的数据格式 导出文件后 xff0c 它的数据格式实际上不是上面这样的 xff0c 要经过处理后才行 从中海达下载数
  • 广工 AnyviewC 数据结构习题 第二章

    广工 AnyviewC 数据结构习题 第二章 广工 AnyviewC 数据结构习题 第二章Anyview 数据结构 第二章1 题目 试写一算法 xff0c 实现顺序栈的判空操作2 题目 试写一算法 xff0c 实现顺序栈的取栈顶元素操作3
  • 广工 AnyviewC C语言习题 第六章

    Anyview 第六章 6 022 n是系统给定的外部变量 编写程序 xff0c 求1到n间的 自然数之和 请定义局部变量s存放求和的结果 xff0c 并用下 列语句输出结果 span class token function printf
  • 广工 AnyviewC C语言习题 第七章

    Anyview 第七章 习题7 010 写一函数求3个整数中最小的数 span class token keyword int span span class token function min span span class token
  • 广工 AnyviewC C语言习题 第十、十一章

    Anyview 第十 十一章 第十章 10 011 请编写一个函数func char s char t int n xff0c 由数组s中长度为n的字符序列构造其逆序列 xff0c 并存储在数组t中 例如 xff0c 由给定字符序列s 61