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