题目一
题目二
题目三
题目四
题目五
部分源代码
11-1求矩阵的局部极大值
#include<stdio.h> int main(){ int m,n,i=0,j=0,count=1; scanf("%d%d",&m,&n); int a[20][20]; for(i=0;i<m;i++) for(j=0;j<n;j++) scanf("%d",&a[i][j]); for(i=1;i<m-1;i++) for(j=1;j<n-1;j++){ if(a[i][j]>a[i-1][j]&&a[i][j]>a[i][j-1]&&a[i][j]>a[i+1][j]&&a[i][j]>a[i][j+1]){ printf("%d %d %d\n",a[i][j],i+1,j+1); count=0; } } if(count==1) printf("None %d %d",m,n); return 0; }
学习了二维数组的基本定义方法两个嵌套的for循环输入,再嵌套for循环进行输出。
12-2统计字符出现次数
#include<stdio.h>
int main(){ char str[80]; int count=0,i=0; char ch; while((str[i]=getchar())!='\n') i++; str[i]='\0'; scanf("%c",&ch); for(i=0;str[i]!='\0';i++){ if(str[i]==ch){ count++; } } printf("%d",count); return 0; }
学习了字符串的输入,输入回车时循环结束最后一位为'\0',字符串的输入在之后有了更简便的方法直接利用gets函数。
13-4 使用函数的选择法排序
void sort( int a[], int n ){ int i,index,k,temp; for(k=0;k<n-1;k++){ index=k; for(i=k+1;i<n;i++) if(a[i]<a[index])index=i; temp=a[index]; a[index]=a[k]; a[k]=temp; } }
选择排序法!十分重要,经常会用到,利用变量temp实现值得交换可以从大到小,或从小到大的进行输出,十分方便。
14-2 删除字符
void delchar( char *str, char c ){ char *p; p=str; if(*str==0)return ; else{ while(*str){ if(*str!=c){ *p=*str; p++; } str++; } *p=*str; return; } } 指针的使用方法,要牢记指针不同于数组,*p代表值,p代表的地址
15-5 建立学生信息链表
void input(){ int num,score; char name[20]; struct stud_node *p; scanf("%d",&num); while(num){ p=(struct stud_node *)malloc(sizeof(struct stud_node)); scanf("%s %d",name,&score); p->num=num; p->score=score; strcpy(p->name,name); if(head==NULL) head=p;4 else tail->next=p; tail=p; scanf("%d",&num); } }
单向链表的头尾指针保存在全局变量'head'和'tail'中,输入为若干个学生的信息(学号、姓名、成绩),当输入学号为0时结束。尾插法在这道题目中被用到。
遇到的问题,解决方法和心得体会
1.选择排序法,冒泡排序法,这之类的算法十分重要,要学会积累。
2.指针必须搞懂其概念,十分重要,它不同于数组,方便快捷,必须掌握!
3.在写代码的时候,要学会找规律,规律找到后可以节省十分多的时间。
4.递归的思想可以使很多复杂的问题化繁为简。
|
请发表评论