Ver Fonte

《C程序设计-第五版》源码

蘭雅sRGB há 2 semanas atrás
pai
commit
e5b1b134c2
100 ficheiros alterados com 1697 adições e 11 exclusões
  1. 0 11
      .clang-format
  2. 7 0
      C5/P1/c1-1.c
  3. 13 0
      C5/P1/c1-2.c
  4. 18 0
      C5/P1/c1-3.c
  5. 26 0
      C5/P10/c10-1.c
  6. 29 0
      C5/P10/c10-2.c
  7. 33 0
      C5/P10/c10-3-1.c
  8. 17 0
      C5/P10/c10-3-2.c
  9. 31 0
      C5/P10/c10-4-1.c
  10. 26 0
      C5/P10/c10-4-2.c
  11. 47 0
      C5/P10/c10-4-3.c
  12. 13 0
      C5/P10/c10-5.c
  13. 25 0
      C5/P10/c10-6.c
  14. 15 0
      C5/P2/c2-18.c
  15. 15 0
      C5/P2/c2-19.c
  16. 9 0
      C5/P3/c3-1.c
  17. 15 0
      C5/P3/c3-10-2.c
  18. 16 0
      C5/P3/c3-10.c
  19. 10 0
      C5/P3/c3-2.c
  20. 10 0
      C5/P3/c3-3.c
  21. 15 0
      C5/P3/c3-4.c
  22. 14 0
      C5/P3/c3-5.c
  23. 8 0
      C5/P3/c3-6-2.c
  24. 9 0
      C5/P3/c3-6.c
  25. 10 0
      C5/P3/c3-7.c
  26. 14 0
      C5/P3/c3-8-2.c
  27. 15 0
      C5/P3/c3-8.c
  28. 12 0
      C5/P3/c3-9-2.c
  29. 18 0
      C5/P3/c3-9.c
  30. 9 0
      C5/P4/C4-4.c
  31. 18 0
      C5/P4/c4-1.c
  32. 31 0
      C5/P4/c4-10.c
  33. 18 0
      C5/P4/c4-2.c
  34. 30 0
      C5/P4/c4-3.c
  35. 16 0
      C5/P4/c4-5-1.c
  36. 15 0
      C5/P4/c4-5-2.c
  37. 16 0
      C5/P4/c4-6.c
  38. 29 0
      C5/P4/c4-7.c
  39. 26 0
      C5/P4/c4-8-1.c
  40. 21 0
      C5/P4/c4-8-2.c
  41. 17 0
      C5/P4/c4-8-3.c
  42. 32 0
      C5/P4/c4-9.c
  43. 15 0
      C5/P5/C5-11-1.c
  44. 14 0
      C5/P5/C5-11-2.c
  45. 15 0
      C5/P5/C5-11.c
  46. 17 0
      C5/P5/C5-4.c
  47. 15 0
      C5/P5/c5-1.c
  48. 17 0
      C5/P5/c5-10.c
  49. 12 0
      C5/P5/c5-2.c
  50. 14 0
      C5/P5/c5-3(a).c
  51. 14 0
      C5/P5/c5-3(b).c
  52. 14 0
      C5/P5/c5-3-1.c
  53. 14 0
      C5/P5/c5-3-2.c
  54. 11 0
      C5/P5/c5-5.c
  55. 12 0
      C5/P5/c5-6-1.c
  56. 13 0
      C5/P5/c5-6-2.c
  57. 13 0
      C5/P5/c5-6-3.c
  58. 17 0
      C5/P5/c5-7-1.c
  59. 18 0
      C5/P5/c5-7-2.c
  60. 14 0
      C5/P5/c5-8-1.c
  61. 14 0
      C5/P5/c5-8-2.c
  62. 11 0
      C5/P5/c5-9-1.c
  63. 14 0
      C5/P5/c5-9-2.c
  64. 11 0
      C5/P6/c6-1.c
  65. 15 0
      C5/P6/c6-2.c
  66. 19 0
      C5/P6/c6-3.c
  67. 24 0
      C5/P6/c6-4.c
  68. 15 0
      C5/P6/c6-5.c
  69. 9 0
      C5/P6/c6-6.c
  70. 11 0
      C5/P6/c6-7.c
  71. 16 0
      C5/P6/c6-8.c
  72. 18 0
      C5/P6/c6-9.c
  73. 18 0
      C5/P7/c7-1.c
  74. 22 0
      C5/P7/c7-10.c
  75. 18 0
      C5/P7/c7-11.c
  76. 25 0
      C5/P7/c7-12.c
  77. 19 0
      C5/P7/c7-13.c
  78. 26 0
      C5/P7/c7-14.c
  79. 16 0
      C5/P7/c7-15.c
  80. 16 0
      C5/P7/c7-16.c
  81. 15 0
      C5/P7/c7-17.c
  82. 18 0
      C5/P7/c7-18.c
  83. 14 0
      C5/P7/c7-19-1.c
  84. 8 0
      C5/P7/c7-19-2.c
  85. 17 0
      C5/P7/c7-2.c
  86. 14 0
      C5/P7/c7-20-1.c
  87. 5 0
      C5/P7/c7-20-2.c
  88. 10 0
      C5/P7/c7-20-3.c
  89. 5 0
      C5/P7/c7-20-4.c
  90. 15 0
      C5/P7/c7-3.c
  91. 16 0
      C5/P7/c7-4-1.c
  92. 16 0
      C5/P7/c7-4-2.c
  93. 26 0
      C5/P7/c7-5-1.c
  94. 24 0
      C5/P7/c7-5-2.c
  95. 21 0
      C5/P7/c7-5-3.c
  96. 19 0
      C5/P7/c7-5-4.c
  97. 16 0
      C5/P7/c7-6.c
  98. 23 0
      C5/P7/c7-7.c
  99. 20 0
      C5/P7/c7-8-2.c
  100. 31 0
      C5/P7/c7-8.c

+ 0 - 11
.clang-format

@@ -1,16 +1,5 @@
 BasedOnStyle: LLVM
 IndentWidth: 4
 UseTab: Never
-AlignConsecutiveDeclarations: true
-AlignConsecutiveAssignments: true
 BreakBeforeBraces: Stroustrup
 ColumnLimit: 120
-AllowShortBlocksOnASingleLine: true
-AllowShortCaseLabelsOnASingleLine: true
-AllowShortFunctionsOnASingleLine: Inline
-AllowShortIfStatementsOnASingleLine: true
-AllowShortLoopsOnASingleLine: true
-SpaceBeforeParens: ControlStatements
-SpacesInParentheses: false
-SpacesInAngles: false
-SpacesBeforeTrailingComments: 1

+ 7 - 0
C5/P1/c1-1.c

@@ -0,0 +1,7 @@
+#include <stdio.h>                           // 这是编译预处理指令
+int main( )                                  // 定义主函数 
+{                                            // 函数开始的标志 
+ printf ("This is a C program.\n");          // 输出所指定的一行信息 
+ return 0;                                   // 函数执行完毕时返回函数值0
+}   
+

+ 13 - 0
C5/P1/c1-2.c

@@ -0,0 +1,13 @@
+#include <stdio.h>                      // 这是编译预处理命令 
+int main( )                             // 定义主函数
+{                                       // 函数开始 
+  int a,b,sum;                          // 本行是程序的声明部分,定义a、b、sum为整型变量
+  a = 123;                              // 对变量a赋值    
+  b = 456;                              // 对变量b赋值 
+  sum = a + b;                          // 进行a+b 的运算,并把结果存放在变量sum中
+  printf("sum is %d\n",sum);            // 输出结果 
+  return 0;                             // 使函数返回值为0
+}                                       // 函数结束 
+
+  
+

+ 18 - 0
C5/P1/c1-3.c

@@ -0,0 +1,18 @@
+#include <stdio.h>
+int main( )                          // 定义主函数
+{                                    // 主函数体开始
+ int max(int x,int y);               // 对被调用函数max的声明 
+ int a,b,c;                          // 定义变量a,b,c
+ scanf("%d,%d",&a,&b);               // 输入变量a和b的值
+ c = max(a,b);                       // 调用max函数,将得到的值赋给c 
+ printf("max=%d\n",c);               // 输出c的值
+ return 0;                           // 返回函数值为0
+}
+
+int max(int x,int y)                 //定义max函数,函数值为整型, 形式参数x和y为整型 
+{
+ int z;                              // max函数中的声明部分,定义本函数中用到的变量z为整型 
+ if (x > y) z = x;
+ else z = y;
+ return(z);                          //将z的值返回,通过max带回到调用函数的位置
+}

+ 26 - 0
C5/P10/c10-1.c

@@ -0,0 +1,26 @@
+#include <stdlib.h>
+#include <stdio.h>
+int main()
+  {FILE *fp;
+   char ch,filename[10];
+   printf("请输入所用的文件名:");
+   scanf("%s",filename);
+   if((fp=fopen(filename,"w"))==NULL)       // 打开输出文件并使fp指向此文件 
+	  {
+       printf("无法打开此文件\n");          // 如果打开时出错,就输出"打不开"的信息  
+       exit(0);                             // 终止程序*/
+       }
+   ch=getchar( );                           // 接收在执行scanf语句时最后输入的回车符  
+   printf("请输入一个准备存储到磁盘的字符串(以#结束):");
+   ch=getchar( );                           // 接收从键盘输入的第一个字符 
+   while(ch!='#')                           // 当输入'#'时结束循环  
+	{
+	  fputc(ch,fp);                         // 向磁盘文件输出一个字符  
+      putchar(ch);                          // 将输出的字符显示在屏幕上  
+	  ch=getchar();                         // 再接收从键盘输入的一个字符  
+
+	 }
+   fclose(fp);                              // 关闭文件  
+   putchar(10);                             // 向屏幕输出一个换行符,换行符的ASCII代码为10 
+   return 0;
+  }

+ 29 - 0
C5/P10/c10-2.c

@@ -0,0 +1,29 @@
+#include <stdio.h>
+#include <stdlib.h>
+int main( )
+  {FILE *in,*out;
+   char  ch,infile[10],outfile[10];     // 定义两个字符数组,分别存放两个文件名  
+   printf("输入读入文件的名字:");
+   scanf("%s",infile);                  // 输入一个输入文件的名字  
+   printf("输入输出文件的名字:");
+   scanf("%s",outfile);                 // 输入一个输出文件的名字  
+   if((in=fopen(infile,"r"))==NULL)     // 打开输入文件  
+      {printf("无法打开此文件\n");
+       exit(0);
+      }
+   if((out=fopen(outfile,"w"))==NULL)   // 打开输出文件  
+     {printf("无法打开此文件\n");
+      exit(0);
+     }
+   ch=fgetc(in);                       //从输入文件读入一个字符,放在变量ch中
+   while(!feof(in))                    // 如果未遇到输入文件的结束标志  
+     {fputc(ch,out);                   // 将ch写到输出文件中  
+      putchar(ch);                     // 将ch显示在屏幕上  
+	  ch=fgetc(in);                    // 从输入文件读入一个字符,放在变量ch中 
+     }
+   putchar(10);                        // 显示完全部字符后换行  
+   fclose(in);                         // 关闭输入文件  
+   fclose(out);                        // 关闭输出文件  
+   return 0;
+  }
+

+ 33 - 0
C5/P10/c10-3-1.c

@@ -0,0 +1,33 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h> 
+int main()
+{  FILE *fp;
+   char  str[3][10],temp[10];   // str是用来存放字符串的二维数组,temp是临时数组  
+   int i,j,k,n=3;
+   printf("Enter strings:\n");    // 提示输入字符串 */
+   for(i=0;i<n;i++)         
+     gets(str[i]);              // 输入字符串
+   
+   for(i=0;i<n-1;i++)           // 用选择法对字符串排序  
+     {k=i;
+      for(j=i+1;j<n;j++)
+	    if(strcmp(str[k],str[j])>0) k=j;
+      if(k!=i)
+        {strcpy(temp,str[i]);  
+	     strcpy(str[i],str[k]);
+	     strcpy(str[k],temp);
+        }
+	 }
+   if((fp=fopen("D:\\CC\\string.dat","w"))==NULL)     // 打开磁盘文件  
+        {
+	     printf("can't open file!\n");
+	     exit(0);
+        }
+   printf("\nThe new sequence:\n");
+   for(i=0;i<n;i++)
+	  {fputs(str[i],fp);fputs("\n",fp);       // 撤号 
+	   printf("%s\n",str[i]);                 // 在屏幕上显示字符串  
+     }
+   return 0;
+}

+ 17 - 0
C5/P10/c10-3-2.c

@@ -0,0 +1,17 @@
+#include <stdio.h>
+#include <stdlib.h>
+int main()
+{ FILE *fp;
+   char  str[3][10];
+   int i=0;
+   if((fp=fopen("D:\\CC\\string.dat","r"))==NULL)      // 注意文件名必须与前相同 
+     {printf("can't open file!\n");
+	  exit(0);
+     }
+   while(fgets(str[i],10,fp)!=NULL)
+	  {printf("%s",str[i]);
+       i++;
+      }
+   fclose(fp);
+   return 0;
+}

+ 31 - 0
C5/P10/c10-4-1.c

@@ -0,0 +1,31 @@
+#include <stdio.h>
+#define SIZE 10
+struct student_type
+ {char name[10];
+  int num;
+  int age;
+  char addr[15];
+ }stud[SIZE];                // 定义全局结构体数组stud,包含10个学生数据  
+
+void save( )                 // 定义函数save,向文件输出SIZE个学生的数据  
+  {FILE *fp;
+   int i;
+   if((fp=fopen ("stu.dat","wb"))==NULL)    // 打开输出文件atu_list  
+      {printf("cannot open file\n");
+       return;
+      }
+   for(i=0;i<SIZE;i++)
+      if(fwrite (&stud[i],sizeof (struct student_type),1,fp)!=1)
+         printf ("file write error\n");
+   fclose(fp);
+  }
+
+int main()
+  {int i;
+   printf("Please enter data of students:\n");
+   for(i=0;i<SIZE;i++)           // 输入SIZE个学生的数据,存放在数组stud中  
+     scanf("%s%d%d%s",stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr);
+   save( );
+   return 0;
+  }
+

+ 26 - 0
C5/P10/c10-4-2.c

@@ -0,0 +1,26 @@
+#include <stdio.h>
+#include <stdlib.h>
+#define SIZE 10
+struct student_type
+  {char name[10];
+   int num;
+   int age;
+   char addr[15];
+  }stud[SIZE]; 
+
+int main( )
+  {int i;
+   FILE *fp;
+   if((fp=fopen ("stu.dat","rb"))==NULL)        // 打开输入文件atu.dat  
+      {printf("cannot open file\n");
+       exit(0) ;
+      }
+   for(i=0;i<SIZE;i++)
+     {fread (&stud[i],sizeof(struct student_type),1,fp);       // 从fp指向的文件读入一组数据  
+      printf ("%-10s %4d %4d  %-15s\n",stud[i].name,stud[i].num,stud[i]. age,stud[i].addr);
+            // 在屏幕上输出这组数据 
+     }
+   fclose (fp);                                  // 关闭文件"stu.dat" 
+   return 0;
+  }
+

+ 47 - 0
C5/P10/c10-4-3.c

@@ -0,0 +1,47 @@
+#include <stdio.h>
+#define SIZE 10
+struct student_type
+ {char name[10];
+  int num;
+  int age;
+  char addr[15];
+ }stud[SIZE];                // 定义全局结构体数组stud,包含10个学生数据  
+
+void load( )
+  {FILE *fp;
+   int i;
+   if((fp=fopen("stu_list","rb"))==NULL)     // 打开输入文件stu_list  
+     {printf("cannot open infile\n");
+      return;
+     }
+   for(i=0;i<SIZE;i++)
+     if(fread(&stud[i],sizeof(struct student_type),1,fp)!=1)  // 从stu_ list文件中读数据  
+       {if(feof(fp)) 
+	     {fclose(fp); 
+          return;
+         }
+        printf("file read error\n");
+       }
+   fclose (fp);
+  }   
+       
+void save( )                // 定义函数save,向文件输出SIZE个学生的数据  
+  {FILE *fp;
+   int i;
+   if((fp=fopen ("stu.dat","wb"))==NULL)    // 打开输出文件atu_list  
+      {printf("cannot open file\n");
+       return;
+      }
+   for(i=0;i<SIZE;i++)
+      if(fwrite (&stud[i],sizeof (struct student_type),1,fp)!=1)
+         printf ("file write error\n");
+   fclose(fp);
+  }
+
+int main()
+  {
+   load();
+   save( );
+   return 0;
+  }
+

+ 13 - 0
C5/P10/c10-5.c

@@ -0,0 +1,13 @@
+#include<stdio.h>
+int main()
+  {FILE *fp1,*fp2;
+   fp1=fopen("file1.dat","r");              // 打开输入文件  
+   fp2=fopen("file2.dat","w");              // 打开输出文件  
+   while(!feof(fp1)) putchar(getc(fp1));    // 逐个读入字符并输出到屏幕  
+   putchar(10);                             // 输出一个换行 
+   rewind(fp1);                             // 使文件位置指示器返回文件头  
+   while(!feof(fp1)) putc(getc(fp1),fp2);   // 从文件头重新逐个读字符,输出到file2文件  
+   fclose(fp1);fclose(fp2);
+   return 0;
+  }
+

+ 25 - 0
C5/P10/c10-6.c

@@ -0,0 +1,25 @@
+#include <stdlib.h>
+#include<stdio.h>
+struct student_type       // 学生数据类型  
+ { char name[10];
+   int num;
+   int age;
+   char addr[15];
+  }stud[10]; 
+
+int main()
+  { int i;
+    FILE  *fp;         
+	if((fp=fopen("stu.dat","rb"))==NULL)   // 以只读方式打开二进制文件  
+      {printf("can not open file\n");
+       exit(0);
+      }
+    for(i=0;i<10;i+=2)
+     {fseek(fp,i*sizeof(struct student_type),0);        // 移动位置指针 
+      fread(&stud[i], sizeof(struct student_type),1,fp);  // 读一个数据块到结构体变量 
+      printf("%-10s %4d %4d %-15s\n",stud[i].name,stud[i].num,stud[i].age,stud[i].addr); // 在屏幕输出 
+     }
+    fclose(fp);
+	return 0;
+  }
+   

+ 15 - 0
C5/P2/c2-18.c

@@ -0,0 +1,15 @@
+#include <stdio.h>
+int main( )
+{
+ int i,t;
+ t=1;
+ i=2;
+ while(i<=5)
+ {
+  t=t*i;
+  i=i+1;
+ }
+ printf("%d\n",t);
+ return 0;
+}
+

+ 15 - 0
C5/P2/c2-19.c

@@ -0,0 +1,15 @@
+#include <stdio.h>
+int main( )
+ {
+  int sign=1;
+  double deno=2.0,sum=1.0,term;    // ¶¨Òådeno,sum,termΪ˫¾«¶È±äÁ¿ 
+  while (deno<=100)
+  {
+   sign=-sign;
+   term=sign/deno;
+   sum=sum+term;
+   deno=deno+1;
+  }
+  printf("%f\n",sum);
+  return 0;
+}

+ 9 - 0
C5/P3/c3-1.c

@@ -0,0 +1,9 @@
+#include <stdio.h>
+int main ( )
+ {
+  float f,c;                      // 定义f和c为单精度浮点型变量 
+  f=64.;                          // 指定f的值 
+  c=(5.0/9)*(f-32);               // 利用公式计算c的值  
+  printf("f=%f\nc=%f\n",f,c);     // 输出c的值 
+  return 0;
+ }

+ 15 - 0
C5/P3/c3-10-2.c

@@ -0,0 +1,15 @@
+#include <stdio.h>
+int main ( )
+{
+  char c1,c2;
+  c1=getchar();                                        // 从键盘读入一个大写字符,赋给字符变量c1  
+  c2=c1+32;	                                           // 得到对应的小写字符的ASCII代码,放在字符变量c2中  	       
+  printf("大写字母:%c\n小写字母:%c\n",c1,c2);        // 输出c1,c2的值---大小写字符  
+  return 0;
+ }
+
+
+
+
+
+

+ 16 - 0
C5/P3/c3-10.c

@@ -0,0 +1,16 @@
+#include <stdio.h>
+int main ( )
+{
+  char c1,c2;
+  c1=getchar();                   // 从键盘读入一个字符,赋给字符变量c1  
+  c2=c1+32;	                      // 得到字符'a'的ASCII代码,放在字符变量c2中  	       
+  putchar(c2);                    // 输出c2的值,是一个字符  
+  putchar('\n'); 
+  return 0;
+ }
+
+
+
+
+
+

+ 10 - 0
C5/P3/c3-2.c

@@ -0,0 +1,10 @@
+#include <stdio.h>
+int main( )
+ {
+   float p0=1000,r1=0.0036,r2=0.0225,r3=0.0198,p1,p2,p3;                       
+   p1 = p0 * (1 +  r1);                           
+   p2 = p0 * (1 +  r2);
+   p3 = p0 * (1 +  r3/2) * (1 + r3/2);  
+   printf("p1=%f\np2=%f\np3=%f\n",p1,p2,p3); 
+   return 0;
+ }

+ 10 - 0
C5/P3/c3-3.c

@@ -0,0 +1,10 @@
+#include <stdio.h>
+int main ( )
+{
+  char c1,c2;
+  c1='A';                         // 将字符'A'的ASCII代码放到c1变量中
+  c2=c1+32;	                      // 得到字符'a'的ASCII代码,放在c2变量中 
+  printf("%c\n",c2);              // 输出c2的值,是一个字符
+  printf("%d\n",c2);              // 输出c2的值,是字符'a'的ASCII代码
+  return 0;
+}

+ 15 - 0
C5/P3/c3-4.c

@@ -0,0 +1,15 @@
+#include <stdio.h>
+#include <math.h>
+int main ( )
+ {
+   double a,b,c,s,area;                       // 定义各变量,均为double型 
+   a=3.67;                                    // 对边长a赋值 
+   b=5.43;                                    // 对边长b赋值 
+   c=6.21;                                    // 对边长c赋值  
+   s=(a+b+c)/2;	                              // 计算s 
+   area=sqrt(s*(s-a)*(s-b)*(s-c));            // 计算area 
+   printf("a=%f\tb=%f\t%f\n",a,b,c);          // 输出三边a,b,c的值 
+   printf("area=%f\n",area);                  // 输出面积area的值
+   return 0;
+ }  
+

+ 14 - 0
C5/P3/c3-5.c

@@ -0,0 +1,14 @@
+#include <stdio.h>
+#include  <math.h>                                // 程序中要调用求平方根函数sqrt  
+int main ( ) 
+ {double a,b,c,disc,x1,x2,p,q;                    // disc是判别式sqrt(b*b-4ac)  
+  scanf("%lf%lf%lf",&a,&b,&c);                    // 输入实型变量的值要用格式声明"%f"  
+  disc=b*b-4*a*c;
+  p=-b/(2.0*a);
+  q=sqrt(disc)/(2.0*a);
+  x1=p+q;x2=p-q;                                  // 求出方程的两个根  
+  printf("x1=%7.2f\nx2=%7.2f\n",x1,x2);           // 输出方程的两个根   
+  return 0;
+}
+
+

+ 8 - 0
C5/P3/c3-6-2.c

@@ -0,0 +1,8 @@
+#include <stdio.h>
+int main()
+{double a=1.0;
+ printf("%20.15f\n",a/3);
+ return 0;
+}
+
+

+ 9 - 0
C5/P3/c3-6.c

@@ -0,0 +1,9 @@
+#include <stdio.h>
+int main()
+{double a=1.0;
+ printf("%f\n",a/3);
+ return 0;
+}
+
+
+

+ 10 - 0
C5/P3/c3-7.c

@@ -0,0 +1,10 @@
+#include <stdio.h>
+int main()
+{float a;
+ a=10000/3.0;
+ printf("%f\n",a);
+ return 0;
+}
+
+
+

+ 14 - 0
C5/P3/c3-8-2.c

@@ -0,0 +1,14 @@
+#include <stdio.h>
+int main ( )
+{
+  int a=66,b=79,c=89;                    // 定义3个字符变量,并初始化   
+  putchar(a);                            // 向显示器输出字符B  
+  putchar(b);                            // 向显示器输出字符O  
+  putchar(c);                            // 向显示器输出字符Y  
+  putchar ('\n');                        // 向显示器输出一个换行符  
+  return 0;
+ }
+
+
+
+

+ 15 - 0
C5/P3/c3-8.c

@@ -0,0 +1,15 @@
+#include <stdio.h>
+int main ( )
+{
+  char a,b,c;                            // 定义3个字符变量  
+  a='B';b='O';c='Y';                     // 给3个字符变量赋值     
+  putchar(a);                            // 向显示器输出字符B  
+  putchar(b);                            // 向显示器输出字符O  
+  putchar(c);                            // 向显示器输出字符Y  
+  putchar ('\n');                        // 向显示器输出一个换行符  
+  return 0;
+ }
+
+
+
+

+ 12 - 0
C5/P3/c3-9-2.c

@@ -0,0 +1,12 @@
+#include <stdio.h>
+int main ( )                
+{ putchar(getchar());           // 将接收到的字符输出 
+  putchar(getchar());           // 将接收到的字符输出 
+  putchar(getchar());           // 将接收到的字符输出 
+  putchar('\n'); 
+  return 0;
+}
+
+
+
+

+ 18 - 0
C5/P3/c3-9.c

@@ -0,0 +1,18 @@
+
+#include <stdio.h>
+int  main ( )                
+{ char a,b,c;                   // 定义字符变量a,b,c  
+  a=getchar();                  // 从键盘输入一个字符,送给字符变量a  
+  b=getchar();                  // 从键盘输入一个字符,送给字符变量b  
+  c=getchar();                  // 从键盘输入一个字符,送给字符变量c  
+  putchar(a);                   // 将变量a的值输出  
+  putchar(b);                   // 将变量a的值输出   
+  putchar(c);                   // 将变量a的值输出  
+  putchar('\n');                // 换行  
+  return 0;
+ }
+
+
+
+
+

+ 9 - 0
C5/P4/C4-4.c

@@ -0,0 +1,9 @@
+#include <stdio.h>
+int main()
+{
+  char ch;
+  scanf("%c",&ch);
+  ch=(ch>='A' && ch<='Z') ? (ch+32) : ch;
+  printf("%c\n",ch);
+  return 0;
+}

+ 18 - 0
C5/P4/c4-1.c

@@ -0,0 +1,18 @@
+#include <stdio.h>
+#include  <math.h>                         // 程序中要调用求平方根函数sqrt  
+int main ( ) 
+ {double a,b,c,disc,x1,x2,p,q;             // disc是判别式sqrt(b*b-4ac)  
+  scanf("%lf%lf%lf",&a,&b,&c);             // 输入双精度浮点型变量的值要用格式声明"%lf"  
+  disc=b*b-4*a*c;
+  if (disc<0)
+	printf("This equation hav't real roots\n");
+  else
+    { p=-b/(2.0*a);
+      q=sqrt(disc)/(2.0*a);
+      x1=p+q;x2=p-q;                        // 求出方程的两个根  
+      printf("real roots:\nx1=%10.6f\nx2=%10.6f\n",x1,x2);        // 输出方程的两个根
+    }
+  return 0;
+}
+
+

+ 31 - 0
C5/P4/c4-10.c

@@ -0,0 +1,31 @@
+#include <stdio.h>
+int main()
+{ 
+   int c,s;
+   float p,w,d,f;
+   printf("please enter price,weight,discount:");      // 提示输入的数据
+   scanf("%f,%f,%d",&p,&w,&s);                         // 输入单价、重量、距离 
+   if(s>=3000)  
+	   c=12;                                           // 3000km以上为同一折扣
+   else        
+	   c=s/250;                                        // 3000km以下各段折扣不同,c的值不相同
+   switch(c)
+   {
+     case 0:   d=0; break;                             // c=0,代表250km以下,折扣d=0
+     case 1:   d=2; break;                             // c=1,代表250到500km以下,折扣d=2%
+     case 2: 
+     case 3:   d=5; break;                             // c=2和3,代表500到1000km以下,折扣d=5% 
+     case 4: 
+     case 5:      
+     case 6:      
+     case 7:   d=8; break;                             // c=4-7,代表1000到2000km以下,折扣d=8%    
+     case 8:  
+     case 9:    
+     case 10:   
+     case 11:  d=10; break;                            // c=8-11,代表2000KM到3000km以下,折扣d=10% 
+     case 12:  d=15; break;                            // c12,代表3000km以上,折扣d=15% 
+   }
+   f = p * w * s * (1 - d / 100);                      // 计算总运费
+   printf("freight=%10.2f\n",f);                       // 输出总运费,取两位小数
+   return 0;
+}

+ 18 - 0
C5/P4/c4-2.c

@@ -0,0 +1,18 @@
+#include <stdio.h>
+int main()
+{
+   float a,b,t;
+   scanf("%f,%f",&a,&b);
+   if(a>b)
+    {
+      t=a;
+      a=b;
+      b=t;
+     }
+   printf("%5.2f,%5.2f\n",a,b);
+   return 0;
+}
+
+
+
+

+ 30 - 0
C5/P4/c4-3.c

@@ -0,0 +1,30 @@
+#include <stdio.h>
+int main()
+{
+   float a,b,c,t;
+   scanf("%f,%f,%f",&a,&b,&c);
+   if(a>b)
+   {
+     t=a;
+     a=b;
+     b=t;
+   }                            // 实现a和b的互换 
+   if(a>c)
+   {
+     t=a;
+     a=c;
+     c=t;
+   }                           // 实现a和c的互换 
+   if(b>c)
+   {
+     t=b;
+     b=c;
+     c=t;
+   }                           // 实现b和c的互换 
+   printf("%5.2f,%5.2f,%5.2f\n",a,b,c);
+   return 0;
+}
+
+
+
+

+ 16 - 0
C5/P4/c4-5-1.c

@@ -0,0 +1,16 @@
+#include <stdio.h>
+int main()
+{
+  int x,y;
+  scanf("%d",&x);
+  if(x<0)
+    y=-1;
+  else 
+    if(x==0) y=0;
+    else y=1;
+  printf("x=%d,y=%d\n",x,y);
+  return 0;
+}
+
+
+

+ 15 - 0
C5/P4/c4-5-2.c

@@ -0,0 +1,15 @@
+#include <stdio.h>
+int main()
+{
+  int x,y;
+  scanf("%d",&x);
+  if (x>=0)
+    if (x>0) y=1;
+    else     y=0;
+  else       y=-1;
+  printf("x=%d,y=%d\n",x,y);
+  return 0;
+}
+
+
+

+ 16 - 0
C5/P4/c4-6.c

@@ -0,0 +1,16 @@
+#include <stdio.h>
+int main()
+{
+  char grade;
+  scanf("%c",&grade);
+  printf("Your score:");
+  switch(grade)
+  { 
+	 case 'A': printf("85ĄŤ100\n");break;
+     case 'B': printf("70ĄŤ84\n");break;
+     case 'C': printf("60ĄŤ69\n");break;
+     case 'D': printf("<60\n");break;   
+     default:  printf("data error!\n");	 
+  }
+  return 0;
+ }

+ 29 - 0
C5/P4/c4-7.c

@@ -0,0 +1,29 @@
+#include <stdio.h>
+int main()
+{
+  void action1(int,int),action2(int,int);
+  char ch;
+  int a=15,b=23;
+  ch=getchar();
+  switch(ch)
+  { 
+	 case 'a':
+     case 'A': action1(a,b);break;
+
+     case 'b':
+     case 'B': action2(a,b);break;    
+
+	 default:  putchar('\a');
+    }
+  return 0;
+ }
+
+void action1(int x,int y)
+{
+  printf("x+y=%d\n",x+y);
+}
+
+void action2(int x,int y)
+{
+  printf("x*y=%d\n",x*y);
+}

+ 26 - 0
C5/P4/c4-8-1.c

@@ -0,0 +1,26 @@
+#include <stdio.h>
+int main()
+{
+  int year,leap;
+  scanf("%d",&year);
+  if (year%4==0)
+  {
+    if(year%100==0)
+	{
+      if(year%400==0)
+         leap=1;
+      else
+         leap=0;
+	}
+    else
+      leap=1;
+  }
+  else
+    leap=0;
+  if (leap)
+     printf("%d is ",year);
+  else
+     printf("%d is not ",year);
+  printf("a leap year.\n");
+  return 0;
+}

+ 21 - 0
C5/P4/c4-8-2.c

@@ -0,0 +1,21 @@
+#include <stdio.h>
+int main()
+{
+  int year,leap;
+  scanf("%d",&year);
+
+  if(year%4!=0)
+    leap=0;
+  else if (year%100!=0)
+    leap=1;
+  else if(year%400!=0)
+    leap=0;
+  else
+	  leap=1;
+  if (leap)
+     printf("%d is ",year);
+  else
+     printf("%d is not ",year);
+  printf("a leap year.\n");
+  return 0;
+}

+ 17 - 0
C5/P4/c4-8-3.c

@@ -0,0 +1,17 @@
+#include <stdio.h>
+int main()
+{
+  int year,leap;
+  printf("enter year:");
+  scanf("%d",&year);
+  if((year%4==0 && year%100!=0) || (year%400==0))
+     leap=1;
+  else
+     leap=0;
+  if (leap)
+     printf("%d is ",year);
+  else
+     printf("%d is not ",year);
+  printf("a leap year.\n");
+  return 0;
+}

+ 32 - 0
C5/P4/c4-9.c

@@ -0,0 +1,32 @@
+#include <stdio.h>
+#include <math.h>
+int main()
+{
+  double a,b,c,disc,x1,x2,realpart,imagpart;
+  scanf("%lf,%lf,%lf",&a,&b,&c);
+  printf("The equation ");
+  if(fabs(a)<=1e-6)
+    printf("is not a quadratic\n");
+  else
+  {
+    disc=b*b-4*a*c;
+    if(fabs(disc)<=1e-6)
+      printf("has two equal roots:%8.4f\n",-b/(2*a));
+    else
+      if(disc>1e-6)
+	  {
+       x1=(-b+sqrt(disc))/(2*a);
+       x2=(-b-sqrt(disc))/(2*a);
+       printf("has distinct real roots:%8.4f and %8.4f\n",x1,x2);
+	  }
+      else
+	  {
+       realpart=-b/(2*a);
+       imagpart=sqrt(-disc)/(2*a);
+       printf(" has complex roots:\n");
+       printf("%8.4f+%8.4fi\n",realpart,imagpart);
+       printf("%8.4f-%8.4fi\n",realpart,imagpart);
+	  }
+  }
+  return 0;
+}  

+ 15 - 0
C5/P5/C5-11-1.c

@@ -0,0 +1,15 @@
+#include <stdio.h>
+int main()
+ {char c;
+  c=getchar();                             // 输入一个字符给字符变量c
+  while(c!='\n')                           // 检查c的值是否换行符'\n'  
+    {if((c>='a' && c<='z') || (c>='A' && c<='Z'))     // c如果是字母
+       { if(c>='W' && c<='Z' || c>='w' && c<='z') c=c-22;   // 如果是26个字母中最后4个字母之一
+         else c=c+4;                      // 如果是前面22个字母之一,就使c加4,即变成其后第4个字母
+	   }
+     printf("%c",c);                      // 输出己改变的字符
+     c=getchar();                         // 再输入下一个字符给字符变量c
+    }
+  printf("\n");
+  return 0;
+}

+ 14 - 0
C5/P5/C5-11-2.c

@@ -0,0 +1,14 @@
+#include <stdio.h>
+int main()
+ {char c;
+  while((c=getchar())!='\n')          // 输入一个字符给字符变量c并检查它c的值是否换行符  
+    {if((c>='A' && c<='Z') || (c>='a' && c<='z'))     // c如果是字母
+       { c=c+4;                       // 只要是字母,都先加4
+	     if(c>='Z' && c<='Z'+4 || c>'z')   // 如果是26个字母中最后4个字母之一
+		    c=c-26;                   // c的值改变为26个字母中最前面的4个字母中对应的字母        
+	   }
+     printf("%c",c);                  // 输出己改变的字符
+    }
+  printf("\n");
+  return 0;
+}

+ 15 - 0
C5/P5/C5-11.c

@@ -0,0 +1,15 @@
+#include <stdio.h>
+int main()
+ {char c;
+  c=getchar();
+  while(c!='\n')
+    {if((c>='a' && c<='z') || (c>='A' && c<='Z'))
+       { if(c>='W' && c<='Z' || c>='w' && c<='z') c=c-22;
+         else c=c+4;
+	   }
+     printf("%c",c);
+     c=getchar();
+    }
+  printf("\n");
+  return 0;
+}

+ 17 - 0
C5/P5/C5-4.c

@@ -0,0 +1,17 @@
+#include <stdio.h>
+#define SUM 100000
+int main()
+{
+  float amount,aver,total; 
+  int i;
+  for (i=1,total=0;i<=1000;i++)                      
+  {
+     printf("please enter amount:");
+     scanf("%f",&amount);
+     total= total+amount;                         
+     if (total>=SUM) break;                                
+  }
+  aver=total/i;
+  printf("num=%d\naver=%10.2f\n",i,aver);              
+  return 0;
+}

+ 15 - 0
C5/P5/c5-1.c

@@ -0,0 +1,15 @@
+#include <stdio.h>
+int main()
+{
+  int i=1,sum=0;                      // 定义变量i的初值为1,sum的初值为0  
+  while (i<=100)                      // 当i>100,条件表达式i<=100的值为假,不执行循环体
+  {                                   // 循环体开始
+   sum=sum+i;                         // 第一次累加后,sum的值为1
+   i++;                               // 加完后,i的值加1,为下次累加作准备
+  }                                   // 循环体结束
+  printf("sum=%d\n",sum);             // 输出1+2+3…+100的累加和
+  return 0;
+}
+
+
+

+ 17 - 0
C5/P5/c5-10.c

@@ -0,0 +1,17 @@
+# include <stdio.h>
+# include <math.h>
+int main()
+ {int n,k,i,m=0;
+  for(n=101;n<=200;n=n+2)                        // n从100变化到200,对每个n进行判定
+    { k=sqrt(n);
+      for (i=2;i<=k;i++)                          
+        if (n%i==0) break;                      // 如果n被i整除,终止内循环,此时i<k+1
+      if (i>=k+1)                               // 若j>=k+1,表示n未被整除
+		{printf("%d ",n);                       // 应确定n是素数
+	     m=m+1;                                 // m用来控制换行,一行内输出10个录素数
+		}     
+	  if(m%10==0) printf("\n");                 // m累计到10的倍数,换行
+    }
+  printf ("\n");
+  return 0;
+ }

+ 12 - 0
C5/P5/c5-2.c

@@ -0,0 +1,12 @@
+#include <stdio.h>
+int main()
+{
+ int i=1,sum=0;
+ do 
+ {
+   sum=sum+i;
+   i++;
+ }while(i<=100);
+ printf("%d\n",sum);
+ return 0;
+}

+ 14 - 0
C5/P5/c5-3(a).c

@@ -0,0 +1,14 @@
+#include <stdio.h>
+int main()
+{
+ int i,sum=0;
+ printf("please enter i,i=?");
+ scanf("%d",&i);
+ while(i<=10) 
+ {
+  sum=sum+i;
+  i++;
+ };
+ printf("sum=%d\n",sum);
+ return 0;
+}

+ 14 - 0
C5/P5/c5-3(b).c

@@ -0,0 +1,14 @@
+#include <stdio.h>
+int main()
+{
+ int i,sum=0;
+ printf("please enter i,i=?");
+ scanf("%d",&i);
+ do 
+ {
+  sum=sum+i;
+  i++;
+ }while(i<=10);
+ printf("sum=%d\n",sum);
+ return 0;
+}

+ 14 - 0
C5/P5/c5-3-1.c

@@ -0,0 +1,14 @@
+#include <stdio.h>
+int main()
+{
+ int i,sum=0;
+ printf("please enter i,i=?");
+ scanf("%d",&i);
+ while(i<=10) 
+ {
+  sum=sum+i;
+  i++;
+ };
+ printf("sum=%d\n",sum);
+ return 0;
+}

+ 14 - 0
C5/P5/c5-3-2.c

@@ -0,0 +1,14 @@
+#include <stdio.h>
+int main()
+{
+ int i,sum=0;
+ printf("please enter i,i=?");
+ scanf("%d",&i);
+ do 
+ {
+    sum=sum+i;
+    i++;
+ }while(i<=10);
+ printf("sum=%d\n",sum);
+ return 0;
+}

+ 11 - 0
C5/P5/c5-5.c

@@ -0,0 +1,11 @@
+#include <stdio.h>
+int main()
+{int n;
+ for (n=100;n<=200;n++)
+   {if (n%3==0)
+      continue;
+    printf("%d  ",n);
+   }
+ printf("\n");
+ return 0;
+}

+ 12 - 0
C5/P5/c5-6-1.c

@@ -0,0 +1,12 @@
+#include <stdio.h>
+int main()
+{
+  int i,j,n=0;
+  for (i=1;i<=4;i++)                      
+    for (j=1;j<=5;j++,n++)
+	{ if(n%5==0)printf("\n");     //控制在输出5个数据后换行
+	  printf("%d\t",i*j);
+	}  
+  printf("\n");	
+  return 0;
+}

+ 13 - 0
C5/P5/c5-6-2.c

@@ -0,0 +1,13 @@
+#include <stdio.h>
+int main()
+{
+  int i,j,n=0;
+  for (i=1;i<=4;i++)                      
+    for (j=1;j<=5;j++,n++)
+	{ if(n%5==0)  printf("\n");     //控制在输出5个数据后换行
+	  if (i==3 && j==1)  break;    //遇到第3行第1列,终止内循环
+	  printf("%d\t",i*j);
+	}  
+  printf("\n");	
+  return 0;
+}

+ 13 - 0
C5/P5/c5-6-3.c

@@ -0,0 +1,13 @@
+#include <stdio.h>
+int main()
+{
+  int i,j,n=0;
+  for (i=1;i<=4;i++)                      
+    for (j=1;j<=5;j++,n++)
+	{ if(n%5==0)printf("\n");         //控制在输出5个数据后换行
+	  if (i==3 && j==1) continue;    //遇到第3行第1列,提前结束执行本次内循环体
+	  printf("%d\t",i*j);
+	}  
+  printf("\n");	
+  return 0;
+}

+ 17 - 0
C5/P5/c5-7-1.c

@@ -0,0 +1,17 @@
+#include <stdio.h>
+#include<math.h>
+int main()
+{
+  int sign=1;                        // sign用来表示数值的符号
+  double pi=0.0,n=1.0,term=1.0;      // pi代表π,n代表分母,term代表当前项的值
+  while(fabs(term)>=1e-6)            // 检查当前项term的绝对值是否大于或等于10的(-6)次方
+  {
+     pi=pi+term;                     // 把当前项term累加到pi中
+     n=n+2;                          // n+2是下一项的分母 
+     sign=-sign;                     // sign代表符号,下一项的符号与上一项符号相反
+     term=sign/n;                    // 求出下一项的值term
+  }
+  pi=pi*4;                           // 多项式的和pi乘以4,才是π的近似值
+  printf("pi=%10.8f\n",pi);          // 输出π的近似值  
+  return 0;
+}

+ 18 - 0
C5/P5/c5-7-2.c

@@ -0,0 +1,18 @@
+#include <stdio.h>
+#include<math.h>
+int main()
+{
+  int sign=1;                      // sign用来表示数值的符号
+  int t=0;                         // t 代表当前执行循环体的次数
+  double pi=0.0,n=1.0,term=1.0;    // pi代表π,n代表分母,term代表当前项的值
+  while(fabs(term)>=1e-6)          // 检查当前项term的绝对值是否大于或等于10的(-6)次方
+  {t=t+1;                          // 每进入一次循环体,t的值加1 
+   pi=pi+term;                     // 把当前项term累加到pi中
+   n=n+2;                          // n+2是下一项的分母 
+   sign=-sign;                     // sign代表符号,下一项的符号与上一项符号相反
+   term=sign/n;                    // 求出下一项的值term
+  }
+  pi=pi*4;                         // 多项式的和pi乘以4,才是π的近似值
+  printf("pi=%10.6f\n",pi);        // 输出π的近似值  
+  return 0;
+}

+ 14 - 0
C5/P5/c5-8-1.c

@@ -0,0 +1,14 @@
+#include <stdio.h>
+int main()
+ { 
+  int f1=1,f2=1,f3;
+  int i;
+  printf("%12d\n%12d\n",f1,f2);
+  for(i=1; i<=38; i++)
+    {
+	  f3=f1+f2;
+	  printf("%12d\n",f3);
+	  f1=f2;
+	  f2=f3;
+    }
+} 

+ 14 - 0
C5/P5/c5-8-2.c

@@ -0,0 +1,14 @@
+#include <stdio.h>
+int main()
+ { 
+  int f1=1,f2=1;
+  int i;
+  for(i=1; i<=20; i++)                    // 每个循环中输出2个月的数据,故循环20次即可
+    {
+	  printf("%12d %12d ",f1,f2);         // 输出己知的两个月的兔子数
+      if(i%2==0) printf("\n");
+      f1=f1+f2;                       // 计算出下一个月的兔子数,并存放在f1中
+      f2=f2+f1;                       // 计算出下两个月的兔子数,并存放在f2中
+    }
+  return 0;
+}

+ 11 - 0
C5/P5/c5-9-1.c

@@ -0,0 +1,11 @@
+#include <stdio.h>
+int main()
+ {int n,i;
+  printf("please enter a integer number,n=?");
+  scanf("%d",&n);
+  for (i=2;i<=n-1;i++)
+    if(n%i==0) break;
+  if(i<n) printf("%d is not a prime number.\n",n);
+  else printf("%d is a prime number.\n",n);
+  return 0;
+} 

+ 14 - 0
C5/P5/c5-9-2.c

@@ -0,0 +1,14 @@
+#include <stdio.h>
+#include <math.h>
+int main()
+ {int n,i,k;
+  printf("please enter a integer number:n=?");
+  scanf("%d",&n);
+  k=sqrt(n);
+  for (i=2;i<=k;i++)
+    if(n%i==0) break;
+  if(i<=k) 
+	printf("%d is not a prime number.\n",n);
+  else printf("%d is a prime number.\n",n);
+  return 0;
+} 

+ 11 - 0
C5/P6/c6-1.c

@@ -0,0 +1,11 @@
+#include <stdio.h>
+int main()
+ {
+  int i,a[10];
+  for (i=0; i<=9;i++)
+    a[i]=i;
+  for(i=9;i>=0; i--)
+    printf("%d ",a[i]);
+  printf("\n");
+  return 0;
+ }

+ 15 - 0
C5/P6/c6-2.c

@@ -0,0 +1,15 @@
+#include <stdio.h>
+int main()
+ {
+  int i;
+  int f[20]={1,1};
+  for(i=2;i<20;i++)
+    f[i]=f[i-2]+f[i-1];
+  for(i=0;i<20;i++)
+    {
+     if(i%5==0) printf("\n");
+       printf("%12d",f[i]);
+    }
+  printf("\n");
+  return 0;
+}

+ 19 - 0
C5/P6/c6-3.c

@@ -0,0 +1,19 @@
+#include <stdio.h>
+int main()
+ {
+   int a[10];
+   int i,j,t;
+   printf("input 10 numbers :\n");
+   for (i=0;i<10;i++)                    
+     scanf("%d",&a[i]);                  
+   printf("\n");
+   for(j=0;j<9;j++)                        // 进行9次循环,实现9趟比较
+	for(i=0;i<9-j;i++)                     // 在每一趟中进行9-j次比较                  
+	  if (a[i]>a[i+1])                     // 相邻两个数比较 
+	    {t=a[i];a[i]=a[i+1];a[i+1]=t;}
+   printf("the sorted numbers :\n");
+   for(i=0;i<10;i++)
+     printf("%d ",a[i]);
+   printf("\n");
+   return 0;
+}

+ 24 - 0
C5/P6/c6-4.c

@@ -0,0 +1,24 @@
+#include <stdio.h>
+int main()
+ {
+   int a[2][3]={{1,2,3},{4,5,6}};
+   int b[3][2],i,j;
+   printf("array a:\n");
+   for (i=0;i<=1;i++)
+     {
+      for (j=0;j<=2;j++)
+        {
+          printf("%5d",a[i][j]);
+          b[j][i]=a[i][j];
+        }
+      printf("\n");
+     }
+   printf("array b:\n");
+   for (i=0;i<=2;i++)
+     {
+      for(j=0;j<=1;j++)
+        printf("%5d",b[i][j]);
+       printf("\n");
+     }
+   return 0;
+ }    

+ 15 - 0
C5/P6/c6-5.c

@@ -0,0 +1,15 @@
+#include <stdio.h>
+int main()
+ {int i,j,row=0,colum=0,max;
+  int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};   // 定义数组并赋初值
+  max=a[0][0];                                       // 先认为a[0][0]最大
+  for (i=0;i<=2;i++)
+    for (j=0;j<=3;j++)
+       if (a[i][j]>max)                              // 如果某元素大于max,就取代max的原值
+          {max=a[i][j];
+           row=i;                                    // 记下此元素的行号
+           colum=j;                                  // 记下此元素的列号
+          }
+  printf("max=%d\nrow=%d\ncolum=%d\n",max,row,colum);
+  return 0;
+}   

+ 9 - 0
C5/P6/c6-6.c

@@ -0,0 +1,9 @@
+#include <stdio.h>
+int main()
+ {char c[15]={'I',' ','a','m',' ','a',' ','s','t','u','d','e','n','t','.'};
+  int i;
+  for(i=0;i<15;i++)
+    printf("%c",c[i]);
+  printf("\n");
+  return 0;
+}  

+ 11 - 0
C5/P6/c6-7.c

@@ -0,0 +1,11 @@
+#include <stdio.h>
+int main()
+ {char diamond[][5]={{' ',' ','*'},{' ','*',' ','*'},{'*',' ',' ',' ','*'},{' ','*',' ','*'},{' ',' ','*'}};
+  int i,j;
+  for (i=0;i<5;i++)
+    {for (j=0;j<5;j++)
+        printf("%c",diamond[i][j]);
+     printf("\n");
+    }
+  return 0;
+}

+ 16 - 0
C5/P6/c6-8.c

@@ -0,0 +1,16 @@
+#include <stdio.h>
+int main()
+ {
+  char string[81];
+  int i,num=0,word=0;
+  char c;
+  gets(string);                           // 输入一个字符串给字符数组string
+  for (i=0;(c=string[i])!='\0';i++)       // 只要字符不是'\0'就继续执行循环
+    if(c==' ') word=0;                    // 如果是空格字符,使word置0
+    else if(word==0)                      // 如果不是空格字符且word原值为0
+		{word=1;                          // 使word置1
+	     num++;                           // num累加1,表示增加一个单词
+		}
+  printf("There are %d words in this line.\n",num);  //输出结果
+  return 0;
+}

+ 18 - 0
C5/P6/c6-9.c

@@ -0,0 +1,18 @@
+#include<stdio.h>
+#include<string.h>
+int main ( )
+{
+  char str[3][20];                 // 定义二维字符数组
+  char string[20];                 // 定义一维字符数组,作为交换字符串时的临时字符数组
+  int i;
+  for (i=0;i<3;i++)
+      gets (str[i]);                 // 读入3个字符串,分别给str[0],str[1],str[2]   
+  if (strcmp(str[0],str[1])>0)     // 若str[0]大于str[1]
+	  strcpy(string,str[0]);       // 把str[0]的字符串赋给字符数组string
+  else                             // 若str[0]小于等于str[1]
+	  strcpy(string,str[1]);       // 把str[1]的字符串赋给字符数组string 
+  if (strcmp(str[2],string)>0)     // 若str[2]大于string
+      strcpy(string,str[2]);       // 把str[2]的字符串赋给字符数组string     
+  printf("\nthe largest string is:\n%s\n",string);  // 输出string
+  return 0;
+}

+ 18 - 0
C5/P7/c7-1.c

@@ -0,0 +1,18 @@
+#include <stdio.h>
+int main()
+{void printstar();            
+ void print_message();       
+ printstar();                  
+ print_message();            
+ printstar(); 
+ return 0;
+}
+
+void printstar()           
+{
+ printf("******************\n");
+}
+
+void print_message()           
+{printf("  How do you do!\n");
+}

+ 22 - 0
C5/P7/c7-10.c

@@ -0,0 +1,22 @@
+#include <stdio.h>
+int main()
+{ float average(float array[10]);           // 函数声明
+  float score[10],aver;
+  int i;
+  printf("input 10 scores:\n");
+  for(i=0;i<10;i++)
+      scanf("%f",&score[i]);
+  printf("\n");
+  aver=average(score);                     // 调用average函数
+  printf("average score is %5.2f\n",aver);
+  return 0;
+} 
+
+float average(float array[10])             // 定义average函数
+  {int i;
+   float aver,sum=array[0];
+   for(i=1;i<10;i++)
+       sum=sum+array[i];                  // 累加学生成绩
+   aver=sum/10;
+   return(aver);
+}

+ 18 - 0
C5/P7/c7-11.c

@@ -0,0 +1,18 @@
+#include <stdio.h>
+int main()
+{float average(float array[ ],int n);
+ float score1[5]={98.5,97,91.5,60,55};
+ float score2[10]={67.5,89.5,99,69.5,77,89.5,76.5,54,60,99.5};
+ printf("The average of class A is %6.2f\n",average(score1,5));
+ printf("The average of class B is %6.2f\n",average(score2,10));
+ return 0;
+ }
+
+float average(float array[ ],int n)
+ {int i;
+  float aver,sum=array[0];
+  for(i=1;i<n;i++)
+    sum=sum+array[i];
+  aver=sum/n;
+  return(aver);
+}

+ 25 - 0
C5/P7/c7-12.c

@@ -0,0 +1,25 @@
+#include <stdio.h>
+int main()
+{void sort(int array[],int n);
+ int a[10],i;
+ printf("enter array:\n");
+ for(i=0;i<10;i++)
+    scanf("%d",&a[i]);
+ sort(a,10);
+ printf("The sorted array:\n");
+ for(i=0;i<10;i++)
+    printf("%d ",a[i]);
+ printf("\n");
+ return 0;
+} 
+
+void sort(int array[],int n)
+ {int i,j,k,t;
+  for(i=0;i<n-1;i++)
+    {k=i;
+     for(j=i+1;j<n;j++)
+       if(array[j]<array[k])
+	     k=j;
+	 t=array[k];array[k]=array[i];array[i]=t;
+	}
+ }

+ 19 - 0
C5/P7/c7-13.c

@@ -0,0 +1,19 @@
+#include <stdio.h>
+int main()
+{ int max_value(int array[][4]);	
+  int a[3][4]={{1,3,5,7},{2,4,6,8},{15,17,34,12}};
+  printf("Max value is %d\n",max_value(a));
+  return 0;
+}
+
+int max_value(int array[][4])
+{ int i,j,max;
+  max=array[0][0];
+  for(i=0;i<3;i++)
+    for(j=0;j<4;j++)
+      if(array[i][j]>max)max=array[i][j];
+  return (max);
+}
+
+
+

+ 26 - 0
C5/P7/c7-14.c

@@ -0,0 +1,26 @@
+#include <stdio.h>
+float Max=0,Min=0;                                       // 定义全局变量Max,Min
+int main()
+{ float average(float array[ ],int n);
+  float ave,score[10];
+  int i;
+  printf("Please enter 10 scores:");
+  for(i=0;i<10;i++)
+    scanf("%f",&score[i]);
+  ave=average(score,10);
+  printf("max=%6.2f\nmin=%6.2f\naverage=%6.2f\n",Max,Min,ave);
+  return 0;
+ }
+
+float average(float array[ ],int n)                       // 定义函数,有一形参是数组
+{ int i;
+  float aver,sum=array[0];
+  Max=Min=array[0];
+  for(i=1;i<n;i++)
+    {if(array[i]>Max)Max=array[i];
+     else if(array[i]<Min)Min=array[i];
+     sum=sum+array[i]; 
+    }
+  aver=sum/n;
+  return(aver);
+}

+ 16 - 0
C5/P7/c7-15.c

@@ -0,0 +1,16 @@
+#include <stdio.h>
+int a=3,b=5;                     // a,b是全局变量
+int main()
+{
+  int max(int a,int b);           // 函数声明。a,b是形参
+  int a=8;                        // a是局局部变量  
+  printf("max=%d\n",max(a,b));    // 变量a是函数中定义的局部变量a
+  return 0;
+} 
+
+int max(int a,int b)               // a,b是函数形参        
+{
+  int c;
+  c=a>b?a:b;                       // 把a和b中的大者存放在c中 
+  return(c);
+}

+ 16 - 0
C5/P7/c7-16.c

@@ -0,0 +1,16 @@
+#include <stdio.h>
+int main()
+{ int f(int);
+  int a=2,i;
+  for(i=0;i<3;i++)
+    printf("%d\n",f(a));
+  return 0;
+}
+
+int f(int a)
+{ auto  int b=0;
+  static c=3;
+  b=b+1;
+  c=c+1;
+  return(a+b+c);
+}

+ 15 - 0
C5/P7/c7-17.c

@@ -0,0 +1,15 @@
+#include <stdio.h>
+int main()
+{ int fac(int n);
+  int i;
+  for(i=1;i<=5;i++)
+    printf("%d!=%d\n",i,fac(i));
+  return 0;
+ }
+
+int fac(int n)
+{ static int f=1;
+  f=f*n;
+  return(f);
+}
+

+ 18 - 0
C5/P7/c7-18.c

@@ -0,0 +1,18 @@
+#include <stdio.h>
+int main()
+{ int max( );     
+  extern int A,B,C;                        // 把外部变量A,B,C的作用域扩展到从此处开始
+  printf("Please enter three integer numbers:");
+  scanf("%d %d %d",&A,&B,&C);
+  printf("max is %d\n",max());
+  return 0;
+}
+
+int A ,B ,C;                     // 定义外部变量A,B,C      
+
+int max( )    
+{ int m;
+  m=A>B?A:B;
+  if (C>m) m=C;
+  return(m);
+}

+ 14 - 0
C5/P7/c7-19-1.c

@@ -0,0 +1,14 @@
+//file1.c
+#include <stdio.h>
+int A;                 
+int main()                          
+ {int power(int);
+  int b=3,c,d,m;
+  printf("enter the number a and its power m:\n");
+  scanf("%d,%d",&A,&m);
+  c=A*b;
+  printf("%d*%d=%d\n",A,b,c);
+  d=power(m);
+  printf("%d**%d=%d\n",A,m,d);
+  return 0;
+}

+ 8 - 0
C5/P7/c7-19-2.c

@@ -0,0 +1,8 @@
+//file2.c
+extern  A;
+int power(int n)
+ {int i,y=1;
+  for(i=1;i<=n;i++)
+    y*=A;
+  return(y);
+}

+ 17 - 0
C5/P7/c7-2.c

@@ -0,0 +1,17 @@
+#include <stdio.h>
+int main()
+{ int max(int x,int y);  
+  int a,b,c;  
+  printf("please enter two integer numbers:");
+  scanf("%d,%d",&a,&b);
+  c=max(a,b);
+  printf("max is %d\n",c);
+  return 0;
+}
+
+int max(int x,int y)               // 定义max函数
+{
+  int z;                           // 定义临时变量
+  z=x>y?x:y;                       // 把x和y中大者赋给z
+  return(z);                       // 把z作为max函数的伦值带回main函数
+}

+ 14 - 0
C5/P7/c7-20-1.c

@@ -0,0 +1,14 @@
+//file1.c
+#include <stdio.h>
+int main()
+{ extern void enter_string(char str[]);
+  extern void delete_string(char str[],char ch);
+  extern void print_string(char str[]);
+    // 以上3行声明在本函数中将要调用的已在其他文件中定义的3个函数
+  char c,str[80];
+  enter_string(str);                 // 调用在其他文件中定义的enter_string函数
+  scanf("%c",&c);
+  delete_string(str,c);               // 调用在其他文件中定义的delete_string函数 
+  print_string(str);                  // 调用在其他文件中定义的print_string函数     
+  return 0;     
+}

+ 5 - 0
C5/P7/c7-20-2.c

@@ -0,0 +1,5 @@
+//file2.c
+void enter_string(char str[80]) 
+{
+  gets(str);       
+}

+ 10 - 0
C5/P7/c7-20-3.c

@@ -0,0 +1,10 @@
+//file3.c
+void delete_string(char str[],char ch)
+{int i,j;
+ for(i=j=0;str[i]!='\0';i++)
+	 if(str[i]!=ch)
+	   str[j++]=str[i];
+ str[j]='\0';
+}
+
+

+ 5 - 0
C5/P7/c7-20-4.c

@@ -0,0 +1,5 @@
+//file4.c
+void print_string(char str[])
+{
+  printf("%s\n",str);
+}

+ 15 - 0
C5/P7/c7-3.c

@@ -0,0 +1,15 @@
+#include <stdio.h>
+int main()
+ {int max(float x,float y);
+  float a,b;
+  int c;
+  scanf("%f,%f,",&a,&b);
+  c=max(a,b);
+  printf("max is %d\n",c);
+  return 0;
+}
+int max(float x,float y)
+ {float z;                         
+  z=x>y?x:y;
+  return(z);
+}

+ 16 - 0
C5/P7/c7-4-1.c

@@ -0,0 +1,16 @@
+#include <stdio.h>
+int main()
+{float add(float x, float y);   
+ float a,b,c;
+ printf("Please enter a and b:");
+ scanf("%f,%f",&a,&b);
+ c=add(a,b);
+ printf("sum is %f\n",c);
+ return 0;
+}
+
+float add(float x,float y)       
+ {float z;                          
+  z=x+y;
+  return(z);
+}

+ 16 - 0
C5/P7/c7-4-2.c

@@ -0,0 +1,16 @@
+#include <stdio.h>
+float add(float x,float y)       
+ {float z;                          
+  z=x+y;
+  return(z);
+}
+
+int main()
+{
+ float a,b,c;
+ printf("Please enter a and b:");
+ scanf("%f,%f",&a,&b);
+ c=add(a,b);
+ printf("sum is %f\n",c);
+ return 0;
+}

+ 26 - 0
C5/P7/c7-5-1.c

@@ -0,0 +1,26 @@
+#include <stdio.h>
+int main()
+{ int max4(int a,int b,int c,int d);             // 对max4的函数声明
+  int a,b,c,d,max;
+  printf("Please enter 4 interger numbers:");    // 提示输入4个数
+  scanf("%d %d %d %d",&a,&b,&c,&d);              // 输入4个数
+  max=max4(a,b,c,d);                             // 调用max4函数,得到4个数中的最大者
+  printf("max=%d \n",max);                       // 输出4个数中的最大者  
+  return 0;
+} 
+
+int max4(int a,int b,int c,int d)   // 定义max4函数 
+{int max2(int a,int b);             // 对max2的函数声明
+ int m; 
+ m=max2(a,b);                       // 调用max2函数,得到a和b两个数中的大者,放在m中
+ m=max2(m,c);                       // 调用max2函数,得到a,b,c三个数中的大者,放在m中                         
+ m=max2(m,d);                       // 调用max2函数,得到a,b,c,d四个数中的大者,放在m中           
+ return(m);                         // 把m作为函数值带回main函数
+}
+
+int max2(int a,int b)               // 定义max2函数 
+{if(a>=b)
+   return a;                        // 若a>=b,将a为函数返回值 
+ else 
+   return b;                        // 若a<b,将b为函数返回值
+}

+ 24 - 0
C5/P7/c7-5-2.c

@@ -0,0 +1,24 @@
+#include <stdio.h>
+int main()
+{ int max4(int a,int b,int c,int d); 
+  int a,b,c,d,max;
+  printf("Please enter 4 interger numbers:");
+  scanf("%d %d %d %d",&a,&b,&c,&d);
+  max=max4(a,b,c,d);
+  printf("max=%d \n",max);
+  return 0;
+} 
+
+int max4(int a,int b,int c,int d) 
+{int max2(int a,int b);
+ int m; 
+ m=max2(a,b);
+ m=max2(m,c);
+ m=max2(m,d);
+ return(m);
+}
+
+int max2(int a,int b)
+{
+  return(a>b?a:b);
+}

+ 21 - 0
C5/P7/c7-5-3.c

@@ -0,0 +1,21 @@
+#include <stdio.h>
+void main()
+{ int max4(int a,int b,int c,int d); 
+  int a,b,c,d,max;
+  printf("Please enter 4 interger numbers:");
+  scanf("%d %d %d %d",&a,&b,&c,&d);
+  max=max4(a,b,c,d);
+  printf("max=%d \n",max);
+} 
+
+int max4(int a,int b,int c,int d) 
+{ int max2(int a,int b);
+  int m; 
+  m=max2(max2(max2(a,b),c),d);         /* ×Ðϸ·ÖÎö´ËÐÐ */
+  return(m);
+}
+
+int max2(int a,int b)
+{
+  return(a>b?a:b);                         
+}

+ 19 - 0
C5/P7/c7-5-4.c

@@ -0,0 +1,19 @@
+#include <stdio.h>
+void main()
+{ int max4(int a,int b,int c,int d); 
+  int a,b,c,d,max;
+  printf("Please enter 4 interger numbers:");
+  scanf("%d %d %d %d",&a,&b,&c,&d);
+  max=max4(a,b,c,d);
+  printf("max=%d \n",max);
+} 
+
+int max4(int a,int b,int c,int d) 
+{ int max2(int a,int b);
+  return max2(max2(max2(a,b),c),d);          
+}
+
+int max2(int a,int b)
+{
+  return(a>b?a:b);                         
+}

+ 16 - 0
C5/P7/c7-6.c

@@ -0,0 +1,16 @@
+#include <stdio.h>
+int main()
+{ int age(int n);
+  printf("NO.5,age:%d\n",age(5));  //输出第5人的年龄
+  return 0;
+} 
+
+int age(int n)                     //定义递归函数    
+ {int c;                
+  if(n==1)                         // 如果n等于1
+    c=10;                          // 年龄为10
+  else                             // 如果n不等于1     
+    c=age(n-1)+2;                  // 年龄是前一人的年龄加2(如第4人年龄是第3人年龄加2)
+  return(c);                       // 返回年龄
+}
+

+ 23 - 0
C5/P7/c7-7.c

@@ -0,0 +1,23 @@
+#include <stdio.h>
+int  main()
+{ int fac(int n);   
+  int n;
+  int y;
+  printf("input an integer number:");
+  scanf("%d",&n);
+  y=fac(n);
+  printf("%lld!=%d\n",n,y);
+  return 0;
+}
+
+ int fac(int n)
+ {
+  int f;
+  if(n<0)
+	 printf("n<0,data error!");
+  else if(n==0||n==1) 
+	 f=1;
+  else  f=fac(n-1)*n;
+  return(f);
+ }
+

+ 20 - 0
C5/P7/c7-8-2.c

@@ -0,0 +1,20 @@
+#include <stdio.h>
+void main()
+{ int max4(int a,int b,int c,int d); 
+  int a,b,c,d,max;
+  printf("Please enter 4 interger numbers:");
+  scanf("%d %d %d %d",&a,&b,&c,&d);
+  max=max4(a,b,c,d);
+  printf("max=%d \n",max);
+} 
+
+int max4(int a,int b,int c,int d) 
+{int max2(int a,int b);
+ return max2(max2(max2(a,b),c),d);         /* ×Ðϸ·ÖÎö´ËÐÐ */
+  
+}
+
+int max2(int a,int b)
+{
+ return(a>b?a:b);                         
+}

+ 31 - 0
C5/P7/c7-8.c

@@ -0,0 +1,31 @@
+#include <stdio.h>
+int main()
+{
+  void hanoi(int n,char one,char two,char three);         // 对hanoi函数的声明 
+  int m;
+  printf("input the number of diskes:");
+  scanf("%d",&m);
+  printf("The step to move %d diskes:\n",m);
+  hanoi(m,'A','B','C');
+  return 0;
+}
+
+void hanoi(int n,char one,char two,char three)          // 定义hanoi函数  
+    // 将n个盘从one座借助two座,移到three座 
+ {
+   void move(char x,char y);       // 对move函数的声明 
+   if(n==1)
+     move(one,three);
+   else
+    {
+     hanoi(n-1,one,three,two);
+     move(one,three);
+     hanoi(n-1,two,one,three);
+    }
+ }
+
+ void move(char x,char y)           //  定义move函数 
+ {
+    printf("%c-->%c\n",x,y);
+ }
+

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff