第一步:定義一維指針數組,並賦予十二個月。
第二步:遍歷數組,判斷若是n在1到12中則將對應的地址賦給它。
第三步:返回a。html
char *getmonth( int n ) { char *mon[12]={"January","February","March","April","May","June","July","August","September","October","November","December"}; char *a; int i; if(n>0&&n<=12) { a=mon[n-1]; }else { a=NULL; } return a; }
中英文符號錯誤。node
第一步:將一個星期的七天賦給定義的一維指針數組。
第二步:經過strcmp函數判斷其與數組元素是否相同,若是相同則返回i,不然返回-1.
第三步:結束。git
int getindex( char *s ) { char *a[7]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"}; int i; for(i=0;i<7;i++) { if(strcmp(s,a[i])==0) { return i; } } return -1; }
無數組
第一步:使用strlen函數來計算字符串長度,先定義最長max爲0,使用for循環判斷其字符串長度是否比max大。
第二步:若是長於max則將這個數賦予max。
第三步:返回max。函數
int max_len( char *s[], int n ) { int i,len=0,max=0; for(i=0;i<n;i++) { len=strlen(s[i]); if(len>max) { max=len; } } return max; }
沒有給出i<n的條件。學習
第一步:新定義一個指針temp,若是s[i]與ch1相同則將其地址賦給temp跳出循環。
第二步:判斷s[i]與ch2是否相等,若是不相等則輸出s[i]不然輸出s[i]並換行,返回temp。
第三步:結束。.net
char *match( char *s, char ch1, char ch2 ) { int i,j=strlen(s),k = 0,m=0; char *temp; for(i=0;s[i] != '\0';i++) { if(s[i] == ch1) { temp = &s[i]; j = i; break; } } for(i=j;s[i] != '\0';i++) { if(s[i] != ch2) { printf("%c",s[i]); } else { printf("%c\n",s[i]); return temp; } } printf("\n"); return temp; }
沒有考慮s[i]不能是‘/0’的狀況。設計
第一步:創建鏈表,用p->data==-1判鏈表結束,定義head爲頭文件,定義鏈表n放置輸入元素。
第二步:創建的鏈表拆分爲兩個鏈表,歷遍鏈表,按單雙數將其放置於不一樣鏈表。
第三步:將k鏈表賦給原鏈表,並返回h1鏈表。3d
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; }
第一步:創建一個鏈表並返回。
第二步:對鏈表進行歷遍,當p->score小於min_score時將鏈表向前推動,去掉要刪除項。
第三步:返回鏈表頭文件。指針
struct stud_node *createlist() { struct stud_node *tail=NULL,*head=NULL,*p=NULL; int num=0,score=0; char name[20]; scanf("%d",&num); while(num!=0) { p=(struct stud_node*)malloc(sizeof(struct stud_node)); p->num=num; scanf("%s %d",p->name,&p->score); if(head==NULL) { head=p; }else { tail->next=p; } tail=p; scanf("%d",&num); p->next=NULL; } return head; } struct stud_node *deletelist( struct stud_node *head, int min_score ) { struct stud_node *ptr1=NULL,*ptr2=NULL; for(;head!=NULL;head=head->next) { if(head->score>=min_score) { if(ptr1==NULL) { ptr1=head; }else { ptr2->next=head; } ptr2=head; } } if(ptr1==NULL) { return NULL; }else { ptr2->next=NULL; } return ptr1; }
三、本題調試過程碰到的問題及解決辦法
無。
四、提交列表
第一步:定義鏈表。
第二步:利用鏈表原爲升序鏈表這一特色進行排序。
第三步:返回鏈表p。
struct ListNode *mergelists(struct ListNode *list1, struct ListNode *list2) { struct ListNode *h,*p,*i,*k; h=(struct ListNode*)malloc(sizeof(struct ListNode)); p=h; i=list1; k=list2; while(i!=NULL&&k!=NULL) { if(i->data<k->data) { p->next=i; i=i->next; } else { p->next=k; k=k->next; } p=p->next; } while(i) { p->next=i; i=i->next; p=p->next; } while(k) { p->next=k; k=k->next; p=p->next; } p->next=NULL; return h->next; }
學習了鏈表。
https://coding.net/u/zhouxuan12/p/123/git?public=true
http://www.cnblogs.com/lixiaojing/p/8760462.html
http://www.cnblogs.com/fengzx/p/8781906.html
http://www.cnblogs.com/dx2017/p/8781858.html