- 论坛徽章:
- 0
|
我是这月初开始抽业余时间看《The C Programming Language》的,听人说这是“圣经”
我对这些个东西真的很喜欢,但也很迷茫,比我想象中的难多了~~又是算法,又是数据结构,
又是编译环境的。我很迷糊,不知道哪些是重点,哪些可以先放一放,哪些是必须要熟练的基础知识
,还有要注意哪些习惯,还有要看哪些重要的书籍?我手上只有chm的《The C Programming Language》
和谭浩强C程序设计,旧书摊上买的。
说实在的我真怕自己学偏了,学成山寨的了。附上刚写的《The C Programming Language》上的练习题,字母排序
的那个。希望各位前辈多给指教。
#include <stdio.h>
#define MAXLINE 1000
char *arry[MAXLINE];
int k;
/*Input the txt which we will gerp from!*/
void getxt(int n)
{
int c;
int i=0;
int j=0;
char s[1000][100];
while((c=getchar())!=EOF&&j<n)
{
s[j]=c;
++i;
if(c=='\n'){
++j;
i=0;}
}
for(k=0;k<j;++k)
arry[k]=&(s[k][0]);
}
#include <stdio.h>
void doubl(int *s,int count)
{
int *left;
int *right;
int *i;
int *j;
left=s;
char *tmp;
char *tmpa;
char *tmpb;
right=s+count-1;
do{
for(i=left;i<right;++i)
{
tmpa=*i;
tmpb=*(i+1);
if(*tmpa>*tmpb)
{
tmp=*i;
*i=*(i+1);
*(i+1)=tmp;
}
}
for(j=right;j>left;--j)
{
tmpa=*j;
tmpb=*(j-1);
if(*tmpa<*tmpb)
{
tmp=*j;
*j=*(j-1);
*(j-1)=tmp;
}
}
++left;
--right;
}
while(left<right||left==right);
}
main()
{
int i;
char *tmp;
int *p;
p=&arry[0];
getxt(MAXLINE);
doubl(p,k);
for(i=0;i<k;++i)
{
tmp=arry;
for(;*tmp!='0'&&*tmp!='\n';++tmp)
printf("%c",*tmp);
printf("\n");
}
}
[ 本帖最后由 qulthalasbard 于 2010-1-19 18:57 编辑 ] |
|