2009年5月13日星期三

Macromedia Dreamweaver 8.0 下载

1 Macromedia Dreamweaver V8.0 简体中文版 + 序列号

Macromedia Dreamweaver V8.0 简体中文版 + 序列号 (请点击进入)
http://www.nushou.com/soft/Macromedia_Dreamweaver.html

里面有7.01+8.0两个版本。

Macromedia Dreamweaver 8 是建立 Web 站点和应用程序的专业工具。它将可视布局工具、应用程序开发功能和代码编辑支持组合在一起,其功能强大,使得各个层次的开发人员和设计人员都能够快速创建界面吸引人的基于标准的网站和应用程序。从对基于 CSS 的设计的领先支持到手工编码功能,Dreamweaver 提供了专业人员在一个集成、高效的环境中所需的工具。开发人员可以使用 Dreamweaver 及所选择的服务器技术来创建功能强大的 Internet 应用程序,从而使用户能连接到数据库、Web 服务和旧式系统。

8.0 :序列号:WPD800-59931-19232-82300
8.0 :序列号:WPD800-54034-07432-89838
8.0 :序列号:WPD800-57539-73132-91833
7.01:序列号:DWD700-50650-63100-15588

经典C语言程序设计100例91-100

【程序91】
题目:时间函数举例1
1.程序分析:
2.程序源代码:
#include "stdio.h"
#include "time.h"
void main()
{ time_t lt; /*define a longint time varible*/
lt=time(NULL);/*system time and date*/
printf(ctime(<)); /*english format output*/
printf(asctime(localtime(<)));/*tranfer to tm*/
printf(asctime(gmtime(<))); /*tranfer to Greenwich time*/
}
-----------------------------------------------------------------------------
【程序92】
题目:时间函数举例2
1.程序分析:           
2.程序源代码:
/*calculate time*/
#include "time.h"
#include "stdio.h"
main()
{ time_t start,end;
int i;
start=time(NULL);
for(i=0;i<3000;i++)
{ printf("\1\1\1\1\1\1\1\1\1\1\n");}
end=time(NULL);
printf("\1: The different is %6.3f\n",difftime(end,start));
}
-----------------------------------------------------------------------------
【程序93】
题目:时间函数举例3
1.程序分析:
2.程序源代码:
/*calculate time*/
#include "time.h"
#include "stdio.h"
main()
{ clock_t start,end;
int i;
double var;
start=clock();
for(i=0;i<10000;i++)
{ printf("\1\1\1\1\1\1\1\1\1\1\n");}
end=clock();
printf("\1: The different is %6.3f\n",(double)(end-start));
}

-----------------------------------------------------------------------------
【程序94】
题目:时间函数举例4,一个猜数游戏,判断一个人反应快慢。(版主初学时编的)
1.程序分析:
2.程序源代码:
#include "time.h"
#include "stdlib.h"
#include "stdio.h"
main()
{char c;
clock_t start,end;
time_t a,b;
double var;
int i,guess;
srand(time(NULL));
printf("do you want to play it.('y' or 'n') \n");
loop:
while((c=getchar())=='y')
{
i=rand()%100;
printf("\nplease input number you guess:\n");
start=clock();
a=time(NULL);
scanf("%d",&guess);
while(guess!=i)
{if(guess>i)
{printf("please input a little smaller.\n");
scanf("%d",&guess);}
else
{printf("please input a little bigger.\n");
scanf("%d",&guess);}
}
end=clock();
b=time(NULL);
printf("\1: It took you %6.3f seconds\n",var=(double)(end-start)/18.2);
printf("\1: it took you %6.3f seconds\n\n",difftime(b,a));
if(var<15)
printf("\1\1 You are very clever! \1\1\n\n");
else if(var<25)
printf("\1\1 you are normal! \1\1\n\n");
else
printf("\1\1 you are stupid! \1\1\n\n");
printf("\1\1 Congradulations \1\1\n\n");
printf("The number you guess is %d",i);
}
printf("\ndo you want to try it again?(\"yy\".or.\"n\")\n");
if((c=getch())=='y')
goto loop;
}

-----------------------------------------------------------------------------
【程序95】
题目:家庭财务管理小程序
1.程序分析:
2.程序源代码:
/*money management system*/
#include "stdio.h"
#include "dos.h"
main()
{
FILE *fp;
struct date d;
float sum,chm=0.0;
int len,i,j=0;
int c;
char ch[4]="",ch1[16]="",chtime[12]="",chshop[16],chmoney[8];
pp: clrscr();
sum=0.0;
gotoxy(1,1);printf("|---------------------------------------------------------------------------|");
gotoxy(1,2);printf("| money management system(C1.0) 2000.03 |");
gotoxy(1,3);printf("|---------------------------------------------------------------------------|");
gotoxy(1,4);printf("| -- money records -- | -- today cost list -- |");
gotoxy(1,5);printf("| ------------------------ |-------------------------------------|");
gotoxy(1,6);printf("| date: -------------- | |");
gotoxy(1,7);printf("| | | | |");
gotoxy(1,8);printf("| -------------- | |");
gotoxy(1,9);printf("| thgs: ------------------ | |");
gotoxy(1,10);printf("| | | | |");
gotoxy(1,11);printf("| ------------------ | |");
gotoxy(1,12);printf("| cost: ---------- | |");
gotoxy(1,13);printf("| | | | |");
gotoxy(1,14);printf("| ---------- | |");
gotoxy(1,15);printf("| | |");
gotoxy(1,16);printf("| | |");
gotoxy(1,17);printf("| | |");
gotoxy(1,18);printf("| | |");
gotoxy(1,19);printf("| | |");
gotoxy(1,20);printf("| | |");
gotoxy(1,21);printf("| | |");
gotoxy(1,22);printf("| | |");
gotoxy(1,23);printf("|---------------------------------------------------------------------------|");
i=0;
getdate(&d);
sprintf(chtime,"%4d.%02d.%02d",d.da_year,d.da_mon,d.da_day);
for(;;)
{
gotoxy(3,24);printf(" Tab __browse cost list Esc __quit");
gotoxy(13,10);printf(" ");
gotoxy(13,13);printf(" ");
gotoxy(13,7);printf("%s",chtime);
j=18;
ch[0]=getch();
if(ch[0]==27)
break;
strcpy(chshop,"");
strcpy(chmoney,"");
if(ch[0]==9)
{
mm:i=0;
fp=fopen("home.dat","r+");
gotoxy(3,24);printf(" ");
gotoxy(6,4);printf(" list records ");
gotoxy(1,5);printf("|-------------------------------------|");
gotoxy(41,4);printf(" ");
gotoxy(41,5);printf(" |");
while(fscanf(fp,"%10s%14s%f\n",chtime,chshop,&chm)!=EOF)
{ if(i==36)
{ getch();
i=0;}
if ((i%36)<17)
{ gotoxy(4,6+i);
printf(" ");
gotoxy(4,6+i);}
else
if((i%36)>16)
{ gotoxy(41,4+i-17);
printf(" ");
gotoxy(42,4+i-17);}
i++;
sum=sum+chm;
printf("%10s %-14s %6.1f\n",chtime,chshop,chm);}
gotoxy(1,23);printf("|---------------------------------------------------------------------------|");
gotoxy(1,24);printf("| |");
gotoxy(1,25);printf("|---------------------------------------------------------------------------|");
gotoxy(10,24);printf("total is %8.1f$",sum);
fclose(fp);
gotoxy(49,24);printf("press any key to.....");getch();goto pp;
}
else
{
while(ch[0]!='\r')
{ if(j<10)
{ strncat(chtime,ch,1);
j++;}
if(ch[0]==8)
{
len=strlen(chtime)-1;
if(j>15)
{ len=len+1; j=11;}
strcpy(ch1,"");
j=j-2;
strncat(ch1,chtime,len);
strcpy(chtime,"");
strncat(chtime,ch1,len-1);
gotoxy(13,7);printf(" ");}
gotoxy(13,7);printf("%s",chtime);ch[0]=getch();
if(ch[0]==9)
goto mm;
if(ch[0]==27)
exit(1);
}
gotoxy(3,24);printf(" ");
gotoxy(13,10);
j=0;
ch[0]=getch();
while(ch[0]!='\r')
{ if (j<14)
{ strncat(chshop,ch,1);
j++;}
if(ch[0]==8)
{ len=strlen(chshop)-1;
strcpy(ch1,"");
j=j-2;
strncat(ch1,chshop,len);
strcpy(chshop,"");
strncat(chshop,ch1,len-1);
gotoxy(13,10);printf(" ");}
gotoxy(13,10);printf("%s",chshop);ch[0]=getch();}
gotoxy(13,13);
j=0;
ch[0]=getch();
while(ch[0]!='\r')
{ if (j<6)
{ strncat(chmoney,ch,1);
j++;}
if(ch[0]==8)
{ len=strlen(chmoney)-1;
strcpy(ch1,"");
j=j-2;
strncat(ch1,chmoney,len);
strcpy(chmoney,"");
strncat(chmoney,ch1,len-1);
gotoxy(13,13);printf(" ");}
gotoxy(13,13);printf("%s",chmoney);ch[0]=getch();}
if((strlen(chshop)==0)||(strlen(chmoney)==0))
continue;
if((fp=fopen("home.dat","a+"))!=NULL);
fprintf(fp,"%10s%14s%6s",chtime,chshop,chmoney);
fputc('\n',fp);
fclose(fp);
i++;
gotoxy(41,5+i);
printf("%10s %-14s %-6s",chtime,chshop,chmoney);
}}}
-----------------------------------------------------------------------------
【程序96】
题目:计算字符串中子串出现的次数
1.程序分析:
2.程序源代码:
#include "string.h"
#include "stdio.h"
main()
{ char str1[20],str2[20],*p1,*p2;
int sum=0;
printf("please input two strings\n");
scanf("%s%s",str1,str2);
p1=str1;p2=str2;
while(*p1!='\0')
{
if(*p1==*p2)
{while(*p1==*p2&&*p2!='\0')
{p1++;
p2++;}
}
else
p1++;
if(*p2=='\0')
sum++;
p2=str2;
}
printf("%d",sum);
getch();}
-----------------------------------------------------------------------------
【程序97】
题目:从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个#为止。
1.程序分析:     
2.程序源代码:
#include "stdio.h"
main()
{ FILE *fp;
char ch,filename[10];
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL)
{printf("cannot open file\n");
exit(0);}
ch=getchar();
ch=getchar();
while(ch!='#')
{fputc(ch,fp);putchar(ch);
ch=getchar();
}
fclose(fp);
}

-----------------------------------------------------------------------------
【程序98】
题目:从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件“test”中保存。
    输入的字符串以!结束。
1.程序分析:
2.程序源代码:
#include "stdio.h"
main()
{FILE *fp;
char str[100],filename[10];
int i=0;
if((fp=fopen("test","w"))==NULL)
{ printf("cannot open the file\n");
exit(0);}
printf("please input a string:\n");
gets(str);
while(str[i]!='!')
{ if(str[i]>='a'&&str[i]<='z')
str[i]=str[i]-32;
fputc(str[i],fp);
i++;}
fclose(fp);
fp=fopen("test","r");
fgets(str,strlen(str)+1,fp);
printf("%s\n",str);
fclose(fp);
}
-----------------------------------------------------------------------------
【程序99】
题目:有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),
    输出到一个新文件C中。
1.程序分析:
2.程序源代码:
#include "stdio.h"
main()
{ FILE *fp;
int i,j,n,ni;
char c[160],t,ch;
if((fp=fopen("A","r"))==NULL)
{printf("file A cannot be opened\n");
exit(0);}
printf("\n A contents are :\n");
for(i=0;(ch=fgetc(fp))!=EOF;i++)
{c[i]=ch;
putchar(c[i]);
}
fclose(fp);
ni=i;
if((fp=fopen("B","r"))==NULL)
{printf("file B cannot be opened\n");
exit(0);}
printf("\n B contents are :\n");
for(i=0;(ch=fgetc(fp))!=EOF;i++)
{c[i]=ch;
putchar(c[i]);
}
fclose(fp);
n=i;
for(i=0;ifor(j=i+1;jif(c[i]>c[j])
{t=c[i];c[i]=c[j];c[j]=t;}
printf("\n C file is:\n");
fp=fopen("C","w");
for(i=0;i{ putc(c[i],fp);
putchar(c[i]);
}
fclose(fp);
}
-----------------------------------------------------------------------------
【程序100】
题目:有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出
    平均成绩,况原有的数据和计算出的平均分数存放在磁盘文件"stud"中。
1.程序分析:
2.程序源代码:
#include "stdio.h"
struct student
{ char num[6];
char name[8];
int score[3];
float avr;
} stu[5];
main()
{int i,j,sum;
FILE *fp;
/*input*/
for(i=0;i<5;i++)
{ printf("\n please input No. %d score:\n",i);
printf("stuNo:");
scanf("%s",stu[i].num);
printf("name:");
scanf("%s",stu[i].name);
sum=0;
for(j=0;j<3;j++)
{ printf("score %d.",j+1);
scanf("%d",&stu[i].score[j]);
sum+=stu[i].score[j];
}
stu[i].avr=sum/3.0;
}
fp=fopen("stud","w");
for(i=0;i<5;i++)
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}


经典C语言程序设计100例81-90

【程序81】
题目:809*??=800*??+9*??+1 其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。
1.程序分析:
2.程序源代码:
output(long b,long i)
{ printf("\n%ld/%ld=809*%ld+%ld",b,i,i,b%i);
}
main()
{long int a,b,i;
a=809;
for(i=10;i<100;i++)
{b=i*a+1;
if(b>=1000&&b<=10000&&8*i<100&&9*i>=100)
output(b,i); }
}
-----------------------------------------------------------------------------
【程序82】
题目:八进制转换为十进制
1.程序分析:           
2.程序源代码:
main()
{ char *p,s[6];int n;
p=s;
gets(p);
n=0;
while(*(p)!='\0')
{n=n*8+*p-'0';
p++;}
printf("%d",n);
}
-----------------------------------------------------------------------------
【程序83】
题目:求0—7所能组成的奇数个数。
1.程序分析:
2.程序源代码:
main()
{
long sum=4,s=4;
int j;
for(j=2;j<=8;j++)/*j is place of number*/
{ printf("\n%ld",sum);
if(j<=2)
s*=7;
else
s*=8;
sum+=s;}
printf("\nsum=%ld",sum);
}
-----------------------------------------------------------------------------
【程序84】
题目:一个偶数总能表示为两个素数之和。
1.程序分析:
2.程序源代码:
#include "stdio.h"
#include "math.h"
main()
{ int a,b,c,d;
scanf("%d",&a);
for(b=3;b<=a/2;b+=2)
{ for(c=2;c<=sqrt(b);c++)
if(b%c==0) break;
if(c>sqrt(b))
d=a-b;
else
break;
for(c=2;c<=sqrt(d);c++)
if(d%c==0) break;
if(c>sqrt(d))
printf("%d=%d+%d\n",a,b,d);
}
}
-----------------------------------------------------------------------------
【程序85】
题目:判断一个素数能被几个9整除
1.程序分析:
2.程序源代码:
main()
{ long int m9=9,sum=9;
int zi,n1=1,c9=1;
scanf("%d",&zi);
while(n1!=0)
{ if(!(sum%zi))
n1=0;
else
{m9=m9*10;
sum=sum+m9;
c9++;
}
}
printf("%ld,can be divided by %d \"9\"",sum,c9);
}
-----------------------------------------------------------------------------
【程序86】
题目:两个字符串连接程序
1.程序分析:
2.程序源代码:
#include "stdio.h"
main()
{char a[]="acegikm";
char b[]="bdfhjlnpq";
char c[80],*p;
int i=0,j=0,k=0;
while(a[i]!='\0'&&b[j]!='\0')
{if (a[i]{ c[k]=a[i];i++;}
else
c[k]=b[j++];
k++;
}
c[k]='\0';
if(a[i]=='\0')
p=b+j;
else
p=a+i;
strcat(c,p);
puts(c);
}
-----------------------------------------------------------------------------
【程序87】
题目:回答结果(结构体变量传递)
1.程序分析:     
2.程序源代码:
#include "stdio.h"
struct student
{ int x;
char c;
} a;
main()
{a.x=3;
a.c='a';
f(a);
printf("%d,%c",a.x,a.c);
}
f(struct student b)
{
b.x=20;
b.c='y';
}
-----------------------------------------------------------------------------
【程序88】
题目:读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。
1.程序分析:
2.程序源代码:
main()
{int i,a,n=1;
while(n<=7)
{ do {
    scanf("%d",&a);
    }while(a<1||a>50);
for(i=1;i<=a;i++)
  printf("*");
printf("\n");
n++;}
getch();
}
-----------------------------------------------------------------------------
【程序89】
题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:
    每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。
1.程序分析:
2.程序源代码:
main()
{int a,i,aa[4],t;
scanf("%d",&a);
aa[0]=a%10;
aa[1]=a%100/10;
aa[2]=a%1000/100;
aa[3]=a/1000;
for(i=0;i<=3;i++)
  {aa[i]+=5;
  aa[i]%=10;
  }
for(i=0;i<=3/2;i++)
  {t=aa[i];
  aa[i]=aa[3-i];
  aa[3-i]=t;
  }
for(i=3;i>=0;i--)
printf("%d",aa[i]);
}

-----------------------------------------------------------------------------
【程序90】
题目:专升本一题,读结果。
1.程序分析:
2.程序源代码:
#include "stdio.h"
#define M 5
main()
{int a[M]={1,2,3,4,5};
int i,j,t;
i=0;j=M-1;
while(i{t=*(a+i);
*(a+i)=*(a+j);
*(a+j)=t;
i++;j--;
}
for(i=0;iprintf("%d",*(a+i));
}


经典C语言程序设计100例71-80

【程序71】
题目:编写input()和output()函数输入,输出5个学生的数据记录。
1.程序分析:
2.程序源代码:
#define N 5
struct student
{ char num[6];
  char name[8];
  int score[4];
} stu[N];
input(stu)
struct student stu[];
{ int i,j;
  for(i=0;i  { printf("\n please input %d of %d\n",i+1,N);
   printf("num: ");
   scanf("%s",stu[i].num);
   printf("name: ");
   scanf("%s",stu[i].name);
    for(j=0;j<3;j++)
    { printf("score %d.",j+1);
     scanf("%d",&stu[i].score[j]);
    }
   printf("\n");
  }
}
print(stu)
struct student stu[];
{ int i,j;
printf("\nNo. Name Sco1 Sco2 Sco3\n");
for(i=0;i{ printf("%-6s%-10s",stu[i].num,stu[i].name);
  for(j=0;j<3;j++)
   printf("%-8d",stu[i].score[j]);
  printf("\n");
}
}
main()
{
  input();
  print();
}
-----------------------------------------------------------------------------
【程序72】
题目:创建一个链表。
1.程序分析:           
2.程序源代码:
/*creat a list*/
#include "stdlib.h"
#include "stdio.h"
struct list
{ int data;
struct list *next;
};
typedef struct list node;
typedef node *link;
void main()
{ link ptr,head;
int num,i;
ptr=(link)malloc(sizeof(node));
ptr=head;
printf("please input 5 numbers==>\n");
for(i=0;i<=4;i++)
{
  scanf("%d",&num);
  ptr->data=num;
  ptr->next=(link)malloc(sizeof(node));
  if(i==4) ptr->next=NULL;
  else ptr=ptr->next;
}
ptr=head;
while(ptr!=NULL)
{ printf("The value is ==>%d\n",ptr->data);
  ptr=ptr->next;
}
}
-----------------------------------------------------------------------------
【程序73】
题目:反向输出一个链表。   
1.程序分析:
2.程序源代码:
/*reverse output a list*/
#include "stdlib.h"
#include "stdio.h"
struct list
{ int data;
  struct list *next;
};
typedef struct list node;
typedef node *link;
void main()
{ link ptr,head,tail; 
  int num,i;
  tail=(link)malloc(sizeof(node));
  tail->next=NULL;
  ptr=tail;
  printf("\nplease input 5 data==>\n");
  for(i=0;i<=4;i++)
  {
   scanf("%d",&num);
   ptr->data=num;
   head=(link)malloc(sizeof(node));
   head->next=ptr;
   ptr=head;
  }
ptr=ptr->next;
while(ptr!=NULL)
{ printf("The value is ==>%d\n",ptr->data);
  ptr=ptr->next;
}}
-----------------------------------------------------------------------------
【程序74】
题目:连接两个链表。
1.程序分析:
2.程序源代码:
#include "stdlib.h"
#include "stdio.h"
struct list
{ int data;
struct list *next;
};
typedef struct list node;
typedef node *link;
link delete_node(link pointer,link tmp)
{if (tmp==NULL) /*delete first node*/
  return pointer->next;
else
{ if(tmp->next->next==NULL)/*delete last node*/
   tmp->next=NULL;
  else /*delete the other node*/
   tmp->next=tmp->next->next;
  return pointer;
}
}
void selection_sort(link pointer,int num)
{ link tmp,btmp;
  int i,min;
  for(i=0;i  {
  tmp=pointer;
  min=tmp->data;
  btmp=NULL;
  while(tmp->next)
  { if(min>tmp->next->data)
  {min=tmp->next->data;
   btmp=tmp;
  }
  tmp=tmp->next;
  }
printf("\40: %d\n",min);
pointer=delete_node(pointer,btmp);
}
}
link create_list(int array[],int num)
{ link tmp1,tmp2,pointer;
int i;
pointer=(link)malloc(sizeof(node));
pointer->data=array[0];
tmp1=pointer;
for(i=1;i{ tmp2=(link)malloc(sizeof(node));
  tmp2->next=NULL;
  tmp2->data=array[i];
  tmp1->next=tmp2;
  tmp1=tmp1->next;
}
return pointer;
}
link concatenate(link pointer1,link pointer2)
{ link tmp;
tmp=pointer1;
while(tmp->next)
  tmp=tmp->next;
tmp->next=pointer2;
return pointer1;
}
void main(void)
{ int arr1[]={3,12,8,9,11};
  link ptr;
  ptr=create_list(arr1,5);
  selection_sort(ptr,5);
}
-----------------------------------------------------------------------------
【程序75】
题目:放松一下,算一道简单的题目。
1.程序分析:
2.程序源代码:
main()
{
int i,n;
for(i=1;i<5;i++)
{ n=0;
  if(i!=1)
  n=n+1;
  if(i==3)
  n=n+1;
  if(i==4)
  n=n+1;
  if(i!=4)
  n=n+1;
  if(n==3)
   printf("zhu hao shi de shi:%c",64+i);
  }
}
-----------------------------------------------------------------------------
【程序76】
题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数
    1/1+1/3+...+1/n(利用指针函数)
1.程序分析:
2.程序源代码:
main()
#include "stdio.h"
main()
{
float peven(),podd(),dcall();
float sum;
int n;
while (1)
{
  scanf("%d",&n);
  if(n>1)
   break;
}
if(n%2==0)
{
  printf("Even=");
  sum=dcall(peven,n);
}
else
{
  printf("Odd=");
  sum=dcall(podd,n);
}
printf("%f",sum);
}
float peven(int n)
{
float s;
int i;
s=1;
for(i=2;i<=n;i+=2)
  s+=1/(float)i;
return(s);
}
float podd(n)
int n;
{
float s;
int i;
s=0;
for(i=1;i<=n;i+=2)
  s+=1/(float)i;
return(s);
}
float dcall(fp,n)
float (*fp)();
int n;
{
float s;
s=(*fp)(n);
return(s);
}
-----------------------------------------------------------------------------
【程序77】
题目:填空练习(指向指针的指针)
1.程序分析:     
2.程序源代码:
main()
{ char *s[]={"man","woman","girl","boy","sister"};
char **q;
int k;
for(k=0;k<5;k++)
{       ;/*这里填写什么语句*/
  printf("%s\n",*q);
}
}
-----------------------------------------------------------------------------
【程序78】
题目:找到年龄最大的人,并输出。请找出程序中有什么问题。
1.程序分析:
2.程序源代码:
#define N 4
#include "stdio.h"
static struct man
{ char name[20];
int age;
} person[N]={"li",18,"wang",19,"zhang",20,"sun",22};
main()
{struct man *q,*p;
int i,m=0;
p=person;
for (i=0;i{if(mage)
  q=p++;
  m=q->age;}
printf("%s,%d",(*q).name,(*q).age);
}
-----------------------------------------------------------------------------
【程序79】
题目:字符串排序。
1.程序分析:
2.程序源代码:
main()
{
char *str1[20],*str2[20],*str3[20];
char swap();
printf("please input three strings\n");
scanf("%s",str1);
scanf("%s",str2);
scanf("%s",str3);
if(strcmp(str1,str2)>0) swap(str1,str2);
if(strcmp(str1,str3)>0) swap(str1,str3);
if(strcmp(str2,str3)>0) swap(str2,str3);
printf("after being sorted\n");
printf("%s\n%s\n%s\n",str1,str2,str3);
}
char swap(p1,p2)
char *p1,*p2;
{
char *p[20];
strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);
}
-----------------------------------------------------------------------------
【程序80】
题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只
    猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了
    一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,
    问海滩上原来最少有多少个桃子?
1.程序分析:
2.程序源代码:
main()
{int i,m,j,k,count;
for(i=4;i<10000;i+=4)
{ count=0;
m=i;
for(k=0;k<5;k++)
{
  j=i/4*5+1;
  i=j;
  if(j%4==0)
   count++;
  else
   break;
}
  i=m;
  if(count==4)
  {printf("%d\n",count);
   break;}
}
}


经典C语言程序设计100例61-70

【程序61】
题目:打印出杨辉三角形(要求打印出10行如下图)   
1.程序分析:
       1
       1  1
       1  2  1
       1  3  3  1
       1  4  6  4  1
       1  5  10 10 5  1 
2.程序源代码:
main()
{int i,j;
int a[10][10];
printf("\n");
for(i=0;i<10;i++)
  {a[i][0]=1;
  a[i][i]=1;}
for(i=2;i<10;i++)
  for(j=1;j  a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=0;i<10;i++)
  {for(j=0;j<=i;j++)
  printf("%5d",a[i][j]);
  printf("\n");
  }
}
-----------------------------------------------------------------------------
【程序62】
题目:学习putpixel画点。
1.程序分析:            
2.程序源代码:
#include "stdio.h"
#include "graphics.h"
main()
{
int i,j,driver=VGA,mode=VGAHI;
initgraph(&driver,&mode,"");
setbkcolor(YELLOW);
for(i=50;i<=230;i+=20)
  for(j=50;j<=230;j++)
  putpixel(i,j,1);
for(j=50;j<=230;j+=20)
  for(i=50;i<=230;i++)
  putpixel(i,j,1);
}
-----------------------------------------------------------------------------
【程序63】
题目:画椭圆ellipse   
1.程序分析:
2.程序源代码:
#include "stdio.h"
#include "graphics.h"
#include "conio.h"
main()
{
int x=360,y=160,driver=VGA,mode=VGAHI;
int num=20,i;
int top,bottom;
initgraph(&driver,&mode,"");
top=y-30;
bottom=y-30;
for(i=0;i{
ellipse(250,250,0,360,top,bottom);
top-=5;
bottom+=5;
}
getch();
}
-----------------------------------------------------------------------------
【程序64】
题目:利用ellipse and rectangle 画图。
1.程序分析:
2.程序源代码:
#include "stdio.h"
#include "graphics.h"
#include "conio.h"
main()
{
int driver=VGA,mode=VGAHI;
int i,num=15,top=50;
int left=20,right=50;
initgraph(&driver,&mode,"");
for(i=0;i{
ellipse(250,250,0,360,right,left);
ellipse(250,250,0,360,20,top);
rectangle(20-2*i,20-2*i,10*(i+2),10*(i+2));
right+=5;
left+=5;
top+=10;
}
getch();
}
-----------------------------------------------------------------------------
【程序65】
题目:一个最优美的图案。   
1.程序分析:
2.程序源代码:
#include "graphics.h"
#include "math.h"
#include "dos.h"
#include "conio.h"
#include "stdlib.h"
#include "stdio.h"
#include "stdarg.h"
#define MAXPTS 15
#define PI 3.1415926
struct PTS {
int x,y;
};
double AspectRatio=0.85;
void LineToDemo(void)
{
struct viewporttype vp;
struct PTS points[MAXPTS];
int i, j, h, w, xcenter, ycenter;
int radius, angle, step;
double rads;
printf(" MoveTo / LineTo Demonstration" );
getviewsettings( &vp );
h = vp.bottom - vp.top;
w = vp.right - vp.left;
xcenter = w / 2; /* Determine the center of circle */
ycenter = h / 2;
radius = (h - 30) / (AspectRatio * 2);
step = 360 / MAXPTS; /* Determine # of increments */
angle = 0; /* Begin at zero degrees */
for( i=0 ; irads = (double)angle * PI / 180.0; /* Convert angle to radians */
points[i].x = xcenter + (int)( cos(rads) * radius );
points[i].y = ycenter - (int)( sin(rads) * radius * AspectRatio );
angle += step; /* Move to next increment */
}
circle( xcenter, ycenter, radius ); /* Draw bounding circle */
for( i=0 ; ifor( j=i ; jmoveto(points[i].x, points[i].y); /* Move to beginning of cord */
lineto(points[j].x, points[j].y); /* Draw the cord */
} } }
main()
{int driver,mode;
driver=CGA;mode=CGAC0;
initgraph(&driver,&mode,"");
setcolor(3);
setbkcolor(GREEN);
LineToDemo();}
-----------------------------------------------------------------------------
【程序66】
题目:输入3个数a,b,c,按大小顺序输出。   
1.程序分析:利用指针方法。
2.程序源代码:
/*pointer*/
main()
{
int n1,n2,n3;
int *pointer1,*pointer2,*pointer3;
printf("please input 3 number:n1,n2,n3:");
scanf("%d,%d,%d",&n1,&n2,&n3);
pointer1=&n1;
pointer2=&n2;
pointer3=&n3;
if(n1>n2) swap(pointer1,pointer2);
if(n1>n3) swap(pointer1,pointer3);
if(n2>n3) swap(pointer2,pointer3);
printf("the sorted numbers are:%d,%d,%d\n",n1,n2,n3);
}
swap(p1,p2)
int *p1,*p2;
{int p;
p=*p1;*p1=*p2;*p2=p;
}
-----------------------------------------------------------------------------
【程序67】
题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
1.程序分析:谭浩强的书中答案有问题。      
2.程序源代码:
main()
{
int number[10];
input(number);
max_min(number);
output(number);
}
input(number)
int number[10];
{int i;
for(i=0;i<9;i++)
  scanf("%d,",&number[i]);
  scanf("%d",&number[9]);
}
max_min(array)
int array[10];
{int *max,*min,k,l;
int *p,*arr_end;
arr_end=array+10;
max=min=array;
for(p=array+1;p  if(*p>*max) max=p;
  else if(*p<*min) min=p;
  k=*max;
  l=*min;
  *p=array[0];array[0]=l;l=*p;
  *p=array[9];array[9]=k;k=*p;
  return;
}
output(array)
int array[10];
{ int *p;
for(p=array;p  printf("%d,",*p);
printf("%d\n",array[9]);
}
-----------------------------------------------------------------------------
【程序68】
题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
1.程序分析:
2.程序源代码:
main()
{
int number[20],n,m,i;
printf("the total numbers is:");
scanf("%d",&n);
printf("back m:");
scanf("%d",&m);
for(i=0;i  scanf("%d,",&number[i]);
scanf("%d",&number[n-1]);
move(number,n,m);
for(i=0;i  printf("%d,",number[i]);
printf("%d",number[n-1]);
}
move(array,n,m)
int n,m,array[20];
{
int *p,array_end;
array_end=*(array+n-1);
for(p=array+n-1;p>array;p--)
  *p=*(p-1);
  *array=array_end;
  m--;
  if(m>0) move(array,n,m);
}
-----------------------------------------------------------------------------
【程序69】
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出
    圈子,问最后留下的是原来第几号的那位。
1. 程序分析:
2.程序源代码:
#define nmax 50
main()
{
int i,k,m,n,num[nmax],*p;
printf("please input the total of numbers:");
scanf("%d",&n);
p=num;
for(i=0;i  *(p+i)=i+1;
  i=0;
  k=0;
  m=0;
  while(m  {
  if(*(p+i)!=0) k++;
  if(k==3)
  { *(p+i)=0;
  k=0;
  m++;
  }
i++;
if(i==n) i=0;
}
while(*p==0) p++;
printf("%d is left\n",*p);
}
-----------------------------------------------------------------------------
【程序70】
题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。   
1.程序分析:
2.程序源代码:
main()
{
int len;
char *str[20];
printf("please input a string:\n");
scanf("%s",str);
len=length(str);
printf("the string has %d characters.",len);
}
length(p)
char *p;
{
int n;
n=0;
while(*p!='\0')
{
  n++;
  p++;
}
return n;
}


经典C语言程序设计100例51-60

【程序51】
题目:学习使用按位与 & 。   
1.程序分析:0&0=0; 0&1=0; 1&0=0; 1&1=1
2.程序源代码:
#include "stdio.h"
main()
{
int a,b;
a=077;
b=a&3;
printf("\40: The a & b(decimal) is %d \n",b);
b&=7;
printf("\40: The a & b(decimal) is %d \n",b);
}
-----------------------------------------------------------------------------
【程序52】
题目:学习使用按位或 | 。
1.程序分析:0|0=0; 0|1=1; 1|0=1; 1|1=1            
2.程序源代码:
#include "stdio.h"
main()
{
int a,b;
a=077;
b=a|3;
printf("\40: The a & b(decimal) is %d \n",b);
b|=7;
printf("\40: The a & b(decimal) is %d \n",b);
}
-----------------------------------------------------------------------------
【程序53】
题目:学习使用按位异或 ^ 。   
1.程序分析:0^0=0; 0^1=1; 1^0=1; 1^1=0
2.程序源代码:
#include "stdio.h"
main()
{
int a,b;
a=077;
b=a^3;
printf("\40: The a & b(decimal) is %d \n",b);
b^=7;
printf("\40: The a & b(decimal) is %d \n",b);
}
-----------------------------------------------------------------------------
【程序54】
题目:取一个整数a从右端开始的4~7位。
程序分析:可以这样考虑:
(1)先使a右移4位。
(2)设置一个低4位全为1,其余全为0的数。可用~(~0<<4)
(3)将上面二者进行&运算。
2.程序源代码:
main()
{
unsigned a,b,c,d;
scanf("%o",&a);
b=a>>4;
c=~(~0<<4);
d=b&c;
printf("%o\n%o\n",a,d);
}
-----------------------------------------------------------------------------
【程序55】
题目:学习使用按位取反~。   
1.程序分析:~0=1; ~1=0;
2.程序源代码:
#include "stdio.h"
main()
{
int a,b;
a=234;
b=~a;
printf("\40: The a's 1 complement(decimal) is %d \n",b);
a=~a;
printf("\40: The a's 1 complement(hexidecimal) is %x \n",a);
}
-----------------------------------------------------------------------------
【程序56】
题目:画图,学用circle画圆形。   
1.程序分析:
2.程序源代码:
/*circle*/
#include "graphics.h"
main()
{int driver,mode,i;
float j=1,k=1;
driver=VGA;mode=VGAHI;
initgraph(&driver,&mode,"");
setbkcolor(YELLOW);
for(i=0;i<=25;i++)
{
setcolor(8);
circle(310,250,k);
k=k+j;
j=j+0.3;
}
}
-----------------------------------------------------------------------------
【程序57】
题目:画图,学用line画直线。
1.程序分析:           
2.程序源代码:
#include "graphics.h"
main()
{int driver,mode,i;
float x0,y0,y1,x1;
float j=12,k;
driver=VGA;mode=VGAHI;
initgraph(&driver,&mode,"");
setbkcolor(GREEN);
x0=263;y0=263;y1=275;x1=275;
for(i=0;i<=18;i++)
{
setcolor(5);
line(x0,y0,x0,y1);
x0=x0-5;
y0=y0-5;
x1=x1+5;
y1=y1+5;
j=j+10;
}
x0=263;y1=275;y0=263;
for(i=0;i<=20;i++)
{
setcolor(5);
line(x0,y0,x0,y1);
x0=x0+5;
y0=y0+5;
y1=y1-5;
}
}
-----------------------------------------------------------------------------
【程序58】
题目:画图,学用rectangle画方形。   
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
2.程序源代码:
#include "graphics.h"
main()
{int x0,y0,y1,x1,driver,mode,i;
driver=VGA;mode=VGAHI;
initgraph(&driver,&mode,"");
setbkcolor(YELLOW);
x0=263;y0=263;y1=275;x1=275;
for(i=0;i<=18;i++)
{
setcolor(1);
rectangle(x0,y0,x1,y1);
x0=x0-5;
y0=y0-5;
x1=x1+5;
y1=y1+5;
}
settextstyle(DEFAULT_FONT,HORIZ_DIR,2);
outtextxy(150,40,"How beautiful it is!");
line(130,60,480,60);
setcolor(2);
circle(269,269,137);
}
-----------------------------------------------------------------------------
【程序59】
题目:画图,综合例子。
1.程序分析:
2.程序源代码:
# define PAI 3.1415926
# define B 0.809
# include "graphics.h"
#include "math.h"
main()
{
int i,j,k,x0,y0,x,y,driver,mode;
float a;
driver=CGA;mode=CGAC0;
initgraph(&driver,&mode,"");
setcolor(3);
setbkcolor(GREEN);
x0=150;y0=100;
circle(x0,y0,10);
circle(x0,y0,20);
circle(x0,y0,50);
for(i=0;i<16;i++)
{
  a=(2*PAI/16)*i;
  x=ceil(x0+48*cos(a));
  y=ceil(y0+48*sin(a)*B);
  setcolor(2); line(x0,y0,x,y);}
setcolor(3);circle(x0,y0,60);
/* Make 0 time normal size letters */
settextstyle(DEFAULT_FONT,HORIZ_DIR,0);
outtextxy(10,170,"press a key");
getch();
setfillstyle(HATCH_FILL,YELLOW);
floodfill(202,100,WHITE);
getch();
for(k=0;k<=500;k++)
{
  setcolor(3);
  for(i=0;i<=16;i++)
  {
   a=(2*PAI/16)*i+(2*PAI/180)*k;
   x=ceil(x0+48*cos(a));
   y=ceil(y0+48+sin(a)*B);
   setcolor(2); line(x0,y0,x,y);
  }
  for(j=1;j<=50;j++)
  {
   a=(2*PAI/16)*i+(2*PAI/180)*k-1;
   x=ceil(x0+48*cos(a));
   y=ceil(y0+48*sin(a)*B);
   line(x0,y0,x,y);
  }
}
restorecrtmode();
}
-----------------------------------------------------------------------------
【程序60】
题目:画图,综合例子。   
1.程序分析:
2.程序源代码:
#include "graphics.h"
#define LEFT 0
#define TOP 0
#define RIGHT 639
#define BOTTOM 479
#define LINES 400
#define MAXCOLOR 15
main()
{
int driver,mode,error;
int x1,y1;
int x2,y2;
int dx1,dy1,dx2,dy2,i=1;
int count=0;
int color=0;
driver=VGA;
mode=VGAHI;
initgraph(&driver,&mode,"");
x1=x2=y1=y2=10;
dx1=dy1=2;
dx2=dy2=3;
while(!kbhit())
{
  line(x1,y1,x2,y2);
  x1+=dx1;y1+=dy1;
  x2+=dx2;y2+dy2;
  if(x1<=LEFT||x1>=RIGHT)
  dx1=-dx1;
  if(y1<=TOP||y1>=BOTTOM)
   dy1=-dy1;
  if(x2<=LEFT||x2>=RIGHT)
   dx2=-dx2;
  if(y2<=TOP||y2>=BOTTOM)
   dy2=-dy2;
  if(++count>LINES)
  {
   setcolor(color);
   color=(color>=MAXCOLOR)?0:++color;
  }
}
closegraph();

经典C语言程序设计100例41-50

【程序41】
题目:学习static定义静态变量的用法   
1.程序分析:
2.程序源代码:
#include "stdio.h"
varfunc()
{
int var=0;
static int static_var=0;
printf("\40:var equal %d \n",var);
printf("\40:static var equal %d \n",static_var);
printf("\n");
var++;
static_var++;
}
void main()
{int i;
  for(i=0;i<3;i++)
   varfunc();
}
-----------------------------------------------------------------------------
【程序42】
题目:学习使用auto定义变量的用法
1.程序分析:      
2.程序源代码:
#include "stdio.h"
main()
{int i,num;
num=2;
  for (i=0;i<3;i++)
  { printf("\40: The num equal %d \n",num);
   num++;
   {
   auto int num=1;
   printf("\40: The internal block num equal %d \n",num);
   num++;
   }
  }
}
-----------------------------------------------------------------------------
【程序43】
题目:学习使用static的另一用法。   
1.程序分析:
2.程序源代码:
#include "stdio.h"
main()
{
int i,num;
num=2;
for(i=0;i<3;i++)
{
printf("\40: The num equal %d \n",num);
num++;
{
static int num=1;
printf("\40:The internal block num equal %d\n",num);
num++;
}
}
}
-----------------------------------------------------------------------------
【程序44】
题目:学习使用external的用法。
1.程序分析:
2.程序源代码:
#include "stdio.h"
int a,b,c;
void add()
{ int a;
a=3;
c=a+b;
}
void main()
{ a=b=4;
add();
printf("The value of c is equal to %d\n",c);
}
-----------------------------------------------------------------------------
【程序45】
题目:学习使用register定义变量的方法。
1.程序分析:
2.程序源代码:
void main()
{
register int i;
int tmp=0;
for(i=1;i<=100;i++)
tmp+=i;
printf("The sum is %d\n",tmp);
}
-----------------------------------------------------------------------------
【程序46】
题目:宏#define命令练习(1)   
1.程序分析:
2.程序源代码:
#include "stdio.h"
#define TRUE 1
#define FALSE 0
#define SQ(x) (x)*(x)
void main()
{
int num;
int again=1;
printf("\40: Program will stop if input value less than 50.\n");
while(again)
{
printf("\40:Please input number==>");
scanf("%d",&num);
printf("\40:The square for this number is %d \n",SQ(num));
if(num>=50)
  again=TRUE;
else
  again=FALSE;
}
}
-----------------------------------------------------------------------------
【程序47】
题目:宏#define命令练习(2)
1.程序分析:            
2.程序源代码:
#include "stdio.h"
#define exchange(a,b) { \ /*宏定义中允许包含两道衣裳命令的情形,此时必须在最右边加上"\"*/
             int t;\
             t=a;\
             a=b;\
             b=t;\
            }
void main(void)
{
int x=10;
int y=20;
printf("x=%d; y=%d\n",x,y);
exchange(x,y);
printf("x=%d; y=%d\n",x,y);
}
-----------------------------------------------------------------------------
【程序48】
题目:宏#define命令练习(3)   
1.程序分析:
2.程序源代码:
#define LAG >
#define SMA <
#define EQ ==
#include "stdio.h"
void main()
{ int i=10;
int j=20;
if(i LAG j)
printf("\40: %d larger than %d \n",i,j);
else if(i EQ j)
printf("\40: %d equal to %d \n",i,j);
else if(i SMA j)
printf("\40:%d smaller than %d \n",i,j);
else
printf("\40: No such value.\n");
}
-----------------------------------------------------------------------------
【程序49】
题目:#if #ifdef和#ifndef的综合应用。
1. 程序分析:
2.程序源代码:
#include "stdio.h"
#define MAX
#define MAXIMUM(x,y) (x>y)?x:y
#define MINIMUM(x,y) (x>y)?y:x
void main()
{ int a=10,b=20;
#ifdef MAX
printf("\40: The larger one is %d\n",MAXIMUM(a,b));
#else
printf("\40: The lower one is %d\n",MINIMUM(a,b));
#endif
#ifndef MIN
printf("\40: The lower one is %d\n",MINIMUM(a,b));
#else
printf("\40: The larger one is %d\n",MAXIMUM(a,b));
#endif
#undef MAX
#ifdef MAX
printf("\40: The larger one is %d\n",MAXIMUM(a,b));
#else
printf("\40: The lower one is %d\n",MINIMUM(a,b));
#endif
#define MIN
#ifndef MIN
printf("\40: The lower one is %d\n",MINIMUM(a,b));
#else
printf("\40: The larger one is %d\n",MAXIMUM(a,b));
#endif
}
-----------------------------------------------------------------------------
【程序50】
题目:#include 的应用练习   
1.程序分析:
2.程序源代码:
test.h 文件如下:
#define LAG >
#define SMA <
#define EQ ==
#include "test.h" /*一个新文件50.c,包含test.h*/
#include "stdio.h"
void main()
{ int i=10;
int j=20;
if(i LAG j)
printf("\40: %d larger than %d \n",i,j);
else if(i EQ j)
printf("\40: %d equal to %d \n",i,j);
else if(i SMA j)
printf("\40:%d smaller than %d \n",i,j);
else
printf("\40: No such value.\n");
}

经典C语言程序设计100例31-40

【程序31】
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续
    判断第二个字母。
1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。
2.程序源代码:
#include
void main()
{
char letter;
printf("please input the first letter of someday\n");
while ((letter=getch())!='Y')/*当所按字母为Y时才结束*/
{ switch (letter)
{case 'S':printf("please input second letter\n");
      if((letter=getch())=='a')
       printf("saturday\n");
      else if ((letter=getch())=='u')
          printf("sunday\n");
        else printf("data error\n");
      break;
case 'F':printf("friday\n");break;
case 'M':printf("monday\n");break;
case 'T':printf("please input second letter\n");
      if((letter=getch())=='u')
       printf("tuesday\n");
      else if ((letter=getch())=='h')
          printf("thursday\n");
        else printf("data error\n");
      break;
case 'W':printf("wednesday\n");break;
default: printf("data error\n");
   }
  }
}
-----------------------------------------------------------------------------
【程序32】
题目:Press any key to change color, do you want to try it. Please hurry up!
1.程序分析:            
2.程序源代码:
#include
void main(void)
{
int color;
for (color = 0; color < 8; color++)
  {
  textbackground(color);/*设置文本的背景颜色*/
  cprintf("This is color %d\r\n", color);
  cprintf("Press any key to continue\r\n");
  getch();/*输入字符看不见*/
  }
}
-----------------------------------------------------------------------------
【程序33】
题目:学习gotoxy()与clrscr()函数   
1.程序分析:
2.程序源代码:
#include
void main(void)
{
clrscr();/*清屏函数*/
textbackground(2);
gotoxy(1, 5);/*定位函数*/
cprintf("Output at row 5 column 1\n");
textbackground(3);
gotoxy(20, 10);
cprintf("Output at row 10 column 20\n");
}
-----------------------------------------------------------------------------
【程序34】
题目:练习函数调用
1. 程序分析:
2.程序源代码:
#include
void hello_world(void)
{
printf("Hello, world!\n");
}
void three_hellos(void)
{
int counter;
for (counter = 1; counter <= 3; counter++)
hello_world();/*调用此函数*/
}
void main(void)
{
three_hellos();/*调用此函数*/
}
-----------------------------------------------------------------------------
【程序35】
题目:文本颜色设置
1.程序分析:
2.程序源代码:
#include
void main(void)
{
int color;
for (color = 1; color < 16; color++)
  {
  textcolor(color);/*设置文本颜色*/
  cprintf("This is color %d\r\n", color);
  }
textcolor(128 + 15);
cprintf("This is blinking\r\n");
}
-----------------------------------------------------------------------------
【程序36】
题目:求100之内的素数   
1.程序分析:
2.程序源代码:
#include
#include "math.h"
#define N 101
main()
{
int i,j,line,a[N];
for(i=2;ifor(i=2;i  for(j=i+1;j  {
   if(a[i]!=0&&a[j]!=0)
   if(a[j]%a[i]==0)
   a[j]=0;}
printf("\n");
for(i=2,line=0;i{
  if(a[i]!=0)
  {printf("%5d",a[i]);
  line++;}
  if(line==10)
  {printf("\n");
line=0;}
}
}
-----------------------------------------------------------------------------
【程序37】
题目:对10个数进行排序
1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,
       下次类推,即用第二个元素与后8个进行比较,并进行交换。       
2.程序源代码:
#define N 10
main()
{int i,j,min,tem,a[N];
/*input data*/
printf("please input ten num:\n");
for(i=0;i{
printf("a[%d]=",i);
scanf("%d",&a[i]);}
printf("\n");
for(i=0;iprintf("%5d",a[i]);
printf("\n");
/*sort ten num*/
for(i=0;i{min=i;
for(j=i+1;jif(a[min]>a[j]) min=j;
tem=a[i];
a[i]=a[min];
a[min]=tem;
}
/*output data*/
printf("After sorted \n");
for(i=0;iprintf("%5d",a[i]);
}
-----------------------------------------------------------------------------
【程序38】
题目:求一个3*3矩阵对角线元素之和
1.程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。
2.程序源代码:
main()
{
float a[3][3],sum=0;
int i,j;
printf("please input rectangle element:\n");
for(i=0;i<3;i++)
  for(j=0;j<3;j++)
  scanf("%f",&a[i][j]);
for(i=0;i<3;i++)
  sum=sum+a[i][i];
printf("duijiaoxian he is %6.2f",sum);
}
-----------------------------------------------------------------------------
【程序39】
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后
      此元素之后的数,依次后移一个位置。
2.程序源代码:
main()
{
int a[11]={1,4,6,9,13,16,19,28,40,100};
int temp1,temp2,number,end,i,j;
printf("original array is:\n");
for(i=0;i<10;i++)
  printf("%5d",a[i]);
printf("\n");
printf("insert a new number:");
scanf("%d",&number);
end=a[9];
if(number>end)
  a[10]=number;
else
  {for(i=0;i<10;i++)
   { if(a[i]>number)
    {temp1=a[i];
     a[i]=number;
    for(j=i+1;j<11;j++)
    {temp2=a[j];
     a[j]=temp1;
     temp1=temp2;
    }
    break;
    }
   }
}
for(i=0;i<11;i++)
  printf("%6d",a[i]);
}
-----------------------------------------------------------------------------
【程序40】
题目:将一个数组逆序输出。
1.程序分析:用第一个与最后一个交换。
2.程序源代码:
#define N 5
main()
{ int a[N]={9,6,5,4,1},i,temp;
  printf("\n original array:\n");
  for(i=0;i  printf("%4d",a[i]);
  for(i=0;i  {temp=a[i];
   a[i]=a[N-i-1];
   a[N-i-1]=temp;
  }
printf("\n sorted array:\n");
for(i=0;i  printf("%4d",a[i]);
}

经典C语言程序设计100例21-30

【程序21】
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
    第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下
    的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
1.程序分析:采取逆向思维的方法,从后往前推断。
2.程序源代码:
main()
{
int day,x1,x2;
day=9;
x2=1;
while(day>0)
  {x1=(x2+1)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/
  x2=x1;
  day--;
  }
printf("the total is %d\n",x1);
}
-----------------------------------------------------------------------------
【程序22】
题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定
    比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出
    三队赛手的名单。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
       则表明此数不是素数,反之是素数。       
2.程序源代码:
main()
{
char i,j,k;/*i是a的对手,j是b的对手,k是c的对手*/
for(i='x';i<='z';i++)
  for(j='x';j<='z';j++)
  {
  if(i!=j)
   for(k='x';k<='z';k++)
   { if(i!=k&&j!=k)
    { if(i!='x'&&k!='x'&&k!='z')
    printf("order is a--%c\tb--%c\tc--%c\n",i,j,k);
    }
   }
  }
}
-----------------------------------------------------------------------------
【程序23】
题目:打印出如下图案(菱形)

*
***
******
********
******
***
*
1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重
       for循环,第一层控制行,第二层控制列。
2.程序源代码:
main()
{
int i,j,k;
for(i=0;i<=3;i++)
  {
  for(j=0;j<=2-i;j++)
   printf(" ");
  for(k=0;k<=2*i;k++)
   printf("*");
  printf("\n");
  }
for(i=0;i<=2;i++)
  {
  for(j=0;j<=i;j++)
   printf(" ");
  for(k=0;k<=4-2*i;k++)
   printf("*");
  printf("\n");
  }
}
-----------------------------------------------------------------------------
【程序24】
题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
1.程序分析:请抓住分子与分母的变化规律。
2.程序源代码:
main()
{
int n,t,number=20;
float a=2,b=1,s=0;
for(n=1;n<=number;n++)
  {
  s=s+a/b;
  t=a;a=a+b;b=t;/*这部分是程序的关键,请读者猜猜t的作用*/
  }
printf("sum is %9.6f\n",s);
}
-----------------------------------------------------------------------------
【程序25】
题目:求1+2!+3!+...+20!的和
1.程序分析:此程序只是把累加变成了累乘。
2.程序源代码:
main()
{
float n,s=0,t=1;
for(n=1;n<=20;n++)
  {
  t*=n;
  s+=t;
  }
printf("1+2!+3!...+20!=%e\n",s);
}
-----------------------------------------------------------------------------
【程序26】
题目:利用递归方法求5!。
1.程序分析:递归公式:fn=fn_1*4!
2.程序源代码:
#include "stdio.h"
main()
{
int i;
int fact();
for(i=0;i<5;i++)
  printf("\40:%d!=%d\n",i,fact(i));
}
int fact(j)
int j;
{
int sum;
if(j==0)
  sum=1;
else
  sum=j*fact(j-1);
return sum;
}

-----------------------------------------------------------------------------
【程序27】
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
1.程序分析:
2.程序源代码:
#include "stdio.h"
main()
{
int i=5;
void palin(int n);
printf("\40:");
palin(i);
printf("\n");
}
void palin(n)
int n;
{
char next;
if(n<=1)
  {
  next=getchar();
  printf("\n\0:");
  putchar(next);
  }
else
  {
  next=getchar();
  palin(n-1);
  putchar(next);
  }
}

-----------------------------------------------------------------------------
【程序28】
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第
    3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后
    问第一个人,他说是10岁。请问第五个人多大?
1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道
       第四人的岁数,依次类推,推到第一人(10岁),再往回推。
2.程序源代码:
age(n)
int n;
{
int c;
if(n==1) c=10;
else c=age(n-1)+2;
return(c);
}
main()
{ printf("%d",age(5));
}
-----------------------------------------------------------------------------
【程序29】
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
1. 程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供)
2.程序源代码:
main( )
{
long a,b,c,d,e,x;
scanf("%ld",&x);
a=x/10000;/*分解出万位*/
b=x%10000/1000;/*分解出千位*/
c=x%1000/100;/*分解出百位*/
d=x%100/10;/*分解出十位*/
e=x%10;/*分解出个位*/
if (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);
else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);
   else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);
     else if (d!=0) printf("there are 2, %ld %ld\n",e,d);
       else if (e!=0) printf(" there are 1,%ld\n",e);
}

-----------------------------------------------------------------------------
【程序30】
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。   
1.程序分析:同29例
2.程序源代码:
main( )
{
long ge,shi,qian,wan,x;
scanf("%ld",&x);
wan=x/10000;
qian=x%10000/1000;
shi=x%100/10;
ge=x%10;
if (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/
  printf("this number is a huiwen\n");
else
  printf("this number is not a huiwen\n");
}

经典C语言程序设计100例11-20

【程序11】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月    后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....2.程序源代码:main(){long f1,f2;int i;f1=f2=1;for(i=1;i<=20;i++)  { printf("%12ld %12ld",f1,f2);    if(i%2==0) printf("\n");/*控制输出,每行四个*/    f1=f1+f2; /*前两个月加起来赋值给第三个月*/    f2=f1+f2; /*前两个月加起来赋值给第三个月*/  }}
-----------------------------------------------------------------------------【程序12】题目:判断101-200之间有多少个素数,并输出所有素数。1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,       则表明此数不是素数,反之是素数。       2.程序源代码:#include "math.h"main(){  int m,i,k,h=0,leap=1;  printf("\n");  for(m=101;m<=200;m++)   { k=sqrt(m+1);    for(i=2;i<=k;i++)      if(m%i==0)       {leap=0;break;}    if(leap) {printf("%-4d",m);h++;         if(h%10==0)         printf("\n");        }    leap=1;   }  printf("\nThe total is %d",h);}-----------------------------------------------------------------------------【程序13】题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数    本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。2.程序源代码:main(){int i,j,k,n;printf("'water flower'number is:");  for(n=100;n<1000;n++)  {   i=n/100;/*分解出百位*/   j=n/10%10;/*分解出十位*/   k=n%10;/*分解出个位*/   if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)    {    printf("%-5d",n);    }  }printf("\n");}-----------------------------------------------------------------------------【程序14】题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,  重复执行第一步。(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
2.程序源代码:/* zheng int is divided yinshu*/main(){int n,i;printf("\nplease input a number:\n");scanf("%d",&n);printf("%d=",n);for(i=2;i<=n;i++)  {   while(n!=i)   {    if(n%i==0)    { printf("%d*",i);     n=n/i;    }    else     break;   }}printf("%d",n);}-----------------------------------------------------------------------------【程序15】题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,    60分以下的用C表示。1.程序分析:(a>b)?a:b这是条件运算符的基本例子。2.程序源代码:main(){  int score;  char grade;  printf("please input a score\n");  scanf("%d",&score);  grade=score>=90?'A':(score>=60?'B':'C');  printf("%d belongs to %c",score,grade);}-----------------------------------------------------------------------------【程序16】题目:输入两个正整数m和n,求其最大公约数和最小公倍数。1.程序分析:利用辗除法。
2.程序源代码:main(){  int a,b,num1,num2,temp;  printf("please input two numbers:\n");  scanf("%d,%d",&num1,&num2);  if(num1='a'&&c<='z'c>='A'&&c<='Z')   letters++;  else if(c==' ')   space++;    else if(c>='0'&&c<='9')        digit++;      else        others++;}printf("all in all:char=%d space=%d digit=%d others=%d\n",letters,space,digit,others);}-----------------------------------------------------------------------------【程序18】题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时    共有5个数相加),几个数相加有键盘控制。1.程序分析:关键是计算出每一项的值。2.程序源代码:main(){  int a,n,count=1;  long int sn=0,tn=0;  printf("please input a and n\n");  scanf("%d,%d",&a,&n);  printf("a=%d,n=%d\n",a,n);  while(count<=n)  {   tn=tn+a;   sn=sn+tn;   a=a*10;   ++count;  }printf("a+aa+...=%ld\n",sn);}-----------------------------------------------------------------------------【程序19】题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程    找出1000以内的所有完数。1. 程序分析:请参照程序<--上页程序14. 2.程序源代码:main(){static int k[10];int i,j,n,s;for(j=2;j<1000;j++)  {  n=-1;  s=j;   for(i=1;i  {    if((j%i)==0)    { n++;     s=s-i;     k[n]=i;    }   }  if(s==0)  {  printf("%d is a wanshu",j);  for(i=0;i

经典C语言程序设计100例1-10

【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去       掉不满足条件的排列。 2.程序源代码:main(){int i,j,k;printf("\n");for(i=1;i<5;i++)    /*以下为三重循环*/  for(j=1;j<5;j++)    for (k=1;k<5;k++)    {     if (i!=k&&i!=j&&j!=k)    /*确保i、j、k三位互不相同*/     printf("%d,%d,%d\n",i,j,k);    }}

【程序2】题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高    于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提    成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于    40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于    100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。      2.程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;  if(i<=100000)   bonus=i*0.1;  else if(i<=200000)      bonus=bonus1+(i-100000)*0.075;     else if(i<=400000)         bonus=bonus2+(i-200000)*0.05;        else if(i<=600000)            bonus=bonus4+(i-400000)*0.03;           else if(i<=1000000)               bonus=bonus6+(i-600000)*0.015;              else               bonus=bonus10+(i-1000000)*0.01;printf("bonus=%d",bonus);} -----------------------------------------------------------------------------【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后       的结果满足如下条件,即是结果。请看具体分析:2.程序源代码:#include "math.h"main(){long int i,x,y,z;for (i=1;i<100000;i++)  x="sqrt(i+100);" y="sqrt(i+268);" x="="i+100&&y*y="="i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/    " sum="0;break; " sum="31;break; " sum="59;break; " sum="90;break; " sum="120;break; " sum="151;break; " sum="181;break; " sum="212;break; " sum="243;break; " sum="273;break; " sum="304;break; " sum="334;break; " sum="sum+day;" 400="="0(year%4="="0&&year%100!="0))/*判断是不是闰年*/  " leap="1; " leap="0;if(leap="="1&&month">2)/*如果是闰年且月份大于2,总天数应该加一天*/sum++;printf("It is the %dth day.",sum);}-----------------------------------------------------------------------------【程序5】题目:输入三个整数x,y,z,请把这三个数由小到大输出。1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,       然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。2.程序源代码:main(){int x,y,z,t;scanf("%d%d%d",&x,&y,&z);if (x>y){t=x;x=y;y=t;} /*交换x,y的值*/if(x>z){t=z;z=x;x=t;}/*交换x,z的值*/if(y>z){t=y;y=z;z=t;}/*交换z,y的值*/printf("small to big: %d %d %d\n",x,y,z);}
-----------------------------------------------------------------------------【程序6】题目:用*号输出字母C的图案。1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。2.程序源代码:#include "stdio.h"main(){printf("Hello C-world!\n");printf(" ****\n");printf(" *\n");printf(" * \n");printf(" ****\n");}-----------------------------------------------------------------------------【程序7】题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!1.程序分析:字符共有256个。不同字符,图形不一样。      2.程序源代码:#include "stdio.h"main(){char a=176,b=219;printf("%c%c%c%c%c\n",b,a,a,a,b);printf("%c%c%c%c%c\n",a,b,a,b,a);printf("%c%c%c%c%c\n",a,a,b,a,a);printf("%c%c%c%c%c\n",a,b,a,b,a);printf("%c%c%c%c%c\n",b,a,a,a,b);}-----------------------------------------------------------------------------【程序8】题目:输出9*9口诀。1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。2.程序源代码:#include "stdio.h"main(){  int i,j,result;  printf("\n");  for (i=1;i<10;i++)   { for(j=1;j<10;j++)     {      result=i*j;      printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/     }    printf("\n");/*每一行后换行*/   }}-----------------------------------------------------------------------------【程序9】题目:要求输出国际象棋棋盘。1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。2.程序源代码:#include "stdio.h"main(){int i,j;for(i=0;i<8;i++)  {   for(j=0;j<8;j++)    if((i+j)%2==0)     printf("%c%c",219,219);    else     printf(" ");    printf("\n");  }}-----------------------------------------------------------------------------【程序10】题目:打印楼梯,同时在楼梯上方打印两个笑脸。 1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。2.程序源代码:#include "stdio.h"main(){int i,j;printf("\1\1\n");/*输出两个笑脸*/for(i=1;i<11;i++)  {  for(j=1;j<=i;j++)   printf("%c%c",219,219);  printf("\n");  }}

徽州旅游



古徽州的地域范围一般来说,是指古徽六邑(歙县、休宁、黟县、祁门、绩溪、婺源),在这片神秘而美丽的土地上,至今还保留着大量的徽派古建筑,古民居、古祠堂、古牌坊并称为徽州三绝。随着皖南古村落西递、宏村被列入世界文化遗产,越来越多的游客对徽派古建筑产生兴趣,纷纷踏上徽州古建之旅。日前北京华夏旅游联盟应黄山市中兴旅行社之邀,对古徽州线路进行了考察。   明代著名戏剧家、诗人汤显祖曾在一首诗中这样写道:欲识金银气,多从黄白游;一生痴绝处,无梦到徽州。徽州不仅以其云山雾海、怪石嶙峋、清秀明丽的黄山、齐云山、新安江、太平湖等吸引着每年数百万海内外游客,更以其美丽迷人、博大精深的人文景观,倾倒了无数旅游者,使其流连忘返。那造型别致的徽派古民居、鳞次栉比的古牌坊群和庄重威严的古祠堂,似乎在向人们无声地诉说着古老徽州文化辉煌的昨天。   因古徽州介于万山丛中,“东有大障山之固,西有浙岭之寒,南有江滩之险,北有黄山之轭”,所以当地流传着一首民谣,“前世不修,生在徽州,十三四岁,朝外一丢。”意思就是生在徽州的小孩子,一长到十三四岁就必须离开家乡,出外谋生。也正因为这几种综合因素,才造就了徽派建筑三绝。   徽州古民居受徽州文化传统和优美地理位置等因素的影响,形成独具一格的徽派建筑风格。粉墙、青瓦、马头墙是它的3大特征。著名的古民居村落有西递、宏村、唐模、南屏、呈坎、昌溪等等。徽州民居讲究自然情趣和山水灵气,房屋布局重视与周围环境的协调,自古有“无山无水不成居”之说。徽州古民居大多坐落在青山绿水之间,依山傍水,与亭、台、楼、阁、塔、坊等建筑交相辉映,构成“小桥、流水、人家”的优美境界。为什么要修建高高的马头墙呢?原来是用来防火和防盗的。众所周知,徽州男子自小离家经商做工,家里只剩下防御能力较弱的女性,一旦遇到窃贼常束手无措,这时高墙就成了天然的屏障。记者在一处古建中就看到了一幅儿媳舍身救婆婆的壁画可为印证。另一项功能是防火,因马头墙高于房顶,且其是砖石所制,一旦邻家失火可防蔓延到自家,保护里面木制的房屋。同行的人士笑谈,还有一项功能那就是可防“红杏出墙”呀。   徽州古民居,多为三间、四合等格局的砖木结构楼房,平面有口、凹、H、日等几种类型。两层多进,各进皆开天井,充分发挥通风、透光、排水作用。人们坐在室内,可以晨沐朝霞、夜观星斗。经过天井的“二次折光”,比较柔和,给人以静谧之感。雨水通过天井四周的水枧流入阴沟,俗称“四水归堂”,意为“肥水不外流”,体现了徽商聚财、敛财的思想。民居楼上极为开阔,俗称“跑马楼”。天井周沿,还设有雕刻精美的栏杆和“美人靠”。一些大的家族,随着子孙繁衍,房子就一进一进地套建,形成“三十六个天井,七十二个槛窗”的豪门深宅,似有“庭院深深深几许”之感。   何为“美人靠”?顾名思义就是美女坐和靠的地方。一般小姐的居室设在二楼,在封建社会女子是不可抛头露面的,当家里来客人时,就在“美人靠”向下观看客人。看到“美人靠”上深深的磨痕和印记,抚今追昔,令人不禁遥想美人靠在窗前向下观望的情景。顿生“贾氏窥帘韩掾少,宓妃留枕魏王才”之感。   古徽州文风昌盛、教育发达,“以才入仕、以文垂世”者代不乏人,灿若繁星。为宣扬封建的伦理道德,表彰宦绩政声、孝子义士、节妇烈女等,徽州人多采用“立牌坊”的办法以传显荣光,流芳百世。古牌坊结构严谨、布局合理、规模宏大,每一块梁枋,每一件镶嵌都合乎力度,在建造上讲究选址、造型、雕刻、用料等。牌坊型制不一,有楼脊式,“冲天柱”式;有方形四柱、八柱,也有“一字型”单门和三门的;有遍饰雕刻、工致华丽,也有平琢浑磨、不事雕饰的,其排列有纵列七道、四道,也有三座横列一排。著名的棠樾牌坊群7座牌坊拔地而起,呈半弧形展开,似在诉说着一个个忠、孝、节、义的故事。被列为全国重点文物保护单位的许国石坊(俗称八脚牌楼),四面八柱,由前后两座三间四柱三楼式牌坊和左右两座单间双柱三楼式牌坊组合而成,气势极为恢宏,显示着许阁老的丰功伟绩。其中“贞节牌坊”可说是当地妇女生活的写照,徽州有“一世夫妻三年伴”之说,因丈夫常年在外经商,只有年节才回家几天而已,妻子只有独自在家劳作教子。   古徽州盛行敦本敬祖之风,各村均建祠堂,且有宗祠、支祠、家祠之分。祠堂大门多作“五凤楼”,高墙翘角。整座祠堂庄严肃穆,体现出族法族规的神圣威严。其中国家重点文物保护单位呈坎罗东舒祠融“古、雅、美、大”于一体,共四进四院,后寝宝纶阁高达13.6米,面阔11开间。徽州著名的祠堂还有龙川胡氏宗祠、黟县敬爱堂、棠樾清懿堂(罕见的女祠)等。   古徽州的建筑之美可谓渊远流长,历久弥新,其中深厚的人文底蕴让人受益匪浅,同行人士无不发出不虚此行的感叹。   徽州,古称新安,自秦置郡县以来,已有2200余年的历史,溯源追本,这里曾先后设新都郡、新安郡、歙州等,宋徽宗宣和三年(公元1121年),改歙州为徽州,历元、明、清三代,统“一府六县”(徽州府、太平县、歙县、休宁、婺源、祁门、黟县、绩溪,除婺源今属江西省外,其余今皆属安徽省)行政版属相对稳定。1987年11月,国务院批准改徽州地区为黄山市;1988年7月,地级黄山市正式成立,辖三区(屯溪区、徽州区、黄山区)四县(歙县、休宁、黟县、祁门县)和黄山风景区,总面积9807平方公里,总人口147万。
  徽州地区是历史上中国经济文化重地,安徽省名中的“徽”字就是由徽州而来。
  古徽州是徽商的发祥地,明清时期徽商称雄中国商界300多年,有“无徽不成镇”、“徽商遍天下”之说。以徽商、徽剧、徽菜、徽雕和新安理学、新安医学、新安画派、徽派篆刻、徽派建筑、徽派盆景等文化流派构成的徽学,更是博大精深。它与敦煌学、藏学有同样影响。
  徽州旅游资源得天独厚,密度极大,品位极高,除拥有两处世界遗产外,还有一座全国历史文化名城,三处国家级风景名胜区,一处国家级自然保护区,一处世界地质公园,二处国家地质公园,三处国家森林公园和10处国家级历史文物保护单位,一处国家级历史保护街区。雄踞域中的国之瑰宝黄山,以奇松、怪石、云海、温泉、冬雪“五绝”著称于世,是中华民族的象征和骄傲,黄山具备“山上有奇景,山下有奇观”的全方位立体之美。西递、宏村世界文化遗产是徽州物质文明的历史遗存,矗立的牌坊代表着徽州人的精神家园,更多的古村落、古建筑体现了徽州远古的繁华和富荣,牯牛降的原始自然传递出徽州大地的久远、淳朴和原生态的珍藏,横亘黄山南北的新安江、太平湖,更增添了黄山水之灵秀。
主要名人:  朱熹(1130—1200),中国南宋思想家。字元晦,号晦庵。婺源人。  陶行知(1891—1946),教育家。1891年10月18日生于安徽歙县。  胡雪岩(1823—1885),著名徽商,人称“红顶商人”。名光墉,字雪岩,绩溪人。  胡锦涛(1942— ),中华人民共和国主席。绩溪人。  胡适(1891—1962),著名学者。原名嗣穈,学名洪骍,字希疆,后改名胡适,字适之,笔名天风、藏晖等,绩溪上庄村人。  戴震(1724—1777),清代考据学家,思想家。字东原,休宁隆阜人。  方腊(?-1121年),北宋末年农民起义领袖。又名方十三,歙县人,一说睦州青溪人。  程大位(1533—1606),明代数学家。字汝思,号宾渠,休宁率口人。  汪机(1463—1539),新安医学奠基人。字省之,别号石山居士,祁门城内朴墅人。  吴承仕(1884—1939),经学家、古文字学家、教育家。字检斋,歙县人。  弘仁(渐江)(1610—1664),新安画派创始人。俗姓江氏,名韬,字六奇,又名舫,字鸥盟,出家后取法名弘仁,号渐江学人、渐江僧。歙县人。  汪士慎(?-1759),扬州八怪之一。字近人,号巢林,又号溪东外史,休宁人(一说浙江人,或歙县人),流寓扬州。与金农相友善。笔墨习染,逐臻妙境。
相关链接
  徽墨  歙砚
徽州古道关隘  【徽安古道】古道名。由徽州府城至安庆府城。从歙县沿徽浮古道至祁门县城,由祁门县城北上,经臂岭、大但、大洪岭至雷湖;转向西北,经琅田、古楼墩至金汉培,入石埭县境;再经横渡、七里、矾滩,沿鸿陵溪北行,过唐家渡,经塔坑、九里冲入贵池县境;经十字路、牌楼、吴田、黄溢至安庆。全程210公里。这条古道,以祁门县境内大洪岭段最为难行。明万历年间,祁门县有儒妇郑氏,曾捐银修辟。其后之年久失修,洪水冲刷,山崩道塞,石瞪剥蚀,几至断绝交通。清道光年间,地方人士捐款整修,凿山平路,改善弯道,加铺石板,路况遂有改观。整段岭路上七里下八里,岭头有石碑二块,一刻修路经过及捐款、开支情况;一刻养护道路规定。现屯溪至安庆已通公路,古道荒废。  【徽昌古道】古道名。由徽州古城至浙江昌化县。出歙县南门,东北行,经渔梁、鲍家庄、呈村降、大阜、霞坑、苏村、粑樟里、三阳、星岭关至浙江昌化县,通杭州。歙城至星岭关62公里。三阳之东,从竹铺至星岭关为高山地带,岭峻路险。其余路段,依山傍河,为走廊地带。星岭关路段相传为1131年岳飞提兵讨杨么过此而建,元代曾整修。这条古道1932年改建为公路。   【徽池古道】古道名。由徽州府城至安庆府城。沿徽州至安庆古道,行至石添唐家渡分路,转向正北,经沟汀、鹪鹩入贵池县境;至虎子渡,沿秋浦河,指北偏西,顺流直下,经高但、殷家汇转。向东北行至贵池城。全程200公里。  【徽浮古道】古道名。由徽州府城至江西浮梁县。从歙县城西行,经棠樾、唐模至潜口,转向西南,经塘贝,跨丰乐水,过塘坞,至休宁徽光,经万安至休宁县城;出休宁县西门西行,经夹溪桥、川湖街、蓝渡、岩脚至界首,过界首至至黟县渔亭;由渔亭西行,经楠木岭至祁门县的横路头、再西行,经金字牌、洪村至祁门县城;由祁门县城再西行,经新岭、小路口、石坑、大北埠、罗村铺至闪里;由闪里南下直趋浮梁县城,全程200公里。潜口至塘坞10公里,路宽之至3尺,石板路面;徽光至休宁县城10公里,路宽7尺,其路中为石板路面,宽1.5尺;休宁县城至渔亭28公里,蓝渡桥南沿横江至岩脚段古道尚存,路宽7.5尺,路中石板路面宽1.2尺;渔亭至祁门县城27公里;祁门县城至浮梁县城125公里。徽浮古道横贯徽州西部,是古代驿道。现在这条路的大部分路段为慈张公路所利用。  【徽泾古道】古道名。由徽州府城至泾县。出歙县城向东北行;经吴山铺、牌头、新管、上新入绩溪县境;经临溪、雄路至绩溪县城;从绩溪县城向西北行,经高村、翠岭、镇头、浩寨至分界山(绩溪、旌德县界);过分界山,经七里铺至旌德县城;由旌德县城再向西北行,经新桥、柳山铺、高口铺、三溪铺至浙溪入泾县境;再北上,经榔桥至泾县城。全程94公里。歙绩段30公里,道路平坦,路宽6至9尺,修建慈张公路时被利用。绩溪县城至旌德县城段古代设有驿铺,自唐至清,为官员往来宣州、徽州的官道之一。其间,翠岭段陡峻难行。宋代在翠岭设立关寨,名"翠岭关",1555年在关头重建城堞,为军事要塞。清康熙年间,耿精忠响应吴三桂反清,攻绩溪,翠岭一带是两军争夺的战场。宋王安石为江东提刑时,由江西经徽州赴宁国府,经过此道,有"夜过翠岭月明中"诗句。清人施润章亦有《过晕岭》诗:"崇冈郁峻脂,鸟道绕山腹。仰探白日短,俯瞰阴霞伏。鱼贯渡行人,马瘦艰踝囹。春晴多好风,吹我岩壑绿。农耕岭上云,妇饭溪中犊。羁心旷登陈,瘠土见风俗。华阳灵迹闪,杖策寻石屋。 50年代,镇头以北,沿古道走向建成绩溪至旌德公路,翬岭古道已少行人。  【徽开古道】古道名。由徽州府城至浙江省开化县。出歙县城西门,过太平桥西南行,沿丰乐水直上,绕过圣僧庵,经七里头、冷水铺、梅村至岩寺;自岩寺向南行,经于村至莫墩,转向西南行,进入屯溪;由屯溪再甫行,经阳湖、临溪、汉口至珍源(古为休宁、开化县界),再前行,越马金岭,直趋浙江开化县城)歙县至屯溪段路宽3至4.5尺,现绝大部分为兴建芜屯公路所利用。屯溪至开化段为石板路面,现在大部分路段为屯开公路所利用。  【徽宁古道】古道名。由徽州府城至宁国县。沿徽径古道至绩溪县城,由绩溪县城向东北行14公里至丛山关,出关入宁国县境再向东北行,经金沙、三十八号桥至宁国县城。此道古代设有驿铺,是官员往来徽州的官道之一。明程敏政由京城返乡,经此道过丛山关,曾赋诗:"江南江北路迢迢,马上朱颜觉渐调。今日故乡初入眼,丛山关下巧溪桥。"此道现为慈张公路所利用。  【徽青古道】古道名。由徽州府城至青阳县。出歙县北门,西北行,过万年桥,经富惕至许村;由许村北上,经五猖庙、茅舍、茶但至窘岭关;过菩岭,入太平县境,至上岭脚,经谭家桥、感样里、迄溪、马兰地、三口至仙源;西行至甘棠,转向西北,经秧溪河至广阳,广阳北上直通青阳县城。此路多为石板道,石面光滑,路宽3至6尺。  【徽婺古道】古道名。由徽州府城至婺源县。自歙县至屯溪,从屯溪起,向西南行,经黎阳、高枧、瑶溪、新村、霞阜、龙湾至五城;转向南,经山斗、于金担、官铺街、黄土岭、下但,出休宁县界,前行通婺源县。瑶溪至五城段古道仍存,石板路面。其余路段多为公路利用。古时,此道为婺源和徽州的联系孔道,婺源茶叶由人力通过此道挑运至休宁龙湾,然后由水路或陆路运屯溪;由屯溪运去食盐、布匹、粮食和其它日用品。休宁西南部的茶叶及其它土产,也大部分由此道运至屯溪交流。 "
  【徽饶古道】 徽饶古道始建于唐代,均用长约4尺青石板条铺砌而成的,由长江以北通往徽州、饶州等地的客商必经之道,故被称“古徽道”,“徽饶道”即属旧时的“国道”。徽饶古道穿越是徽道的其中一段,全程15公里左右,由于年久失修,现在尚未完全开发,沿途断崖峭壁林立,崇山峻林,自然风光秀丽,适合初级户外爱好者的穿越体验。  【江南第一关】关隘名。又名逍遥岩。位于绩溪县伏岭乡东部。海拔424米。乃徽州至杭州古道要隘。危岩陡绝,南北夹峙,上多怪石,下临深渊。1257年绩溪县人胡旦,随山势开凿瞪道,以便行旅。元大德和明成化年间曾重修。从关脚至隘口瞪道约1400余阶,部分绝壁嵌入2米长花岗岩石条,筑成瞪道。关门由四根巨大石条横架在天然石住上构成。东西两媚分别镌有"徽杭锁钥"和"江南第一关"字样。关东施茶亭旁岩石上,刻有记古道小史碑文。关名为明胡宗宪所取。徽州塔桥  【下尖塔】塔名。位于徽州区潜口村南。建于1544年。塔七层八角,底层直径约10米,层层缩小,外观如锥,俗称"潜口锥"。塔空心仅两层,第一层:四面砌须弥座,墙上绘有佛像,第二层壁间嵌砖雕楣匾,内镌"翼峰"二大字,旁署"嘉靖二十三年甲辰岁,竹溪翁汪道植谨立"。其余五层为实心。现塔檐及顶部已毁,为徽州区重点文物保护单位。  【岩寺塔】塔名。位于徽州区岩寺镇北,西临丰乐河;又名水口塔。始建于1544年,清康熙、道光年间曾作修葺。七层八面,高约66米,底径约8米,逐层略内收。塔楷底层外伸1.5米,向上逐层加码,至第七层檐出3米,使上层檐水直滴至地,为古塔奇构。塔内有砖阶自复壁中盘旋而上,每层皆有佛龛、金匾。清末塔檐被焚,1914年塔顶又被雷击倒坍,现仅存珠墩以下砖砌塔身。塔东有凤山台,与塔同时建造。传说初建时,以塔为笔,以台作砚,以塔西余公桥(已毁)当墨,预示岩寺镇文运昌盛。现为戳州区重点文物保护单位。园林水口  【徽州园林】区域园林名称。作为供游憩、文化娱乐、起居要求而兴建的徽州园林,有文献可稽者,从北宋开始。宋政和年间绩溪许润构乐山书院,建有天月亭、南楼等小筑,常登览其上。婆源朱氏园有池,有亭,朱韦斋写有"方塘荫瓦影,净见鲸鲤行"的诗句。宋至元代,徽州私家园林营筑较多,其中著名的有:宋绩溪乐山书院,婆源朱氏园,歙县醉园、先月楼,休宁竹洲吴氏园亭、首村朱氏园亭、东野山房、璜原吴氏园亭、龙源赵氏园亭,黔县培筠园;元代休宁有林泉风月亭、醉经堂、月潭朱氏园亭、秋江钓月楼等。除黔县培筠园尚存部分水石遗构,其余已不存,只能从有关文献中了解当初的面貌。明清时期,徽商将大量的金钱投入园林建设,使徽州园林达到极盛。徽州区西溪南村老屋阁右侧的私家花园,面积仅400多平方米,营构极精,花园内遍植花木。左侧为一方池塘,称"渔翁塘",养荷放鱼,供人观赏垂钓。池畔建绿绕亭,老屋阁住宅拱立池、园之中,意境清新恬适。岩寺镇有八大名园:娑罗园、菜园、檀山苑、西墅、会心园、茂林修竹、香雪窝、方氏园。村落水口原为风水而建,通过人们的经营,楼、台、亭、阁、塔、桥隐现于古树绿荫丛中,成为普通村民休憩娱乐的场所,是中国最早的公园形式。歙县郑村经郑氏族属的经营规划,全村景致呈现园林化意境,族人郑九夏曾作《十二景图》,每图题诗一首,是人工造园与自然景观相结合的较早范例。徽州园林崇尚自然,就形造景,寓情于景(参见[竹洲吴氏园亭])。尤其"新安大好山水",处处是景,借景入园,全无人工雕饰的痕迹,为徽州园林的最大特色。  【果园】庭园名。位于徽州区西溪南村。始建于明,盛于清。当年园内有亭台楼阁,假山湖池,曲桥石堤,名花修竹。四周花墙围筑,园内景致迷人,花香鸟语,四季如春。此园相传为江南才子祝枝山所设计,今大部分毁于兵灾,仅存假山、仙人洞、湖池及部分围墙遗址。  【潜口水口】水口名。位于徽州区潜口村。紫霞峰为黄山山脉南侧起点,有"黄山第一峰"之称,此峰位于潜口村南侧,山下溪水婉蜒而过,石板大道直通村中心,水口即设于此。紫霞峰高不到50米,呈环抱状。山顶古树茂密,以甜丘树和枫树为主。石板道两旁遍植紫荆花。山拗处原建有观音大殿,观音塑像后有泉水流出,甘甜清凉。寺院除大殿外,二厢有附房供僧人住宿。院内地面全用石板铺筑。顺溪水,过小桥,迎面筑有灵官殿。石级迂回而上,有览胜亭。每逢节日或休闲时节,村人常到此游览或祈祷。

学习ps要知道那些


PS基本使用方法 Adobe Photosop是一个处理图片的软件.广泛应用于婚纱影楼,广告公司等地方.它
可以很轻松的消除图像中的痕迹,比如人物脸上的伤疤,皱纹,痣等.它处理的图片
是由像素组成的"也就是一个图片放大很多倍的时候我们所看到的小方块"它的图
片最大放大到1600倍.里边的小方块也就是像素.越高,图片就会越清楚,反之模糊.
一般来说打印的分辨率是300每像素英寸.也就是每厘米118.11个像素,像素也叫做
点,处理的图也叫做点阵图.快捷键:1.快速打开文件双击Photoshop的背景空白处(
默认为灰色显示区域)即可打开选择文件的浏览窗口第二节:1.针对所选择的区域
进行处理。如果没有选定区域,则对整个图像做处理.2.套索”工具中Shift和Alt
键的使用方法: 增加选取范围按“Shift”键。 减少选取范围按“Alt”键。两
个选取框叠加的区域按“Shift+Alt”键。魔杖”工具中Shift和Alt键的使用方法
: 增加选取范围按“Shift”键。减少选取范围按“Alt”键。 两个选取框叠加
的区域按“Shift+Alt”键。选框-M 移动-V 套索-L 魔棒-W 喷枪-J 画笔-B 铅笔
-N 橡皮图章-S 历史记录画笔-Y 橡皮擦-E 模糊-R 减淡-O 钢笔-P 文字-T 度量
-U 渐变-G 油漆桶-K 吸管-I 抓手-H 缩放-Z 默认前景和背景色-D 切换前景和背
景色-X 编辑模式切换-Q 显示模式切换-F 3.如果我们按住Alt键后再单击显示的
工具图标,或者按住Shift键并重复按字母快捷键则可以循环选择隐藏的工具。
4. 获得精确光标   按Caps Lock键可以使画笔和磁性工具的光标显示为精确十
字线,再按一次可恢复原状。 5. 显示/隐藏控制板   按Tab键可切换显示或隐
藏所有的控制板(包括工具箱),如果按Shift+Tab则工具箱不受影响,只显示或隐
藏其他的控制板。 6. 快速恢复默认值 点按选项栏上的工具图标,然后从上下文
菜单中选取“复位工具”或者“复位所有工具”第三节:7.自由控制大小   缩
放工具的快捷键为“Z”,此外“Ctrl+空格键”为放大工具,“Alt+空格键”
为缩小工具,但是要配合鼠标点击才可以缩放;相同按Ctrl+“+”键以及“-”
键分别也可为放大和缩小图像;Ctrl+Alt+“+”和Ctrl+Alt+“-” 可以自动调
整窗口以满屏缩放显示使用抓手工具时,按住空格键后可转换成手形工具,即可
移动视窗内图像的可见范围。在手形工具上双击鼠标可以使图像以最适合的窗口
大小显示,在缩放工具上双击鼠标可使图像以1:1的比例显示。8.键盘上的D键、X
键可迅速切换前景色和背景色。 9.用任一绘图工具画出直线笔触:先在起点位置
单击鼠标,然后按住Shift键,再将光标移到终点单击鼠标即可,使用绘画工具如(
如画笔,向笔等),按住Shift键单击鼠标,可将两次单击点以直线连接.10.在图
层、通道、路径调板上,按Ctrl键并单击一图层、通道或路径会将其作为选区载
入;按Ctrl+Shift键并单击,则添加到当前选区;按Ctrl+Shift+Alt键并单击,
则与当前选区交叉。复制技巧1.按Alt键拖动选区将会移动选区的拷贝, 2.按住
Ctrl+Alt键拖动鼠标可以复制当前层或选区内容。3.如果你最近拷贝了一张图片
存在剪贴板里,Photoshop在新建文件(Ctrl+N)的时候会以剪贴板中图片的尺寸作
为新建图的默认大小。要略过这个特性而使用上一次的设置,在打开的时候按住
Alt键(Ctrl+Alt+N)。4.当我们要复制文件中的选择对象时,要使用编辑菜单中的
复制命令。复制一次你也许觉不出麻烦,但要多次复制,一次一次的点击就相当
不便了。这时你可以先用选择工具选定对象,而后点击移动工具,再按住“Alt”
键不放。当光标变成一黑一白重叠在一起的两个箭头时,拖动鼠标到所需位置即
可。若要多次复制,只要重复的放松鼠标就行了。 5.可以用选框工具或套索工具
,把选区从一个文档拖到另一个上.6.把选择区域或层从一个文档拖向另一个时,
按住Shift键可以使其在目的文档上居中。7.单击工具条中的画笔类工具,在随后
显示的属性条中单击画笔标签右边的小三角,在弹出的菜单中再点击小箭头选择
“载入画笔…”。8.快捷键Ctrl+Z(可以自由地在历史记录和当前状态中切换),
还增加了Shift+Ctrl+Z(用以按照操作次序不断的逐步恢复操作)和Alt+Ctrl+Z(使
用户可以按照操作次序不断的逐步取消操作)两个快捷键。按Ctrl+Alt+Z和
Ctrl+Shift+Z组合键分别为在历史记录中向后和向前(或者可以使用历史面板中的
菜单来使用这些命令)。9.打开Curve(曲线)对话框时,按Alt键后单击曲线框,可
使格线更精细,再单击鼠标可恢复原状。10.移动图层和选区时,按住Shift键可
做水平、垂直或45度角的移动;按键盘上的方向键可做每次1个像素的移动;按住
Shift键后再按键盘上的方向键可做每次10个像素的移动。 图像模式及其转换.在
Adobe Photosop里,每一种颜色都有不同的用途,我们可以在处理图像时应根据自
己的需要选择不同的颜色模式.1.位图.它使用两种颜色也就是黑跟白来表示图像
的.特点是存储空间很少,但无法表现出图像丰富的色彩和色调.因此适用于一些黑
白对比强烈的图像.要将图像转为位图之前,必须要先转为灰度.2.灰度.它是由256
级的灰度来表示图像的,图像的每一个像素能够用0-255之间的亮度值表现,因而色
调表现力强,图像也比较细腻,使用黑白相机得到的就是灰度的图像.它也可以由彩
色照片转换得到,原图像的彩色信息删除,而只留下像素的亮度.图像转为灰度时颜
色信息会全部丢失.3.双色调.通过用2-4种自定的油墨创建双色调,三色调,四色调
的灰度图像.彩色图像专换为双色调前,必须首先转换成为灰度图像.4.RGB它是由
红,绿,蓝也就是光的三原色组成的,这三种颜色重叠处会产生青色,洋红,黄色和白
色,由于RGB合成可以产生白色,因此我们称它为加色模式,一般用于光照,视频和显
示器.三种颜色的值为255时为白色的,反之为黑色的.它三种颜色可以在屏幕上重
新生成多达1670万种颜色.5.索引颜色这种模式最多只能使用256种颜色,而且还可
以将颜色数量减到更少以减小文件.通常输出到Web页和多媒体的图像文件.当彩色
图像变为这种模式时将构建一个颜色表用于存放颜色.在索引颜色里只能进行有限
的编辑,若要进一步的编辑,需临时变为RGB.6.GMYK理论上这个模式为青色,洋红,
黄色合成的,他们合成后会生成黑色,因此这种颜色称为减色模式.它称为四色印刷
.在准备要用印刷色打印图像的时候,应用CMYK模式,将RGB转为CMYK时会产生分色,
最好是在创建图像开始就变成为CMYK.7.Lab它是目前包括颜色最多的一种模式,是
Photosop在不同模式之间转换的中间模式.它是由亮度和两个色度分量组成的.L表
示光亮,范0-100,a表示从绿色到红色的色变化.b表示从蓝色到黄色的变化.两者都
是-120-120.如果中想改变图像的亮度而不影响其他颜色值,可以将图像转为Lab,
然后在L通道中进行操作.Lab最大的优点是颜色与设备无关,无论使用什么设备创
建图像,都可以与产生的颜色保持一样.调整图像1.色阶在色阶里可以调整图像的
暗调,中间调和高光.以校正图像的色调范围和色彩平衡.常用于修改曝光不足和过
度的照片.2.自动色阶可以将图像中最暗的像素变黑,最亮的像素变白,并在黑白之
间扩展中间色调.一般使用它来调整缺乏明显对比度的图像.但是它有可能影响色
彩平衡.3.自动对比度可以自动调整图像中的颜色的总体对比度.它不会单独调某
个通道,所以不会引入或消除色偏,可以使高光显得更亮,暗调显得更暗.4.自动颜
色.它以在图像查找得到的图像的高光和暗调的平均色来得到图像的对比度.并且
自动设置图像中的中性灰色像素来调整图像的色彩平衡.可以用于校正色.5.曲线
与色阶相似,它也是调整图像的整个色调范围,不同的是,曲线是用0-255色阶范围
内的任意点来调整图片的,因而,利用曲线工具调整色调更精确,更细致.6.色彩平
衡可以简单快捷的调整图像的阴影区,中间色调和高光区的色彩平衡.不过它只是
能做精略的调整,若要精确调整图像中各色彩的成分,还是需要执行曲线和色阶.7.
亮度对比度.可以调整图像的亮度和对比度.8.色相饱和度可以调整整个图像或单
个颜色成色的色相,饱和度和亮度.色相就是颜色,每一种颜色都叫做一种色相,比
如红色,绿色都是一种色相,饱和度就是颜色的纯度.亮度就是明暗了.9.去色.执行
色命令,将彩色照片转换为相同颜色模式下的灰度模式,去色命令只对当前图层或
图像中选区进行转化,不改变图像的模式.10.替换颜色可以在图像中选取特定颜色
的图像范围,然后替换该颜色,相当于先使用色彩范围选定某个区域,然后使用色相
饱和度命令调整该区域.11.可选颜色只对当前选择的颜色做改变,其他的不改.12.
通道混合器通过输出的通道颜色来给图像做颜色调整.13.渐变映射将相等的图像
灰度范围映射到指定的渐变填充色,就像是渐变完全融合到图像中一样.而不是单
纯的叠加上去.14.反相反转图像中的颜色,此命令可以将一个正片黑白图像变成一
个负片,也就是底片的效果.反相图像时通道中的每一个像素的亮度值转换为256级
的颜色相反的值.15.色调均化将重新分布图像中各像素的亮度值,以便它们更均匀
地呈现所有范围的亮度级别.它会查找图像中最亮和最暗值,并将最暗值变为黑色,
最亮值为白色.16.阈值将灰度或彩色图像转换为高对比度的黑白图像,可以指定黑
白的多少.17.色调分离可以指定图像中数据来出现色调分离的大小.18.变化.可以
很直观的调整图像或选区的色彩平衡,对比度和饱和度.这个命令对于色调平均且
不需要精确调整的图像是非常适用的.文字的效果注意:文字的效果对于我们所选
的文字的字体是有很大的关系的.比如我们以后学的边框字就应该选一些比较粗的
字体.如果细的话选区收缩会没有了.太小了.所以要多看一些字体.1.投影字输入
文字,颜色无所谓,我们以后可以再改,提交,栅格化,这两个命令以后就省略了,因
为这是最常用的以后应该很熟练.我们可以按住CTRL键用鼠标单击当前的文字层将
它载入选区,也可以用选择菜单中的命令,但最好是用快捷键.载入选区后,我们可
以随便给它加颜色和渐变 ,然后再做图层样式中的投影.2.泥字这个不用文字工具
,所以也不用栅格化了,直接用画笔工具在背景上写上我们想要的字,然后做滤镜中
风格化中的浮雕效果,调整参数就可以了,注意我们不可能做出一模一样的效果来,
每做一次一般来说都有不同的效果,所以要想要做出好的效果来就要多调整.3.图
案字先打开一幅图片,这个字我们用到的是蒙板文字工具,它不会产生文字图层,出
现的是选区,当然如果选区太小的话我们可以用变换选区命令来变大.然后进行复
制,粘贴.会出现一个图层,将当前图层做一些图层效果就可以了,如浮雕,投影都可
以,我们做这个效果主要是做出文字从图像中凸出的效果.如果将图层移动的话就
不对了.4.风车字这个字做出的效果是像风车转动的效果.输入文字,我们按住
SHIFT键画出一个正圆,要保围整个文字.做扭曲中的极坐标,然后复制图层,将副本
做模糊中的径向模糊,数量不用太大.再点击原图层将他的图层透明度小一点就可
以了.5.边框字输入文字,载入选区做渐变,不要取消选区做选择修改中的收缩选区
,数量不用太大,2就可以,然后再删除.然后再次载入选区,按住CTRL+ALT再加上光
标轻移就可以了.做出立体效果.6.卷毛字输入文字,我们只需要按住SHITF键画一
正圆,执行扭曲中的旋转扭曲就可以了,然后再用选区工具移动到合适的地方再次
进行滤镜命令,也可以用CTRL+F也就是重复滤镜.7.碎石字输入黑色文字,将前景色
设为白色背景为黑色,进行纹理中的染色玻璃,可以调整方格的大小,然后用魔棒工
具选择白色,再点击选择中的选取相似然后删除,取消选区做图层样式中的斜面和
浮雕就可以了,但是做完后还可以用套索工具选择碎的小块进行删除就可以了.8.
金属字输入黑色文字,做模糊中的高斯模糊,再做风格化中的浮雕,再重复一次.最
后做渲染中的光照效果,将通道选定为红色,为的是有立体效果,颜色改为黄色.9.
爆炸字输入红色文字,做纹理中的龟裂缝,亮度最小,深度最大,用魔棒工具选择黑
色进行选取相似.然后删除.画一个椭圆包围文字,给它做球面化.复制当前层,给副
本做径向模糊,选择缩放,大小大一点.选择没有做模糊的那个层将当它的字一个一
个的移动到前一图层的上面.然后再做一点外发光就可以了.10.燃烧字新建的是一
个灰度模式.将背景色填充为黑色,字是白色的,先载入选区进行存储,用编辑中的
顺时针转90度给他做风格化中的风,可以重复做向次,然后再逆时针转回来.做扭曲
中的波纹.将模式变成索引,将颜色表中的灰度改为黑体.转为RGB模式后,将一开始
存的选区载入回来,用选区工具移动到合适的位置上进行填充黑色.11.凤尾字输入
文字,用选区工具一个一个的做渐变,复制当前层,用涂抹工具,调画笔的大小和压
力进行涂抹.做完后做外发光.12.根雕字黑色的背景,字的颜色选深褐色.做纹理中
的龟裂缝,扭曲中的波纹,做斜面和浮雕,加一点外发光,颜色是白色的,然后选小点
的画笔压力值大点,进行涂抹,就可以了.13.砖块字颜色选择暗红色进行填充背景,
做纹理中的纹理化,选择砖形,光照方向_左上,大小大一点,深度大一点,输入蒙板
文字,复制粘贴,选择背景,将它变成白色.还有另一种做法,将字的颜色变成暗红色
,做纹理中的纹理化,然后按住Ctrl键点图层载入选区,轻移,做出立体效果,然后描
一个白边.14.电光字设背景色为黑色字为白色,做滤镜中的风格化中的风,将四面
都吹风,然后做扭曲中的波纹,将模式转为灰度,做风格化中的曝光过度,将模式转
为索引,将颜色表的中灰度变为黑体,把模式转为RGB.15.牵手字输入数字(0 8 9)
删格化,然后载入选区,做渐变.用选择工具选择数字Ctrl+x,Ctrl+v将数字分开层,
然后选择其中的一个字的一部分,进行删除,使它们看起来有连在一起的感觉,然后
加上连接符进行合并.做图层样式的斜面和浮雕.16.双色字输入黑色文字,放在中
间,从标尺拖出辅助线,也在正中间,在背景上新建一层,用矩形画出选区,位置在左
上角,再画出右下角,进行填充黑色,选择文字层做调整中的反相.蒙板:分为文字蒙
板,图层蒙板.快速蒙板工具.它们共同的特点是都是为了产生和修改选区的.文字
蒙板:它是单纯的利用文字的形状来产生选区的,点击文字工具后图像就会全部变
成红色.如果现在提交的话,将没有选区产生,因为在蒙板文字里面红色就代表被保
护的区域,选区就应该是红色以外的.蒙板文字的最终目标是产生选区不会产生文
字图层.图层蒙板:它是用来改变图层的隐藏和显视的.它是图层合成最常用的手段
,使用它的好处是可以在不改变图层中图像的像素的情况下,实现多种混合图像的
方案,并可权从中进行反复调整,蒙板里白色区域是显示当前图像的,黑色区域隐藏
图像.而灰度则是对应的图像中半透明的效果.快速蒙版:进入快速蒙板就是编辑和
产生选区的,红色代表被保护的地方,选区是红色以外的地方.进入蒙板以后我们可
以给选区做任何的滤镜效果.双击进入快速蒙板铵钮可以更改它的选项.通道:它的
作用是保存和修改选区和颜色的.在通道里没有颜色,每一种颜色都有一种灰来表
示,当然每一种灰也是一种透明度,纯白的是选区.纯黑不是.在通道里正常的文字
也只能是产生选区的.在通道里,我们可以把选区当成一个图层来编辑可以给他做
任何的滤镜效果.路径:路径最大的功能就是能很好产生选区,因为路径可以变成选
区,反之亦然.而路径又可以很方便的编辑.用路径产生的选区表面很平滑.利用通
道蒙版和路径做出来的效果:圆锥体新建图层,画一个矩形做渐变,自由变换透视把
上面变小.存储选区,再画一个椭圆再存储.载入第一个选区后再载入第二个选择,
从选区中减去.用矩形选择从选区中减去把上面减掉后,删除.再载入第二个选区后
用调整中的色阶把颜色变暗.使它有立体的效果.凹陷字:新建通道,输入字母,做模
糊中的高斯模糊,然后做风格化中的查找边缘,回到背景,做渲染中的光照效果,选
择通道1撕纸字:新建通道,输入文字,复制当前通道,给复本做其它中的最大值,做
画笔中的描边中的喷溅,在原通道重复滤镜,点击背景做纹理中的纹理化,载入第一
个通道,做图层中的通过剪切的图层,再载入第二个通道,点击背景删除,给图层一
做一个投影的效果.雕刻字:新建通道,输入文字,取消选区做模糊中的高期模糊,做
曲线中的调整曲线,全选通道,复制到背景上粘贴.保存,做扭曲中的置换.再用色彩
平衡来调整字的颜色.用路径做出心形新建图层,用钢笔工具画出心的大体形状,然
后调整心的形状,将通过路径面板将路径变成选区,进行填充红色,自由变化,成比
例缩小,定义画笔,点出工作路径,选择刚才定义的画笔,调整间距,描边路径,然后,
给当前层做一些图层效果.图片效果:1.暴风雪找开一幅适合做暴风雪的图片,复制
背景,然后做象素中的点状化,数值为八,图象调整中的阈值,将黑白的比例平衡,做
模糊中的动感模糊,将图层模式转化为滤色[屏幕].2.立方体新建文件,拖入三幅图
片可以适当的将它们变小,再在背景上新建一层, 然后做滤镜的中3D效果,画出一
个立方体,然后用轨迹球转出三个实面,将三幅图片用自由变换中的扭曲贴到三个
面上,然后合并图层.3.木质画框打开一个图片,新建一个图层,全选,选择里的变换
选区,成比例缩小,反选填充桔黄色,杂色中填加杂色,做模糊中的动感模糊,再做图
层样式中的浮雕效果,加上等高线.4.高尔夫球新建图层,做白到黑的径向渐变从左
上角到右下角,然后做滤镜中的扭曲中的玻璃中的小镜头,画一个正圆,做扭曲中的
球面化,反选删除,可以把它变的小点,点击背景新建一图层,画椭圆填充黑色,模糊
中的高期模糊,调不透明度,点击球的图层,给它做渲染中的镜头光晕,合并图层.5.
邮票打开一幅图片,拖到一个新建的文件里面,产生一个图层,载入选区,新建一个
图层,填充白色,倒换图层,自由变化往外拉,将选区变为路径,选择合适的画笔调整
间距,描边路径,用魔棒工具选择黑色,删除,给当前层做投影.打上文字.6.禁止吸
烟新建图层画正圆,填充红色,选择自由变化选区,变小,删除.新建图层,画矩形,做
过滤嘴,做橙黄橙的渐变,添加杂色,数值小一些,变换选区,将选区拉长,做灰白灰
的渐变,取消选区自由变换旋转,然后,移到适当的位置,再用套索工具画出烟燃烧
的地方,填充黑色,填加杂色,数值大一点,然后再用红色画笔点一些火星,用直线工
具,调整大小,将前景色变为红色,选择第三个单纯的填充,写上文字,用黑色的画笔
点上烟雾.7.手镯新建图层,默认前景色和背景色,做渲染中的云彩,做液化中的涂
抹,画正圆,删除,变化选区,变大删除,调整曲线加颜色,做图层样式中的浮雕效果,
浮雕的暗调调到最小,等高线选择第四个,然后做投影.8.羽毛新建一个长方形的文
档,填充黑色,新建一个图层,画一个矩形填充白色,旋转画布,做风格化中的大风,
重复滤镜做模糊中的动感模糊,转回画布,将白色移到最下边,给它做编辑中的垂直
翻转,然后做扭曲中的极坐标到平面坐标,用选框工具,把下边删除,复制当前层,垂
直翻转,合并图层,自由变化,调整大小.也可以用透视.9.海上日出新建图层,做黄
到红的径向渐变,从中心往外拉,再新建一个图层把前景色变成淡红色背景色变成
白色,再做渲染中的云彩,扭曲中的玻璃,自由变换的透视将图像做出延伸的效果,
再新建一个图层,画一正圆填充红色,做太阳进行高期模糊.再画一个椭圆进行羽化
后做黄到红的径向渐变,做自由变化中的透视效果.将模式改为叠加.再到有云彩的
图片中利用蒙板做出选区拖到图像中将模式改为线型减淡.再用画笔加一些鸟的形
状.10.放大镜打开一副图片,画一个正圆复制粘贴,载入选区后做扭曲中的球面化,
再新建一层进行描灰色边,再载放选区进行描黑色的边.再新新建一层画一个矩形
做灰白灰的渐化,自由变化中的透视将一点向中间移,放到合适的位置上就可以
了.11.水晶球默认的前背景色,在背景上做渲染中的云彩,再做扭曲中的极做标,选
择平面做标到极作标,再做扭曲中的挤压,重复两次,画一正圆将它复制为一个图层
.将背景色改为白色.通过曲线调整它的颜色.再做渲染中的镜头光晕,选择105毫米
.数值为100,将位置放在三分之一的位置上.再做一次放在最下边.最后加上外发光
就可以了,但是要注意外发光的模式为正常.否则会看不出它的效果.12.水中倒影
新建图层,将前景色改为海水的淡蓝色,做渲染中的云彩,再做扭曲中的玻璃,用自
由变换的透视做出海面由远到近的效果,移到中间,再新建一层,将前景色改为淡天
蓝色做渲染云彩做天空. 将当前层放到最下边,输入文字后,栅格化,复制做变换中
的垂直翻转.将副本的透明度小一点,做扭曲中的波纹.两个文字层加上连接符后自
由变化中的透视,做出海面延伸的效果.13统计饼图新建图层.画一正圆,用第六种
渐变从中心向外拉做第三种角度渐变.选择路径工具中的直线工具第三种一个单纯
的填充,将大小改为2就可以了,进行切分,前景色为白色.切完后用魔棒工具选择其
中一块白色选择相似然后删除.用多边形套索工具取下一块来,自由变换将它压扁.
载入选区轻移做出立体效果.描白色的边.最后写上相关的数据就可以了.14.沙漏
新建图层,画一个长方形,做黑白黑的渐变,做自由变换中的透视,画一个椭圆填充
黑色再复制一个.用放大镜工具放最大,用矩形把它们断开的接上去.再做渐变,新
建图层,画一个小一点的矩形填充黄色,进行添加杂色选择高斯分布\单色.数值大
一点.用自由变换进行透视,再用选区工具把它们放在合适的位置上.图层的透明度
小一点.再用涂抹工具进行涂抹,做出沙往下流的效果.15.胶囊背景色填充为黑色.
新建图层,画一个小的正圆,做白到红的径向渐变,做轻移.用圆形选区从中间画分.
用移动工具分开.复制一个,进行水平翻转放到合适的位置上.将它的透明度变小一
点.全并图层,选其中一一个进行自由变化进行旋转.再新建一层用画笔点出小点来
.16.宇宙空间暗蓝色的背景,进行填充.新建一层,默认的前背景色,画一个椭圆做
渲染中的云彩,做扭曲中的旋转扭曲,数值调最大,羽化反选,删除,可以多删几次.
自由变换进行压扁,旋转.再新建一层画一个正圆做白到黑的径向渐变,做扭曲中的
玻璃将它的数值加大一点.用修补工具进行修补.画一个正圆放在中间羽化反选,将
它剪切成一个单独的图层.放在最下边.新建图层.画一个正圆填充为白色,移动选
区做羽化删除.用画笔点出一些白色的点来.新建一层,也可以用路径中的钢笔工具
两点画一条线,选择合适的画笔变换颜色,进行画笔描边路径.自由变换透视.就可
以了.快捷键:全选:Ctrl+A;   取消当前命令:Esc   反选:Shift+Ctrl+I
  工具选项板:Enter   取消选择区:Ctrl+D   选项板调整:Shift+Tab
  选择区域移动:方向键   打开文件:Ctrl+O   复制选择区域:Alt+
方向键   关闭文件:Ctrl+W   恢复到上一步:Ctrl+Z   文件存盘:
Ctrl+S   剪切选择区域:Ctrl+X   退出系统:Ctrl+Q   复制选择区
域:Ctrl+C   获取帮助:F1   粘贴选择区域:Ctrl+V   剪切选择区:
F2   填充为前景色:Alt+Delete   拷贝选择区:F3   填充为背景色:
Ctrl+Delete   粘贴选择区:F4   调整色阶工具:Ctrl+L   显示或关
闭画笔选项板:F5   调整色彩平衡:Ctrl+B   显示或关闭颜色选项板:F6
  调节色调/饱和度:Ctrl+U   显示或关闭图层选项板:F7   自由变形
:Ctrl+T   显示或关闭信息选项板:F8   增大笔头大小:“中括号”  
 显示或关闭动作选项板:F9   减小笔头大小:“中括号”   激活上一图
层:Alt+“中括号”   选择最大笔头:Shift+“中括号”   激活下一图
层:Alt+“中括号”   选择最小笔头:Shift+“中括号”   合并可见图
层:Shift+Ctrl+E   重复使用滤镜:Ctrl+F   放大视窗:Ctrl+“+”
  缩小视窗:Ctrl+“-”