C/C++知识点之2018上C语言程序设计(高级)作业- 第3次作业
小标 2018-09-19 来源 : 阅读 1295 评论 0

摘要:本文主要向大家介绍了C/C++知识点之2018上C语言程序设计(高级)作业- 第3次作业,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍了C/C++知识点之2018上C语言程序设计(高级)作业- 第3次作业,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

作业要求一 :
PTA作业的提交列表:
 
 
作业要求二:
6-1 输出月份英文名
1.设计思路
主要描述算法:
第一步:本题要求通过字符串指针实现函数,可以返回一个给定月份的英文名称。
第二步:定义整形变量n,通过switch语句,判断每一条语句,如果是就按数字输出月份,否则执行default,输出NULL
第三步:按要求返回主函数并输出。
2.实验代码:

char *getmonth( int n )
{
    switch(n)
    {
        case 1:return "January";
        case 2:return "February";
        case 3:return "March";
        case 4:return "April";
        case 5:return "May";
        case 6:return "June";
        case 7:return "July";
        case 8:return "August";
        case 9:return "September";
        case 10:return "October";
        case 11:return "November";
        case 12:return "December";
        default:return NULL;
     } 


3.本题调试过程碰到问题及解决办法


遇到的问题1:应该返回的是指针,而不是字符串。
改正方法:将printf改成return
 遇到的问题2:case后面的数字用单引号括了起来。
改正方法:case后面可以是数字,因为switch后面是整形,所以不用单引号。(通过查找课本105页得到答案)
6-2 查找星期
1.设计思路
主要描述算法:
第一步:本题要求用指针数组实现函数,可以根据下表查找到星期,返回对应的序号。
第二步:首先定义一个指针数组,将星期都存到数组里,通过for循环语句和if条件判断(strcmp)比较星期是否相同,break回到上一级,否则返回m。
第三步:按要求输出序号和星期或-1
2.实验代码:

int getindex( char *s )
{
    int i,m=-1;
    char *week[7]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
    for(i=0;i<7;i++)
    {
        if (strcmp (s, week[i]) == 0) 
        {
          m=i;
            break;
          }  
    }  
    return m;


3.本题调试过程碰到问题及解决办法

遇到的问题:本题要求传递的应该是字符串,所以不能用switch语句
改正方法:用上课讲的指针数组的方式。
遇到的问题2:在循环中没有先定义m=-1所以总是出现部分正确。
改正方法:先把m=-1定义在前面,再将其赋给i,就不会出现部分正确了。
 
6-3 计算最长的字符串长度
1.设计思路
主要描述算法:
第一步:本题要求实现一个函数,用于计算有n个元素的指针数组s中最长的字符串的长度
第二步:首先定义整形变量和字符指针数组m,通过两个for循环判断,*(*(s+i)+j)!=‘\0‘,继续执行;在第二个for循环中判断如果m[i]>count,输出最长的长度,否则继续循环
第三步:输出指针数组中最长字符串的长度。
2.实验代码:

int max_len( char *s[], int n )
{
    int i,j,m[20]={0};
    int count=0;
    for(i=0;i<n;i++)
    {
        for(j=0;*(*(s+i)+j)!=‘\0‘;j++)
        {
        }
        m[i]=j;
    }
    for(i=0;i<n;i++)
    {
        if(m[i]>count)
        {
            count=m[i];
        }
    }
    return count;


3.本题调试过程碰到问题及解决办法

遇到的问题:指针*(*(s+i)+j)!=‘\0‘弄错了
改正方法:应该是用指针的指针来判断。
 
6-4 指定位置输出字符串
1.设计思路
主要描述算法:
第一步:本题要求编写实现函数实现对给定的一个字符串和两个字符,打印出给定字符串中从与第一个字符匹配的位置开始到与第二个字符匹配的位置之间的所有字符
第二步:首先定义整形变量,通过一个for循环先将ch1的值赋给*(s+i);定义指针,判断(*(s+j)!=ch2)&&(*(s+j)!=‘\0‘),如果*(s+j)!=‘\0‘,输出,否则返回a
第三步:在大的for循环后输出,再返回s+i的值。
2.实验代码:

char *match( char *s, char ch1, char ch2 ){
    int i,j;
    for(i=0;*(s+i)!=‘\0‘;i++)
    {
        if(*(s+i)==ch1)
        {
          char *a=  &s[i];
            for(j=i;(*(s+j)!=ch2)&&(*(s+j)!=‘\0‘);j++)
            {
                printf("%c",*(s+j));
            }
            if(*(s+j)!=‘\0‘)
            printf("%c",*(s+j));
            printf("\n");
            return a;
        }
    }
    printf("\n");
    return s+i;
}

3.本题调试过程碰到问题及解决办法

遇到的问题:%c输出的应该是指针*(s+i),而不是s+i
改正方法:将s+i改成*(s+i),程序运行成功。
 

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程