6-1 输出月份英文名
一、描述算法
1.用char将月份定义到一个数组中
2.确定条件,在1~12中输出对应的英文,否组返回NULL
二、实验代码
char *getmonth( int n )
{
char *s[12]={"January","February","March","April", "May", "June", "July", "August", "September", "October", "November", "December"};
if(n>12 || n<=0)
{
return NULL;
}
else
{
return s[n-1];
}
}
三、问题及解决办法
错误:想用break,或者if循环来写
代码:
修改后又错:想通过数组的循环,来写节省代码
代码:
再改:更改变量类型
代码:
再再错:指针
对了:
疑问?
输入0时,乱码,怎么调整。
PTA提交时出现错误
这些正是我Dev中忽略的地方
又错:
改正:
&&:逻辑与,前后条件同时满足表达式为真
||:逻辑或,前后条件只要有一个满足表达式为真
四、PTA列表
6-2查找星期
一、描述算法
1,用for循环来遍历,
2,运用strcmp函数,设定输入字符串=*a[]中某个单词=0时返回与之对应数字。反之则返回-1
二、实验代码
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;
}
三、问题及解决办法
问题:
还是按照上一题的思路写,没写出来,后来看同学的,知道了strcmp函数的使用方法。
改正:
运用strcmp函数,设定输入字符串=*a[]中某个单词时输出与之对应数字。
四、PTA列表
6-3 计算最长的字符串长度
一、描述算法
1、利用for循环,将输入的字符进行比较,将最长的交换至max中
2、利用if判断代码长度大小
二、实验代码
int max_len(char *s[],int n)
{
int i,max=0;
for(i=0;i<n;i++)
if(strlen(s[i])>max)
max=strlen(s[i]);
return max;
}
三、问题及解决办法
问题:最开始我的想法是,定义一个最大值的变量,将字符串长度进行比较得到最长的,随之输出它的长度。但是一直没有找到要怎么写,后来看了同学的,有知道了一个新函数,字符数组strlen.
错误一:
错误二:
改正:给max赋初值,
疑问:当我给i赋初值为0时,Dev通过并且,编译结果正确,但是在PTA中却有错误,要给max赋初值0才能编译正确。
PTA,将几个想法进行尝试
6-1 奇数值结点链表
三、问题及解决办法
代码:
struct ListNode *readlist(){
struct ListNode *head=NULL,*p=NULL,*q=NULL;
int data;
p=q=(struct ListNode *)malloc(sizeof(struct ListNode));
scanf("%d",&p->data);
while(p->data!=-1){
if(head==NULL){
head=p;
}else{
q->next=p;
}
q=p;
p=(struct ListNode *)malloc(sizeof(struct ListNode));
scanf("%d",&p->data);
}
q->next=NULL;
return(head);
}
struct ListNode *getodd( struct ListNode **L ){
struct ListNode *head=NULL,*q=NULL,*p,*w=NULL,*head1=NULL;
if(*L!=NULL){
for(head=*L;head!=NULL;head=head->next){
if(head->data%2!=0){
if(head1==NULL){
head1=head;
}else{
p->next=head;
}
p=head;
}else{
if(q==NULL){
q=head;
}else{
w->next=head;
}
w=head;
}
}
p->next=NULL;
if(w!=NULL)
w->next=NULL;
*L=q;
}else{
return NULL;
}
return(head1);
}
Dev中通过但是PTA有错误
6-2 学生成绩链表处理
struct stud_node *createlist(){
struct stud_node *head=NULL,*p=NULL,*q=NULL;
p=q=(struct stud_node *)malloc(sizeof(struct stud_node));
scanf("%d",&p->num);
while(p->num!=0){
scanf("%s %d",p->name,&p->score);
if(head==NULL){
head=p;
}else{
q->next=p;
}
q=p;
p=(struct stud_node *)malloc(sizeof(struct stud_node));
scanf("%d",&p->num);
}
q->next=NULL;
return (head);
}
struct stud_node *deletelist( struct stud_node *head, int min_score ){
struct stud_node *p,*q,*w;
if(head!=NULL){
for(w=head;w!=NULL;w=w->next){
if(w->score<min_score){
for(p=head;min_score<=p->score&&p->next!=NULL;p=p->next){
q=p;
}
if(min_score>p->score){
if(p==head){
head=p->next;
}else{
q->next=p->next;
}
}
}
}
return (head);
}
else{
return NULL;
}
}
PTA
学习情况
总结
这两周在刚开始时,学习劲头很足,但是随着时间的推移,以及学校的活动,便不再把那么多精力,放在这里,并且,作业题有比较难,形成了一种恶性循环,使得自己变得懈怠。不过在这周的学习中也掌握了一些之前没有掌握的知识。
Git
(https://github.com/dangrui/dangrui)
评论:
http://www.cnblogs.com/chenxidream/p/8778302.html
http://www.cnblogs.com/jiaoruijun/p/8904782.html
http://www.cnblogs.com/messi6/p/8810097.html