第三次作业
PTA第三次作业#####
C高级第三次作业(1)####
6-1 输出月份英文名
1 设计思路
(1)主要描述题目算法
第一步:调用函数
第二步:定义一个字符数组,用for循环判断n是否在范围之内
第三步:若n小于等于12则输出英文的月份,否则输出null
(2)流程图
(3)代码
char *getmonth( int n )
{
char *s[12]={"January","February","March","April", "May", "June", "July", "August", "September", "October", "November", "December"};
if(n<=0||n>12)
{
return NULL;
}
else
{
return s[n-1];
}
}
(4)本题调试过程碰到问题及解决办法
字符串没加*号导致输出乱码
6-2 查找星期#####
1 设计思路
1 设计思路
(1)主要描述题目算法
第一步:看主函数与函数声明
第二步:用for循环,判断strcmp(s,a[i])==0,假如成立,输出i;假如不成立,则返回-1
第三步:若成功输出英文星期
第四步:否则输出wrong input
(2)流程图
(3)代码
int getindex( char *s )
{
int i;
char *a[7]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
for(i=0;i<7;i++)
{
if(strcmp(s,a[i])==0)
{
return i;
}
}
return -1;
}
(4)本题调试过程碰到问题及解决办法
无
6-3 计算最长的字符串长度
1 设计思路
(1)主要描述题目算法
第一步:看主函数与函数声明
第二步:定义i,s[i],
第三步:计算第一个字符串的长度赋值max
第四步:着最大值方法寻找最长字符串
(2)代码
int max_len( char *s[], int n )
{
int i;
int max=strlen(s[0]);
for(i=0;i<n;i++)
{
if(max<strlen(s[i]))
{
max=strlen(s[i]);
}
}
return max;
}
(3)本题调试过程碰到问题及解决办法
没有把 int max=strlen(s[0]) 初始化
6-4 指定位置输出字符串#####
1 设计思路
(1)主要描述题目算法
第一步:看主函数与函数声明
第二步:先寻找第一个字符
第三步:使用for循环输出值到第二个字符
(2)代码
char *match( char *s, char ch1, char ch2 )
{
int i;
char *ch=NULL;
for(i=0;s[i]!='\0';i++)
{
if(s[i]==ch1)
{
ch=s+i;
for(;(s[i]!=ch2)&&(s[i]!='\0');i++)
{
printf("%c",s[i]);
}
if(s[i]!='\0') printf("%c",ch2);
printf("\n");
return ch;
}
}
ch=&s[i];
printf("\n");
return ch;
}
(3)本题调试过程碰到问题及解决办法
无
C高级第三次作业(2)#####
1 设计思路
(1)主要描述题目算法
第一步:
第二步:
第三步:
第四步:
(2)代码
struct ListNode getodd(struct ListNode **L)
{
int flag=0;
struct ListNode p=L,head1=NULL,tail1=NULL,q=NULL,tail2=NULL,ptr=NULL,head2=NULL;
while(p!=NULL)
{
q=(struct ListNode)malloc(sizeof(struct ListNode));
if(p->data%2!=0)
{
q->data=p->data;
q->next=NULL;
if(head1NULL)
{
head1=q;
}else
{
tail1->next=q;
}
tail1=q;
ptr=p;
p=p->next;
free(ptr);
}else
{
if(head2NULL)
{
head2=p;
}else
{
tail2->next=p;
}
tail2=p;
p=p->next;
flag=1;
}
if(flag==1)
{
tail2->next=NULL;
}
*L=head2;
return head1;
}
}
编程题#####
代码:
点评#####
姜健
马钰娟
陆文奇
学习总结和进度#####
(1)如何理解指针数组,它与指针、数组有何关系?为何可以用二级指针对指针数组进行操作?
我认为数组指针p是一个指针,而指针数组p是一个存放N个指针变量的数组。
(2)将C高级第三次PTA作业(1)任何一个题目改为使用二级指针对指针数组进行操作。
(3)用指针数组处理多个字符串有何优势?可以直接输入多个字符串给未初始化的指针数组吗?为什么?
不会