要求一 、
1)C高级第三次PTA作业(1)

题目6-1
1.设计思路
     (1)主要描述题目算法
         第一步:将月份分别赋值;
         第二步:利用switch语句,输入月份;
         第三步:返回变量的地址值。
      (2)流程图
     

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:

       错误原因:月份英文打错。
题目6-2
1.设计思路
     (1)主要描述题目算法
         第一步:将星期分别赋值给一堆数组指针,赋初值为-1;
         第二步:用strmcp函数比较数组中每行元素与输入的字符串是否相同,相同则等于开始定义的函数;
         第三步:返回变量值。
   2.实验代码

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

3.本题调试过程碰到问题及解决办法
 
      错误信息:

       错误原因:赋初值时,令a=1了,以至于错误。
改正方法:将a=-1。
       
题目6-3
1.设计思路
     (1)主要描述题目算法
         第一步:定义数组,用strlen函数计算每行元素长度;
         第二步:利用for循环和if语句,比较大小,当定义元素长度大于max,交换;
         第三步:返回max的值。
   
2.实验代码

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

3.本题调试过程碰到问题及解决办法
 
      错误信息:

       错误原因: 应令count=q[0];,但直接写成 count=q[i];使交换进行不了,编译错误。
题目6-4
1.设计思路
     (1)主要描述题目算法
         第一步:定义s字符数组,定义s=ch1时的下表,并赋给一个整型变量;
         第二步:用for循环和if语句,将s[i]赋给指针字符j,爱循环中,若s[i]!=ch2.输出s[i],否则。s[i]加一,换行回到 j;
         第三步:输出换行,返回 j。
   
2.实验代码

char *match( char *s, char ch1, char ch2 ){int i,j;char *q=NULL;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.本题调试过程碰到问题及解决办法
 
      错误信息1:

       错误原因:当if((s+i)==ch1)循环时,弄成了if((s+i)==ch2)。
       改正方法: if(*(s+i)==ch1),并且,应逐次增加j的大小确定ch1到ch2之间的字符。
题目 编程题
1.设计思路
     (1)主要描述题目算法
         第一步:定义a,b组成的数组大小;
         第二步:利用for循环和if语句,慢慢划掉能被2整除的数和3后面所有能被3整除的数。。这样一直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数;
 
2.实验代码

#include <stdio.h>
int main ()
{int a=201,b=3945;int *p = (int *)malloc((a*b) *sizeof(int));int *q = (int *)malloc((a*b) *sizeof(int)); int i=0,j;for(i=0;i<(a*b);i++){p[i] = i+1;}for(i=0;i<(a*b);i++){for(j = i+1;j<=(a*b);j++) {if((p[i] !=1) && ( p[j] != 1) ){if(p[j]%p[i] ==0) {p[j] = 1;}}}}j=0;for(i=0;i<(a*b);i++) {if(p[i] != 1){printf(" %d",p[i]);j++;} if(j == 5){printf("\n");j=0;}}
}

2)C高级第三次PTA作业(2)  

题目6-1
1.设计思路
     (1)主要描述题目算法
         第一步:在readlist函数中,将输入的值存储在链表里,用while循环时条件,在while循环内进行动态分配;
         第二步:在getodd函数中,对链表结点中date的值进行判断,将奇数偶数date分别存储在一个新的链表中;
         第三步:返回链表的头结点。
      (2)流程图
       

2.实验代码

struct ListNode *readlist() {int number;struct ListNode *p = NULL,*head = NULL,*tail = NULL;scanf("%d",&number);while(number!=-1&&number>0 ) {p = (struct ListNode*)malloc(sizeof(struct ListNode));p->data = number;if(head == NULL) {head = p;} else {tail->next = p;}tail = p;scanf("%d",&number); }if(head == NULL) {return NULL;} tail->next = NULL;return head;
}
struct ListNode *getodd( struct ListNode **L ) {struct ListNode *p = *L,*head1 = NULL,*r = NULL,*L1 = NULL,*r1 = NULL;while(p!=NULL&&p->data>0) {if(p->data%2!=0) {if(head1 == NULL) {head1 = p;} else {r->next = p;}r = p;} else {if(L1 ==NULL) {L1 = p;} else {r1->next = p;}r1 = p;}p = p->next;}if(head1==NULL){return NULL;} else {r->next = NULL;}if(L1==NULL) {*L = NULL;} else {r1->next = NULL;*L = L1; }return head1;
}

3.本题调试过程碰到问题及解决办法
 
      错误信息1:

       错误原因: r1->next = p,时直接用了 r->next = p;
       
题目6-2
1.设计思路
     (1)主要描述题目算法
         第一步:在createlist函数中将输入的学号,姓名和分数存储到链表中,用while循环,返回链表的头结点;
         第二步:在deletelist函数中定义链表的结点,若结点中的分数小于规定的值,释放此结点的内存;
         第三部:返回主函数。
      (2)流程图(4分)

2.实验代码

struct stud_node *createlist() {int num,score;char name[20]; struct stud_node *p,*head=NULL,*tail=NULL;p = (struct stud_node*)malloc(sizeof(struct stud_node));scanf("%d",&num);while (num != 0){p = (struct stud_node *)malloc (sizeof (struct stud_node));scanf ("%s %d", p->name, &p->score);p->num = num;if (head == NULL)head = p;elsetail->next = p;tail = p;scanf ("%d", &num);}return head;
}
struct stud_node *deletelist( struct stud_node *head, int min_score ) {struct stud_node *L=head,*head1=NULL,*tail1=NULL;while(L!=NULL) {if(L->score>=min_score){if(head1==NULL) {head1 = L;} else {tail1->next = L;}tail1 = L;} else {free(L);}L=L->next;}if(head1==NULL) {return NULL; } else {tail1->next =NULL;}return head1;
} 

3.本题调试过程碰到问题及解决办法
 
      错误信息:

       错误原因:while (num != 0),忽略了学号不能等于0的情况,因当学号为0时不需要输入姓名及分数,代表结束。
       
题目6-3
1.设计思路
     (1)主要描述题目算法
         第一步:在ListNode list1中储存字符的内存大小;
         第二步:ListNode
list2中储存字符的内存大小;
         第三步:用for循环和if语句交换,用ListNode函数合并两个列表。
第四步:返回。
 
2.实验代码

struct ListNode *mergelists(struct ListNode *list1, struct ListNode *list2) {struct ListNode *p1=list1;int length=0;int array[100];for(p1=list1;p1!=NULL;p1=p1->next) {array[length] = p1->data;length++;} p1=list2;for(;p1!=NULL;p1=p1->next) {array[length] = p1->data;length++;} int i,j,t;for(i=0;i<length-1;i++) {for(j=i+1;j<length;j++) {if(array[j]<array[i]) {t =array[j];array[j]=array[i];array[i] = t;}}}struct ListNode *q,*head1 = NULL,*tail1=NULL;i=0;while(i<length) {q = (struct ListNode *)malloc(sizeof(struct ListNode));q->data = array[i];if(head1 == NULL) {head1 = q;} else {tail1->next = q;}tail1 = q; tail1->next = NULL;i++; }return head1;
}  

3.本题调试过程碰到问题及解决办法
 
      错误信息:

       错误原因: struct ListNode q,head1 = NULL,*tail1=NULL; i=0;时,令i=1了,以至于错误;
改正方法:将i=0.
  

要求三、学习总结和进度
1、总结两周里所学的知识点,回答下列问题?
     (1)如何理解指针数组,它与指针、数组有何关系?为何可以用二级指针对指针数组进行操作?

答:数组元素全为指针的数组称为指针数组。指针数组是一个数组,并且数组元素都为指针。二级指针是指一个指针指向的是另外一个指针,可以储存指针。

(2)将C高级第三次PTA作业(1)任何一个题目改为使用二级指针对指针数组进行操作。
6-2 查找星期

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

(3)用指针数组处理多个字符串有何优势?可以直接输入多个字符串给未初始化的指针数组吗?为什么?
答:节省空间,可自由决定数组长度。不可以,不初始化会使指针存入一个不确定的地址,破坏系统正常工作。

2、Git:https://git.coding.net/GUANCHENG/101.git

3、点评3个同学的本周作业。
张心悦:http://www.cnblogs.com/zxy980612/p/8858885.html
孙铭婧:http://www.cnblogs.com/sun031915/p/8836088.html
王姝雯:http://www.cnblogs.com/phsudie/p/8759331.html
4、请用表格和折线图呈现你本周(4/9 8:00~4/23 8:00)的代码行数和所用时间、博客字数和所用时间。

转载于:https://www.cnblogs.com/gu-an-cheng-wxm/p/8903685.html

C语言--第三次作业相关推荐

  1. c语言第三次作业(循环),C语言——第三次作业 - osc_kt69pvbx的个人空间 - OSCHINA - 中文开源技术交流社区...

    #作业要求一# 题目6-1 输出月份英文名 题目6-2 查找星期 题目6-3 计算最长的字符串长度 题目6-4 指定位置输出字符串 作业:C高级第三次作业(2)没有思路,知识点也没有明白,未完成. # ...

  2. 大学c语言第三章作业,华中科技大学光电子学院C语言第三章

    <华中科技大学光电子学院C语言第三章>由会员分享,可在线阅读,更多相关<华中科技大学光电子学院C语言第三章(20页珍藏版)>请在装配图网上搜索. 1.第三章 简单程序设计 1. ...

  3. 大学c语言第三章作业,c语言程序设计一章部分和第三章习题答案.doc

    c语言程序设计一章部分和第三章习题答案 实 验 报 告 课程名称 C语言程序设计A 实验项目 编程环境认知与顺序程序设计 实验仪器 PC机一台 学 院_____信息管理学院_______ 专 业 信息 ...

  4. 大学c语言第三章作业,第三章_C语言标准课件_ppt_大学课件预览_高等教育资讯网...

    第三章 C语言 的数据类型. 运算符和表达式第一节 标识符定义,用来标识常量名.变量名.函数名. 数组名.文件名等对象的有效字符序列命名规则: 1)由字母(大小写).数字.下划线 2)第一个 字符必须 ...

  5. mooc c语言第三周作业,2017moocC语言第七周答案

    <2017moocC语言第七周答案>由会员分享,可在线阅读,更多相关<2017moocC语言第七周答案(5页珍藏版)>请在读根文库上搜索. 1.n层嵌套平方根的计算(4分)题目 ...

  6. c语言第三章作业3.13,2012年计算机等级二级C语言章节习题及答案(13)

    第13章 文件 一.选择题(在下列各题的A).B).C).D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上.)13.1 fseek函数的正确调用形式是 A)fseek(文件指针 ...

  7. 网上作业c语言第三章,c语言 第3章 作业 和部分答案.doc

    网纤撤碟如背禄帆枉耸屉簿贝妙除崩凸痉篱堤匹糟隙碗挞渗福葫椅眶涂臆蹄碌整塌系亦勇蓬骡穿惊淬灼绝糠谈坊拽窝溢监怠敦惭肿昆歌慧晴秆氰圃嫩觅舅产涯梧脂魄攫阻修比琢芒涣墩促靡程断奶割字侍讽舵祥宛铅取芝饰傅坡龋减 ...

  8. OO第三单元作业总结

    OO第三次作业总结 一.JML (一)JML语言理论基础 (1)JML表达式: JML表达式包括以下几种: 原子表达式如\result(方法执行后的返回值).\old(表达式在相应方法执行前的取值): ...

  9. JML规格编程——BUAA OO第三单元作业总结

    整体概述 这个单元整体围绕Java Model Language(JML)展开,通过学习JML规格了解契约式编程的过程,课上实验中进行了JML规格的简要编写,课下实验主要通过阅读规格并按照规格的要求正 ...

最新文章

  1. Python--str与repr以及eval的使用方法
  2. Java LinkedList类基本用法
  3. [hdu3549]Flow Problem(最大流模板题)
  4. Bootstrap3 模态对话框的方法
  5. Tomcat服务器搭建及测试教程,腾讯+华为+阿里面试真题分享
  6. 软件测试:等价类划分-----EditBox问题增加文本框
  7. 整人vbs格式小代码
  8. 常用数据下载网站汇总
  9. SIP账号注册的SIP软电话的使用和常见问题
  10. java406错误_Java项目部署遇到406错误
  11. CSS transform属性+js requestAnimationFrame函数实现旋转方块以及调整转动速度
  12. java的即时通讯代码,即时通讯软件源代码-求用JAVA写的开源即时通讯软件的源代码...
  13. 无线调试神器:无线WiFi串口透传模块使用
  14. ado控件 怎么链接mysql_使用ADO或ADO控件访问数据库
  15. TortoiseGit 如何使用 cherry-pick
  16. Cygwin下安装apt-cyg
  17. codingdojo kata 之fizzbuzz
  18. KSO--阿里云部署NetCore项目无法通过端口号访问
  19. idea中字体大小以及注释的颜色设置
  20. [附源码]Python计算机毕业设计东北鹿产品售卖网站Django(程序+LW)

热门文章

  1. 〖Python APP 自动化测试实战篇⑥〗- 实战 - appium 定位手机元素之常用的元素定位方法
  2. SpringBoot---MongoDB的简单使用
  3. 软件视频会议性能测试要点,IP网络视频会议系统中MCU性能测试方法的研究
  4. oracle 所有句型,[转载]7分写作必备句型 3
  5. 完美世界GameJam参加报告——《解字》游戏的设计与开发
  6. H3CS-WLAN 无线工程师认证-郝文凯-专题视频课程
  7. 【转载】2019 年,国内博士后的招聘要求和待遇是怎样的?
  8. 武汉科技大学计算机专业强不强,武汉科技大学与湖北大学哪个实力更强?网友:没有可比性...
  9. Spring 纯注解定时任务
  10. 网易推全球首个公正邮箱 破解电子邮箱出证难