├── .gitignore ├── C ├── .8-15-1.c.swp ├── 10-10-1.c ├── 10-10-2.c ├── 10-10-3.c ├── 10-10-4.c ├── 10-10-5.c ├── 10-10-6.c ├── 10-11-1.c ├── 10-11-2.c ├── 10-11-3.c ├── 10-11-4.c ├── 10-11-5.c ├── 10-11-7.c ├── 10-11-8.c ├── 10-11-9.c ├── 10-12-1.c ├── 10-12-2.c ├── 10-12-3.c ├── 10-12-4.c ├── 10-12-5.c ├── 10-12-6.c ├── 10-12-7.c ├── 10-12-8.c ├── 10-13-1.c ├── 10-13-2.c ├── 10-13-3.c ├── 10-13-4.c ├── 10-13-5.c ├── 10-13-6.c ├── 10-13-7.c ├── 10-14-1.c ├── 10-14-2.c ├── 10-14-3.c ├── 10-14-4.c ├── 10-14-5.c ├── 10-14-6.c ├── 10-14-7.c ├── 10-15-1.c ├── 10-15-2.c ├── 10-15-3.c ├── 10-15-4.c ├── 10-15-5.c ├── 10-15-6.c ├── 10-16-3.c ├── 10-16-4.c ├── 10-17-1.c ├── 10-17-2.c ├── 10-17-3.c ├── 10-17-4.c ├── 10-18-1.c ├── 10-18-2.c ├── 10-18-3.c ├── 10-18-4.c ├── 10-18-5.c ├── 10-19-1.c ├── 10-19-2.c ├── 10-20-1.c ├── 10-20-2.c ├── 10-20-3.c ├── 10-21-2.c ├── 10-22-1.c ├── 10-22-2.c ├── 10-22-3.c ├── 10-22-33.c ├── 10-22-4.c ├── 10-24-1.c ├── 10-25-1.c ├── 10-25-2.c ├── 10-25-3.c ├── 10-25-5.c ├── 10-25-6.c ├── 10-25-9.c ├── 10-26-1.c ├── 10-26-2.c ├── 10-26-3.c ├── 10-26-4.c ├── 10-27-1.c ├── 10-27-2.c ├── 10-27-3.c ├── 10-28-2.c ├── 10-28-4.c ├── 10-28-5.c ├── 10-28-6.c ├── 10-29-1.c ├── 10-29-2.c ├── 10-29-3.c ├── 10-30-3.c ├── 10-30-4.c ├── 10-30-5.c ├── 10-30-7.c ├── 10-30-9.c ├── 10-31-1.c ├── 10-31-2.c ├── 10-31-3.c ├── 10-31-4.c ├── 10-8-3.c ├── 10-8-4.c ├── 10-9-1.c ├── 10-9-2.c ├── 10.8.2.c ├── 10.8a.c ├── 11-1-1.c ├── 11-1-2.c ├── 11-1-3.c ├── 11-11-1.c ├── 11-4-1.c ├── 11-5-1.c ├── 11-5-2.c ├── 11-5-3.c ├── 11-5-4.c ├── 11-7-1.c ├── 11-7-2.c ├── 11-7-3.c ├── 11-7-4.c ├── 11-8-1.c ├── 11-8-2.c ├── 11-8-3.c ├── 11-8-4.c ├── 11-8-5.c ├── 11-8-7.c ├── 11-8-8.c ├── 2-20-1.c ├── 2-26-1.c ├── 2-27-1.c ├── 2-27-2.c ├── 2.c ├── 3-12-1.c ├── 3-12-2.c ├── 3-12-3.c ├── 3-13-1.c ├── 3-20-1.c ├── 3-20-2.c ├── 3-20-3.c ├── 3-20-4.c ├── 3-20-5.c ├── 3-26-1.cpp ├── 3-28-1.c ├── 3-28-2.c ├── 3-28-3.c ├── 3-28-4.c ├── 3-29-1.c ├── 3-7-1.cpp ├── 3-7-2.cpp ├── 3.c ├── 4-10-1.c ├── 4-11-1.c ├── 4-11-2.c ├── 4-11-3.c ├── 4-11-4.c ├── 4-11-5.c ├── 4-12-1.c ├── 4-12-2.c ├── 4-12-3.c ├── 4-17-1.c ├── 4-17-2.c ├── 4-17-3.c ├── 4-17-4.c ├── 4-17-5.c ├── 4-25-1.c ├── 4-25-2.c ├── 4-25-3.c ├── 4-26-1.c ├── 4-26-2.c ├── 4-26-3.c ├── 4-3-1.cpp ├── 4.c ├── 5-1-1.c ├── 5-1-2.c ├── 5-1-3.c ├── 5-13-1.c ├── 5-15-1.c ├── 5-15-2.c ├── 5-16-1.c ├── 5-16-10.c ├── 5-16-11.c ├── 5-16-12.c ├── 5-16-13.c ├── 5-16-14.c ├── 5-16-2.c ├── 5-16-3.c ├── 5-16-4.c ├── 5-16-5.c ├── 5-16-6.c ├── 5-16-7.c ├── 5-16-8.c ├── 5-16-9.c ├── 5-18-1.c ├── 5-18-2.c ├── 5-18-3.c ├── 5-18-4.c ├── 5-18-5.c ├── 5-2-1.c ├── 5-2-2.c ├── 5-2-3.c ├── 5-2-4.c ├── 5-2-5.c ├── 5-20-1.c ├── 5-21-1.c ├── 5-21-2.c ├── 5-21-3.c ├── 5-21-4.c ├── 5-21-5.c ├── 5-21-6.c ├── 5-21-7.c ├── 5-21-8.c ├── 5-3-1.c ├── 5-8-1.c ├── 5-8-2.c ├── 5-9-1.c ├── 5-9-2.c ├── 5-9-3.c ├── 5-9-4.c ├── 5-9-5.c ├── 5-9-6.c ├── 5-9-7.c ├── 5.c ├── 6-2-1.c ├── 6-2-2.c ├── 6-2-3.c ├── 6-20-1.cpp ├── 6.c ├── 7-21-1.c ├── 7.c ├── 8-15-1.c ├── ListStruct.cpp ├── market │ ├── .main.cpp.swp │ ├── data0.txt │ ├── data1.txt │ ├── data2.txt │ └── main.cpp ├── merge-sort-顺序表-迭代.cpp ├── merge_sort-顺序表实现-递归法.cpp ├── p16t3.cpp ├── p16t4.cpp ├── p16t5.cpp ├── quick_sort.cpp ├── test-for1 ├── 基数排序-低位.cpp ├── 基数排序-高位.cpp ├── 插入排序.cpp ├── 数据结构实验一.cpp └── 计数排序.cpp └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | *.o 2 | *.exe 3 | *.out 4 | .vscode 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /C/.8-15-1.c.swp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuyilei/C/2ad104930952c75f56df294e69c7b1109498a2fc/C/.8-15-1.c.swp -------------------------------------------------------------------------------- /C/10-10-1.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { int retry 4 | do { 5 | int no ; 6 | printf("请输入一个整数:\n"); 7 | scanf("%d",&no); 8 | if (no>0) 9 | puts("该整数大于零"); 10 | else if (no<0) 11 | puts("该整数小于零"); 12 | else 13 | puts("该整数为零"); 14 | printf("还想再试一次吗 yes-0,no--9"); 15 | scanf("%d",&retry); 16 | } while (retry==0); 17 | return 0; 18 | } 19 | -------------------------------------------------------------------------------- /C/10-10-2.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main{ 3 | int min,max,a,b,sum,t; 4 | puts ("请输入两个整数:"); 5 | scanf("%d%d",&a,&b); 6 | min=(ab)?a:b; 8 | sum=0; 9 | t=min; 10 | do { 11 | sum=t+sum; 12 | t=t+1; 13 | } while (t<=max&&t>=min); 14 | printf("大于等于%d小于等于%d的所有整数之和是%d\n",min,max,sum); 15 | return 0; 16 | 17 | } 18 | -------------------------------------------------------------------------------- /C/10-10-3.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { 4 | int no; 5 | printf("请输入一个整数\n"); 6 | scanf("%d"''&no); 7 | while(no>=0) 8 | printf("%d",no--); 9 | printf("\n"); 10 | return 0; 11 | } 12 | -------------------------------------------------------------------------------- /C/10-10-4.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { 4 | int a; 5 | printf("请输入一个整数"); 6 | scanf("%d",&a); 7 | while(a%2==0&&a>=2) 8 | {printf("%d",a); 9 | a=a-2;} 10 | while(a%2==1&&a>=2) 11 | {printf("%d",a-1); 12 | a=a-2;} 13 | return 0; 14 | -------------------------------------------------------------------------------- /C/10-10-5.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { int a,t=1; 4 | printf("请输入一个整数:\n"); 5 | scanf("%d",&a); 6 | while(a>=2,t*2<=a) 7 | { 8 | t=t*2; 9 | printf("&d\n",t); 10 | } return 0; 11 | } 12 | -------------------------------------------------------------------------------- /C/10-10-6.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { 4 | int a,b=1,t=1; 5 | printf("请输入一个整数:"); 6 | scanf("%d",&a); 7 | while(a>=1,b<=a ){ 8 | b=t*t; 9 | t=t+1; 10 | printf("%d",b); 11 | 12 | } 13 | return 0; 14 | } 15 | -------------------------------------------------------------------------------- /C/10-11-1.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { 4 | int a; 5 | printf("请输入一个整数:"); 6 | scanf("%d",&a); 7 | while(a>=0) 8 | printf("%d\n",a--); 9 | return 0; 10 | } 11 | -------------------------------------------------------------------------------- /C/10-11-2.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { 4 | int i=1,a; 5 | printf("请输入一个整数:"); 6 | scanf("%d",&a); 7 | while(a>=1&&a>=i) 8 | printf("%d\n\n",i++); 9 | return 0; 10 | } 11 | -------------------------------------------------------------------------------- /C/10-11-3.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { 4 | int i=1,a; 5 | printf("请输入一个整数:"); 6 | scanf("%d",&a); 7 | while(i*2 2 | int main() 3 | { 4 | int i=2,a; 5 | printf("请输入一个整数:"); 6 | scanf("%d",&a); 7 | while(i<=a) 8 | printf("%d",i); 9 | i=i+2; 10 | return 0; 11 | } 12 | -------------------------------------------------------------------------------- /C/10-11-5.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { 4 | int a ,i=2; 5 | printf("请输入一个整数:"); 6 | scanf("%d",&a); 7 | if (a%2==0) 8 | { 9 | while(i<=a) 10 | { printf("+-"); 11 | i=i+2;} 12 | } else { 13 | while(i<=a) 14 | { 15 | printf("+-"); 16 | i=i+2; 17 | } 18 | printf("+"); 19 | } return 0; 20 | } 21 | -------------------------------------------------------------------------------- /C/10-11-7.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { 4 | int no; 5 | printf("请输入一个整数:"); 6 | scanf("%d",&no); 7 | while (no>=1) 8 | { 9 | printf("*\n"); 10 | no--; 11 | } return 0; 12 | } 13 | -------------------------------------------------------------------------------- /C/10-11-8.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { int no; 4 | do 5 | {printf("请输入一个正整数:"); 6 | scanf("%d",&no); 7 | if (no<=0) 8 | puts("请不要输入小于等于零的数\a"); 9 | } while (no<=0); 10 | printf("%d的逆向显示结果是:",no); 11 | while(no>0){ 12 | printf("%d",no%10); 13 | no/=10; 14 | } return 0; 15 | } 16 | -------------------------------------------------------------------------------- /C/10-11-9.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { 4 | int no,i=0; 5 | printf("请输入一个整数:"); 6 | scanf("%d",&no); 7 | while(no>0){ 8 | no/=10; 9 | i++; 10 | } 11 | printf("该整数的位数是:%d",i); 12 | return 0; 13 | } 14 | -------------------------------------------------------------------------------- /C/10-12-1.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { 4 | int no,i,sum=0; 5 | printf("请输入一个整数:"); 6 | scanf("%d",&no); 7 | for (i=1;i<=no;i++) 8 | sum=sum+i; 9 | printf("1到%d的和为%d",no,sum); 10 | return 0; 11 | } 12 | -------------------------------------------------------------------------------- /C/10-12-2.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { 4 | int no,i,t,q; 5 | printf("请输入一个整数:"); 6 | scanf("%d",&no); 7 | t=no%10 ;q=no/10; 8 | if (t==0) 9 | { 10 | for(;q>0;q--) 11 | printf("1234567890"); 12 | } 13 | else { 14 | for (;q>0;q--) 15 | printf("1234567890"); 16 | for (i=1;i<9&&t>0;i++&&t--) 17 | printf("%d",i); 18 | 19 | } 20 | return 0; 21 | } 22 | -------------------------------------------------------------------------------- /C/10-12-3.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { 4 | int start,end,no,a; 5 | printf("开始数值:\n"); 6 | scanf("%d",&start); 7 | printf("结束数值:\n"); 8 | scanf("%d",&end); 9 | printf("间隔数值:\n"); 10 | scanf("%d",&no); 11 | for(a=start;a<=end;a+=no) 12 | printf("%dcm\n",a); 13 | return 0; 14 | } 15 | -------------------------------------------------------------------------------- /C/10-12-4.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { 4 | int i=1,a; 5 | printf("请输入一个整数:"); 6 | scanf("%d",&a); 7 | for(;i<=a;i+=2) 8 | printf("%d\n",i); 9 | return 0; 10 | } 11 | -------------------------------------------------------------------------------- /C/10-12-5.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { 4 | int no,i; 5 | printf("请输入一个整数:\n"); 6 | scanf("%d",&no); 7 | for(i=1;i<=no;i++) 8 | printf("%d的二次方是%d\n",i,i*i); 9 | return 0; 10 | 11 | } 12 | -------------------------------------------------------------------------------- /C/10-12-6.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { 4 | int no,y,s,i; 5 | printf("请输入一个整数:"); 6 | scanf("%d",&no); 7 | y=no%5; 8 | s=no/5; 9 | if (y==0) 10 | { 11 | for(i=1;i<=s;i++) 12 | printf("*****\n"); 13 | } else 14 | { 15 | for(i=1;i<=s;i++) 16 | printf("*****\n"); 17 | for(;y>0;y--) 18 | printf("*"); 19 | } 20 | return 0; 21 | 22 | } 23 | -------------------------------------------------------------------------------- /C/10-12-7.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { 4 | int no,i,a; 5 | printf("请输入一个整数:\n"); 6 | scanf("%d",&no); 7 | for(i=1&&a=1;i<=no;i++) 8 | { 9 | if(no%i==0) 10 | printf("%d\n",i); 11 | a++; 12 | printf("共有%d个约数。\n",a); 13 | } 14 | return 0; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /C/10-12-8.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { 4 | int i,j; 5 | for(i=1;i<=9;i++){ 6 | for(j=1;j<=9;j++) 7 | printf("%3d",i*j); 8 | putchar('\n'); 9 | } 10 | return 0; 11 | } 12 | -------------------------------------------------------------------------------- /C/10-13-1.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { 4 | int i,j,q; 5 | for (i=1;i<=9;i++) 6 | { 7 | printf("%3d",&i); 8 | for (j=1;j<=9;j++) 9 | { 10 | printf("%3d",j); 11 | printf("%3d",i*j); 12 | putchar('\n'); 13 | } 14 | } 15 | return 0; 16 | } 17 | -------------------------------------------------------------------------------- /C/10-13-2.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { 4 | int i,j,no; 5 | printf("生成一个正方体\n正方体有几层:\n"); 6 | scanf("%d",&no); 7 | for(i=1;i<=no;i++) 8 | { 9 | for(j=1;j<=no;j++) 10 | printf("*"); 11 | putchar('\n'); 12 | } 13 | return 0; 14 | } 15 | -------------------------------------------------------------------------------- /C/10-13-3.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { 4 | int a,b,i,j,min,max; 5 | printf("让我们做一个长方形吧\n"); 6 | printf("一边:\n"); 7 | scanf("%d",&j); 8 | printf("另一边:\n"); 9 | scanf("%d",&i); 10 | if (i>j) 11 | { 12 | max=i;min=j; 13 | } else { 14 | max=j;min=i; 15 | } 16 | for (a=1;a<=min;a++) 17 | { 18 | for(b=1;b<=max;b++) 19 | { 20 | printf("*"); 21 | } 22 | printf("\n"); 23 | } return 0; 24 | } 25 | -------------------------------------------------------------------------------- /C/10-13-4.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { 4 | int i,j,k; 5 | printf(" \t1\t2\t3\t4\t5\t6\t7\t8\t9\n"); 6 | printf("--------------------------------------------------------------------------\n"); 7 | for (j=1;j<=9;j=j+1) 8 | { 9 | printf("%d.\t",j); 10 | for (i=1;i<=9;i=i+1) 11 | { 12 | k=i*j; 13 | printf("%d\t",k); 14 | } 15 | printf("\n"); 16 | } 17 | return 0; 18 | } 19 | -------------------------------------------------------------------------------- /C/10-13-5.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { 4 | int i,j,no; 5 | printf("让我们来做一个等腰直角三角形(左上)吧!\n"); 6 | printf("边长:\n"); 7 | scanf("%d",&no); 8 | for(i=1;i<=no;i++) 9 | { 10 | for(j=1;j<=no-i+1;j++) 11 | { 12 | printf("*"); 13 | } printf("\n"); 14 | } return 0; 15 | } 16 | -------------------------------------------------------------------------------- /C/10-13-6.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { 4 | int i,j,no; 5 | printf("让我们做一个等腰直角三角形(右下)!!\n"); 6 | scanf("%d",&no); 7 | for (i=1;i<=no;i++) 8 | { 9 | for (j=1;j<=no-i;j++) 10 | printf(" "); 11 | for (j=1;j<=i;j++) 12 | printf("*"); 13 | 14 | printf("\n"); 15 | } 16 | return 0; 17 | } 18 | -------------------------------------------------------------------------------- /C/10-13-7.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { 4 | int a,i,no,j; 5 | printf("让我们来画一个金字塔吧!!!\n"); 6 | printf("金字塔有几层: \n"); 7 | scanf("%d",&no); 8 | for (i=1;i<=no;i++) 9 | { 10 | for (j=1;j<=no-1;j++) 11 | printf(" "); 12 | for(a=1;a<=2*i-1;a++) 13 | printf("*"); 14 | printf("\n"); 15 | } 16 | return 0; 17 | } 18 | -------------------------------------------------------------------------------- /C/10-14-1.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { 4 | int no, i,j,a; 5 | printf("让我们来画一个向下的金字塔!\n金字塔有几层;\n"); 6 | scanf("%d",&no); 7 | for(i=1;i<=no;i++) 8 | { 9 | for (j=1;j<=i;j++) 10 | printf(" "); 11 | for(a=1;a<=2*(no-i+1)-1;a++) 12 | printf("%d",i%10); 13 | printf("\n"); 14 | } return 0; 15 | } 16 | -------------------------------------------------------------------------------- /C/10-14-2.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { 4 | int x[5]; 5 | int j; 6 | for(j=0;j<=4;j++) 7 | x[j]=j 8 | printf("x[%d]=%d\n",j,j); 9 | return 0; 10 | } 11 | -------------------------------------------------------------------------------- /C/10-14-3.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { 4 | int x[5]; 5 | int i; 6 | for(i=0;i<=4,i++) 7 | { 8 | x[i]=5-i; 9 | printf("x[%d]=%d",i,x[i]); 10 | } 11 | return 0; 12 | } 13 | -------------------------------------------------------------------------------- /C/10-14-4.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { 4 | int i; 5 | int v[5]={5,4,3,2,1,}; 6 | for(i=0;i<=4;i++) 7 | { 8 | printf("v[%d]=%d",i,v[%d]); 9 | } 10 | return 0; 11 | } 12 | -------------------------------------------------------------------------------- /C/10-14-5.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { 4 | int i; 5 | int a[5]={32,55,67,34,53,}; 6 | int b[5]; 7 | for(i=0;i<=4;i++) 8 | b[i]=a[4-i]; 9 | puts(" a b"); 10 | puts(" -----"); 11 | for(i=0;i<=4;i++) 12 | printf("%3d%3d\n",a[i],b[i]); 13 | return 0; 14 | } 15 | -------------------------------------------------------------------------------- /C/10-14-6.c: -------------------------------------------------------------------------------- 1 | #include 2 | #define number 7 3 | int main() 4 | { 5 | int i; 6 | int x[number]; 7 | for(i=0;i<=number-1;i++) 8 | { 9 | printf("x[%d]:",i); 10 | scanf("%d",&x[i]); 11 | } 12 | printf("倒序排列了!!!\n"); 13 | for (i=0;i<=number;i++) 14 | { 15 | x[i]=x[i]+x[number-i]; 16 | x[number-i]=x[i]-x[number-i]; 17 | x[i]=x[i]-x[number-i]; 18 | printf("x[%d]=%d\n",i,x[i]); 19 | } 20 | return 0; 21 | } 22 | -------------------------------------------------------------------------------- /C/10-14-7.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | #define number 5 4 | { 5 | int i; 6 | int tenus[number]; 7 | int min,max; 8 | printf("请输入%d名学生的成绩:\n",number); 9 | for (i=0;i<=number-1;i++){ 10 | printf("%d号:",i+1); 11 | scanf("%d",&tenus[i]); 12 | } 13 | min=max=tenus[0]; 14 | for (i=0;i<=number-1;i++){ 15 | if (min>tenus[i]) min=tenus[i]; 16 | if (max 2 | #define number 80 3 | int main() 4 | { 5 | int i,j; 6 | int num; 7 | int tenus[number]={0}; 8 | int bunqu[11]={0}; 9 | printf("请输入学生人数:\n"); 10 | do{ 11 | scanf("%d",&num); 12 | if(num>number||num<=0){ 13 | printf("请输入从1到%d的数!!!\n",number); 14 | } 15 | } while(num>number||num<=0); 16 | printf("请输入%d人的分数\n",num); 17 | for(i=0;i<=num-1;i++){ 18 | printf("%d号:",i+1); 19 | do{ 20 | scanf("%d",&tenus[i]); 21 | if(tenus[i]>100||tenus[i]<0){ 22 | printf("请输入1到100的数\n"); 23 | } 24 | bunqu[tenus[i]/10]++; 25 | } while(tenus[i]>100||tenus[i]<0); 26 | }puts("\n----分布图----"); 27 | for(i=0;i<=9;i++){ 28 | printf("%3d~%3d:",i*9,10+i*9); 29 | for(j=0;j 2 | int main() 3 | { 4 | int tenus[6][2]={0}; 5 | int sum[2]={0}; 6 | int aver[2]={0}; 7 | int every[6]={0}; 8 | int i,j; 9 | printf("请输入六名学生的语文成绩:\n"); 10 | for(i=0;i<6;i++){ 11 | scanf("%d",&tenus[i][0]); 12 | sum[0]+=tenus[i][0]; 13 | } 14 | aver[0]=sum[0]/6; 15 | printf("请输入六名学生的数学成绩:\n"); 16 | for(i=0;i<6;i++){ 17 | scanf("%d",&tenus[i][1]); 18 | sum[1]+=tenus[i][1]; 19 | } 20 | aver[1]=sum[1]/6; 21 | for(j=0;j<6;j++){ 22 | for(i=0;i<2;i++){ 23 | every[j]+=tenus[j][i]; 24 | } 25 | } 26 | printf("各个学生的总分: \n"); 27 | for(j=0;j<=5;j++){ 28 | printf("%d\n",every[j]); 29 | } 30 | printf("各个科目的总分和平均分:\n"); 31 | for(i=0;i<2;i++){ 32 | printf("%d %d\n",sum[i],aver[i]); 33 | } 34 | return 0; 35 | 36 | } 37 | -------------------------------------------------------------------------------- /C/10-15-3.c: -------------------------------------------------------------------------------- 1 | #include 2 | #define size 5 3 | int main() 4 | { 5 | int i,j; 6 | int sum; 7 | int a[size]={0}; 8 | int b[size]={1,2,3}; 9 | int c[2][3]={ 10 | {11,22,33}, 11 | {44,55,66}, 12 | }; 13 | for(i=0;i 2 | int min2(int a,int b){ 3 | return(a 2 | int max3(int a,int b,int c){ 3 | int max=a; 4 | if (a 2 | int sump (int n){ 3 | int i,sum; 4 | for(i=1;i<=n;i++){ 5 | sum+=i; 6 | } 7 | return sum; 8 | } 9 | int main(){ 10 | int no; 11 | printf("请输入一个整数:\n"); 12 | scanf("%d",&no); 13 | printf("%d",sump(no)); 14 | return 0; 15 | } 16 | -------------------------------------------------------------------------------- /C/10-16-3.c: -------------------------------------------------------------------------------- 1 | #include 2 | void alert (int n){ 3 | while n-->0; 4 | printf("\a"); 5 | } 6 | int main(){ 7 | int no ; 8 | printf("请输入一个数字:\n"); 9 | scanf("%d",&no); 10 | printf("%d",alert(no)); 11 | return 0; 12 | } 13 | -------------------------------------------------------------------------------- /C/10-16-4.c: -------------------------------------------------------------------------------- 1 | #include 2 | void hello(void){ 3 | printf("hello!!\n"); 4 | } 5 | int main(){ 6 | hello(); 7 | return 0; 8 | } 9 | -------------------------------------------------------------------------------- /C/10-17-1.c: -------------------------------------------------------------------------------- 1 | #include 2 | #define number 5 3 | int max_of(int v[],int n){ 4 | int i; 5 | int max_of=v[0]; 6 | for(i=1;imax) 8 | max=v[i]; 9 | return max; 10 | } 11 | } 12 | int main(void){ 13 | int i; 14 | int eng[number]; 15 | int mat[number]; 16 | int max_e,max_m; 17 | printf("请输入%d名学生的分数\n",number); 18 | for(i=0;i 2 | int min_of(int v[],int n){ 3 | int i; 4 | int min=0; 5 | for(i=0;i 2 | void rev_intrary(int v[],int n){ 3 | int i; 4 | int q[n]; 5 | for(i=0;i 2 | void intrary_rcpy(int v1[],const int v2[],int n){ 3 | int i; 4 | for(i=0;i 2 | #define number 5 3 | #define failed -1 4 | int search(const int v[],int key, int n){ 5 | int i=1; 6 | whlie(1){ 7 | if (i==n) 8 | return failed; 9 | if (v[i]==key) 10 | return i; 11 | i++; 12 | } 13 | } 14 | int main(){ 15 | int i,ky,idx; 16 | int vx[number] 17 | for(i=0;i 2 | int main(){ 3 | int a,b; 4 | printf("输入a和b的值\n"); 5 | scanf("%d%d",&a,&b); 6 | printf("%d %d %d",a+b,a-b,a*b); 7 | return 0; 8 | } 9 | -------------------------------------------------------------------------------- /C/10-18-3.c: -------------------------------------------------------------------------------- 1 | #include 2 | #define number 5 3 | #define failed -1 4 | int search(int v[],int key,int n){ 5 | int i=0; 6 | v[n]=key; 7 | while(1){ 8 | if (v[i]=key) 9 | break; 10 | i++; 11 | } 12 | return (i 2 | #define number 5 3 | #define failed -1 4 | int search(int v[],int key,int n){ 5 | int i=0; 6 | v[n]=key; 7 | for(i=0;key!=v[i];i++) 8 | ; 9 | return (i 2 | int search_idx(const int v[], idx[],int key,int n){ 3 | int i=0,q=0; 4 | printf("{"); 5 | for(i=0;i 2 | void mat (int a[3][4][3] ){ 3 | int i,j; 4 | for(i=0;i<4;i++){ 5 | for(j=0;j<3;j++){ 6 | a[0][i][j]=a[1][i][j]+a[2][i][j]; 7 | } 8 | } 9 | } 10 | void mat_printf ( const int a[3][4][3]){ 11 | int i,j; 12 | for(i=0;i<4;i++){ 13 | for(j=0;j<3;j++){ 14 | printf("第一次:%d\n",a[1][i][j]); 15 | printf("第二次:%d\n",a[2][i][j]); 16 | printf("总分:%d\n",a[0][i][j]); 17 | } 18 | } 19 | } 20 | int main(){ 21 | int tenus[3][4][3]; 22 | tenus[1][4][3]={{32,4,32},{32,45,65},{32,546,54},{32,23,22}}; 23 | tenus[2][4][3]={{32,43,21},{32,43,32},{32,43,43},{54,32,43}}; 24 | mat_printf(tenus); 25 | return 0; 26 | } 27 | -------------------------------------------------------------------------------- /C/10-19-2.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main(){ 3 | int a,b; 4 | printf("请输入a和b的值:\n"); 5 | scanf("%d%d",&a,&b); 6 | printf("%d %d %d %d",a+b,a-b,a*b,a/b); 7 | return 0; 8 | } 9 | -------------------------------------------------------------------------------- /C/10-20-1.c: -------------------------------------------------------------------------------- 1 | #include 2 | void func(void){ 3 | static int d[3][2]={{0.0,0.0,0.0},{0.0,0.0,0.0}}; 4 | int i,j; 5 | for(i=0;i<3;i++){ 6 | for(j=0;j<2;j++){ 7 | printf("%d\n",d[i][j]); 8 | } 9 | } 10 | } 11 | int main(){ 12 | func(); 13 | return 0; 14 | } 15 | -------------------------------------------------------------------------------- /C/10-20-2.c: -------------------------------------------------------------------------------- 1 | #include 2 | void put_count(int n){ 3 | int i; 4 | for(i=0;i 2 | int main(){ 3 | int n; 4 | printf("sizeof 1=%d",sizeof 1); 5 | printf("sizeof +1=%d",sizeof +1); 6 | printf("sizeof -1=%d",sizeof -1); 7 | printf("sizeof(unsigned)-1=%d",sizeof(unsigned)-1); 8 | printf("sizeof(double)-1=%d",sizeof(double)-1); 9 | printf("sizeof((double)-1)=%d",sizeof((double)-1)); 10 | printf("sizeof n+2=%d",sizeof n+2); 11 | printf("sizeof (n+2)=%d",sizeof (n+2)); 12 | printf("sizeof (n+2.0)=%d",sizeof (n+2.0)); 13 | return 0; 14 | } 15 | -------------------------------------------------------------------------------- /C/10-21-2.c: -------------------------------------------------------------------------------- 1 | #include 2 | int count_bits(unsigned x){ 3 | int bits=0; 4 | while(x){ 5 | if (x&1U) 6 | bits++; 7 | x>>=1; 8 | } 9 | return bits; 10 | } 11 | int int_bits(void){ 12 | return count_bits(~0U); 13 | } 14 | void print_bits(unsigned x){ 15 | int i; 16 | for(i=int_bits()-1;i>=0;i--){ 17 | putchar(((x>>i)&1U)?'1':'0'); 18 | } 19 | } 20 | int main(){ 21 | unsigned a,b; 22 | printf("请输入两个非负数:\n"); 23 | printf("a:\n"); 24 | scanf("%u",&a); 25 | printf("b:\n"); 26 | scanf("%u",&b); 27 | printf("\na="); 28 | print_bits(a); 29 | printf("\nb="); 30 | print_bits(b); 31 | printf("\na&b="); 32 | print_bits(a&b); 33 | printf("\na|b"); 34 | print_bits(a|b); 35 | printf("\na^b="); 36 | print_bits(a^b); 37 | printf("\n~a"); 38 | print_bits(~a); 39 | printf("\n~b"); 40 | print_bits(~b); 41 | printf("\n"); 42 | return 0; 43 | } 44 | -------------------------------------------------------------------------------- /C/10-22-1.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | int count_bits(unsigned int x) { 4 | // 统计无符号整数x的位数 5 | int bits=0; 6 | while(x) { 7 | if (x & 1U){ 8 | bits++; 9 | } 10 | x >> = 1; 11 | } 12 | return bits; 13 | } 14 | 15 | void print_bits(unsigned int x){ 16 | /* 把x*/ 17 | int i; 18 | for(i=count_bits(~0U)-1; i>=0; i--){ 19 | printf( 20 | ((x >> i)&1U)?"1":"0" 21 | ); 22 | } 23 | } 24 | 25 | void rrotate_bits (unsigned x, int n){ 26 | print_bits(x >> n); 27 | } 28 | 29 | void chu_bits(unsigned x,int n){ 30 | print_bits(x/n); 31 | } 32 | 33 | int main() { 34 | unsigned no; 35 | int i, j, q, e; 36 | do{ 37 | printf("请输入一个小于%u的数\n", ~0U); 38 | scanf("%u", &no); 39 | }while(no >= ~0U); 40 | printf("向右位移几位?\n"); 41 | scanf("%d", &j); 42 | for(q=0, e=1; q 2 | void print_bits (unsigned x){ 3 | int i,j; 4 | unsigned q=~0U; 5 | for(i=0;q&1U;i++) 6 | q>>=1; 7 | for(j=i-1;j>=0;j--) 8 | printf(((x>>j)&1U)?"1":"0"); 9 | } 10 | void rrotate (unsigned x,int n){ 11 | print_bits(x>>no); 12 | } 13 | int main(){ 14 | unsigned x,n; 15 | printf("非负整数:\n"); 16 | scanf("%u",&x); 17 | printf("位移位数:\n"); 18 | scanf("%u",&n); 19 | rrotate(x,n); 20 | return 0; 21 | 22 | } 23 | -------------------------------------------------------------------------------- /C/10-22-3.c: -------------------------------------------------------------------------------- 1 | #include 2 | void print_bits (unsigned x){ 3 | int i,j; 4 | unsigned q=~0U; 5 | for(i=0;q&1U;i++) 6 | q>>=1; 7 | for(j=i-1;j>=0;j--) 8 | printf(((x>>j)&1U)?"1":"0"); 9 | } 10 | int main() { 11 | unsigned int x; 12 | int pos; 13 | scanf("%d %d", &x, &pos); 14 | printf("%d\n", (1<<(pos-1))|x); 15 | print_bits((1<<(pos-1))|x); 16 | return 0; 17 | } 18 | -------------------------------------------------------------------------------- /C/10-22-33.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuyilei/C/2ad104930952c75f56df294e69c7b1109498a2fc/C/10-22-33.c -------------------------------------------------------------------------------- /C/10-22-4.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuyilei/C/2ad104930952c75f56df294e69c7b1109498a2fc/C/10-22-4.c -------------------------------------------------------------------------------- /C/10-24-1.c: -------------------------------------------------------------------------------- 1 | ha'h'h 2 | -------------------------------------------------------------------------------- /C/10-25-1.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main(){ 3 | float a; 4 | double b; 5 | long double c; 6 | printf("输入三个数的值:\n"); 7 | printf("a: \n"); 8 | scanf("%f",&a); 9 | printf("b: \n"); 10 | scanf("%f",&b); 11 | printf("c:\n"); 12 | scanf("%lf",&c); 13 | printf("%f %f %lf",a,b,c); 14 | return 0; 15 | } 16 | -------------------------------------------------------------------------------- /C/10-25-2.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main(){ 3 | printf("sizeof double=%d",sizeof(double)); 4 | printf("sizeof float=%d",sizeof(float)); 5 | printf("sizeof long double=%d",sizeof(long double)); 6 | return 0; 7 | } 8 | -------------------------------------------------------------------------------- /C/10-25-3.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int main(){ 4 | float s; 5 | long double n; 6 | printf("输入正方形的面积:\n"); 7 | scanf("%f",&s); 8 | n=sqrt(s); 9 | printf("%lf",&n); 10 | return 0; 11 | } 12 | /*为什么,把面积设为double,把边长设为 long double,不可以呢*/ 13 | -------------------------------------------------------------------------------- /C/10-25-5.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main(){ 3 | int i; 4 | float x; 5 | float n=0.0; 6 | for(i=1;i<=100;i++){ 7 | x=i/100.0; 8 | n=n+0.01; 9 | printf("n=%f\n",n); 10 | printf("x=%f\n",x); 11 | 12 | } 13 | return 0; 14 | } 15 | /*为什么i必须除以100.0,而不是100; 16 | 注意:判断循环的基准使用的变量应该是整数,而不是浮点数,因为浮点数,可能,会某一位发生数据丢失*/ 17 | -------------------------------------------------------------------------------- /C/10-25-6.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main(){ 3 | int i; 4 | float x,sum1=0.0,sum2=0.0; 5 | float n=0.0; 6 | for(i=1;i<=100;i++){ 7 | x=i/100.0; 8 | sum1=sum1+x; 9 | n=n+0.01; 10 | sum2=sum2+n; 11 | printf("x=%f sum1=%f\n",x,sum1); 12 | printf("n=%f sum2=%f\n",n,sum2); 13 | 14 | } 15 | return 0; 16 | } 17 | -------------------------------------------------------------------------------- /C/10-25-9.c: -------------------------------------------------------------------------------- 1 | #include 2 | #define number 5 3 | 4 | void bsort(int a[number],int n){ 5 | int i,j; 6 | for(i=0;ii;j--){ 8 | if (a[j-1] < a[j]){ 9 | a[j]=a[j]+a[j-1]; 10 | a[j-1]=a[j]-a[j-1]; 11 | a[j]=a[j]-a[j-1]; 12 | } 13 | } 14 | } 15 | } 16 | 17 | int main(){ 18 | int i; 19 | int height [number]; 20 | 21 | printf("请输入%d人的身高:\n",number); 22 | for(i=0;i 2 | 3 | int factorial (int n){ 4 | int i; 5 | int q=1; 6 | for(i=1;i<=n;i++){ 7 | q=q*i; 8 | } 9 | return q; 10 | } 11 | 12 | int main(){ 13 | int n; 14 | printf("请输入一个整数n:\n"); 15 | scanf("%d",&n); 16 | printf("n的阶乘是:%d",factorial(n)); 17 | return 0; 18 | } 19 | -------------------------------------------------------------------------------- /C/10-26-2.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main(){ 3 | int i=0,ch; 4 | ch = getchar(); 5 | while(ch ){ 6 | switch (ch){ 7 | case :i++;break; 8 | } 9 | } 10 | printf("共输出%d个换行符\n",i); 11 | return 0; 12 | } 13 | -------------------------------------------------------------------------------- /C/10-26-3.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | int main(){ 4 | int ch; 5 | while ((ch = getchar()) != EOF){ 6 | putchar(ch); 7 | } 8 | return 0; 9 | } 10 | -------------------------------------------------------------------------------- /C/10-26-4.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main(){ 3 | int i,j,ch; 4 | int cnt[10]={0}; 5 | 6 | while((ch = getchar())!=EOF){ 7 | if (ch >='0'&& ch<='9'){ 8 | cnt[ch - '0']++; 9 | } 10 | } 11 | puts("数字出现的次数:"); 12 | for(i=0;i<10;i++){ 13 | printf("%d出现的次数是:%d ",i,cnt[i]); 14 | for(j=0;j 4 | int gcd (int x,int y){ 5 | int i ; 6 | while (y){ 7 | i=x%y; 8 | x=y; 9 | y=i; 10 | } 11 | return x; 12 | } 13 | 14 | int main (){ 15 | int x,y, r; 16 | printf("输入两个正整数: \n"); 17 | scanf("%d %d",&x,&y); 18 | int a = (xy)?y:x; 20 | printf("%d 和%d 的最大公约数为:",x,y); 21 | int r = gcd(a, b); 22 | printf("%d", r); 23 | return 0; 24 | } 25 | -------------------------------------------------------------------------------- /C/10-27-2.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main(){ 3 | char str[] = "ABC\0EF"; 4 | printf("字符串str为\"%s\"。\n",str); 5 | return 0; 6 | } 7 | /* 只会显示ABC*/ 8 | -------------------------------------------------------------------------------- /C/10-27-3.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main(){ 3 | char s[] = "ABC"; 4 | int i; 5 | for(i=0;i<4;i++){ 6 | s[i]=""; 7 | } 8 | printf ("%s",s); 9 | return 0; 10 | 11 | } 12 | -------------------------------------------------------------------------------- /C/10-28-2.c: -------------------------------------------------------------------------------- 1 | #include 2 | enum month {January ,February ,March, April, May, June ,July, August ,September, October, November ,December}; 3 | int main(){ 4 | int month; 5 | printf("0~11的值:\n"); 6 | scanf("%d",&month); 7 | printf("你选择了:\n"); 8 | switch (month) { 9 | case 0: printf("一月\n");break; 10 | case 1: printf("二月\n");break; 11 | case 2: printf("三月\n");break; 12 | case 3: printf("四月\n");break; 13 | case 4: printf("五月\n");break; 14 | case 5: printf("六月\n");break; 15 | case 6: printf("七月\n");break; 16 | case 7: printf("八月\n");break; 17 | case 8: printf("九月\n");break; 18 | case 9: printf("十月\n");break; 19 | case 10:printf("十一月\n");break; 20 | case 11:printf("十二月\n");break; 21 | } 22 | return 0; 23 | } 24 | -------------------------------------------------------------------------------- /C/10-28-4.c: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | 4 | int count_bits(unsigned int x) { 5 | int bits=0; 6 | while(x) { 7 | if (x & 1U){ 8 | bits++; 9 | } 10 | x >>= 1; 11 | } 12 | return bits; 13 | } 14 | 15 | void print_bits(unsigned int x){ 16 | /* 把x*/ 17 | int i; 18 | for(i=count_bits(~0U)-1; i>=0; i--){ 19 | printf( 20 | ((x >> i)&1U)?"1":"0" 21 | ); 22 | } 23 | } 24 | 25 | int main(){ 26 | unsigned i; 27 | printf("输入一个整数:\n"); 28 | scanf("%u",&i); 29 | print_bits (i); 30 | return 0; 31 | } 32 | -------------------------------------------------------------------------------- /C/10-28-5.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main(){ 3 | int i; 4 | char s[3][128]; 5 | for(i=0;i<3;i++){ 6 | printf("s[%d]:\n",i); 7 | scanf("%s",s[i]); 8 | if (s[i]=='$$$$$$') 9 | break; 10 | 11 | } 12 | for(i=0;i<3;i++){ 13 | if (s[i]=='$$$$$$') 14 | break; 15 | printf("s[%d]=%s",i,s[i]); 16 | 17 | } 18 | return 0; 19 | } 20 | -------------------------------------------------------------------------------- /C/10-28-6.c: -------------------------------------------------------------------------------- 1 | #include 2 | #define number 5 3 | void null_string(char s[]){ 4 | int i; 5 | for(i=0;i 2 | int main(){ 3 | int i,ch; 4 | int cnt[10]={0}; 5 | 6 | while((ch = getchar ()) != EOF) 7 | if (ch >='0' && ch<='9'){ 8 | cnt[ch-'0']++; 9 | } 10 | printf("数字出现的次数:\n"); 11 | for(i=0;i<=9;i++){ 12 | printf("%d:",i); 13 | for(;cnt[i]>0;cnt[i]--) 14 | printf("*"); 15 | printf("\n"); 16 | } 17 | return 0; 18 | } 19 | /*用星星的个数来表示出现的数字的个数*/ 20 | -------------------------------------------------------------------------------- /C/10-29-2.c: -------------------------------------------------------------------------------- 1 | #include 2 | #define number 8 3 | int main(){ 4 | int i; 5 | char s [number] [128]={0}; 6 | for(i=0;i 2 | int main(){ 3 | printf("I am so sad today,and even want to die .Why am I so lonely? I want to cry. I am missing my family.I want to die.And nobody cares.\n"); 4 | return 0; 5 | } 6 | -------------------------------------------------------------------------------- /C/10-30-3.c: -------------------------------------------------------------------------------- 1 | /*判断字符串的长度*/ 2 | #include 3 | int str_length(const char s[]){ 4 | int len=0; 5 | while (s[len]) 6 | len++; 7 | return len; 8 | 9 | } 10 | int main(){ 11 | char s[128]; 12 | printf("请输入字符串 \n"); 13 | scanf("%s",s); 14 | printf("字符串\"%s\"的长度是%d",s,str_length(s)); 15 | return 0; 16 | } 17 | -------------------------------------------------------------------------------- /C/10-30-4.c: -------------------------------------------------------------------------------- 1 | #include 2 | int str_char(const char s[], int c){ 3 | int i; 4 | for(i=0;s[i];i++){ 5 | if ( s[i]==c+48) 6 | break; 7 | } 8 | return i+1; 9 | } 10 | int main(){ 11 | char s[128]; 12 | int c; 13 | printf("输入一个字符串\n"); 14 | scanf("%s",s); 15 | printf("输入一个大于等于0且小于等于9的数字\n"); 16 | scanf("%d",&c); 17 | printf("%d出现的字符串的第%d位\n",c,str_char(s,c)); 18 | return 0; 19 | } 20 | /*注意数字与字符之间的区别与转换,不要搞混,0-->48,要学习数字与字符之间的转换*/ 21 | -------------------------------------------------------------------------------- /C/10-30-5.c: -------------------------------------------------------------------------------- 1 | #include 2 | int str_chnum(char s[],int c){ 3 | int i; 4 | int q=0; 5 | for(i=0;s[i];i++){ 6 | if (s[i]==c+48) 7 | q++; 8 | } 9 | return q; 10 | } 11 | int main(){ 12 | char s[128]; 13 | int c; 14 | printf("请输入一个字符串\n"); 15 | scanf("%s",s); 16 | printf("请输入一个大于等于0小于等于9的数字\n"); 17 | scanf("%d",&c); 18 | printf("字符串中%d出现的次数是:%d",c,str_chnum(s,c)); 19 | return 0; 20 | } 21 | /*统计字符串中的某字符出现的次数*/ 22 | -------------------------------------------------------------------------------- /C/10-30-7.c: -------------------------------------------------------------------------------- 1 | #include 2 | void put_stringn(const char s[], int n){ 3 | int i; 4 | for(i=0;i 2 | void del_digit (char s[]){ 3 | int i; 4 | for(i=0;s[i];i++){ 5 | if(s[i]>=65) 6 | putchar (s[i]); 7 | } 8 | } 9 | int main(){ 10 | int i; 11 | char s[128]; 12 | printf("输入一个字符串\n"); 13 | scanf("%s",s); 14 | printf("删去数字字符\n"); 15 | del_digit(s); 16 | return 0; 17 | } 18 | -------------------------------------------------------------------------------- /C/10-31-1.c: -------------------------------------------------------------------------------- 1 | /*用指针进行加减运算*/ 2 | #include 3 | void sum_diff(int i ,int j,int *sum,int *diff){ 4 | *sum=j+i; 5 | *diff=(i>j)?(i-j):(j-i); 6 | } 7 | int main(){ 8 | int i,j; 9 | int sum=0,diff=0; 10 | printf("请输入两个整数\n"); 11 | scanf("%d %d",&i,&j); 12 | sum_diff(i,j,&sum,&diff); 13 | printf("两数之和是%d,两数之差是%d",sum,diff); 14 | return 0; 15 | } 16 | -------------------------------------------------------------------------------- /C/10-31-2.c: -------------------------------------------------------------------------------- 1 | #include 2 | void adjust_point(int *n){ 3 | if (*n<0) 4 | *n=0; 5 | else if (*n>100) 6 | *n=100; 7 | else 8 | *n=*n; 9 | } 10 | int main(){ 11 | int n; 12 | printf("请输入一个整数\n"); 13 | scanf("%d",&n); 14 | adjust_point(&n); 15 | printf("调整之后的值是%d",n); 16 | return 0; 17 | } 18 | -------------------------------------------------------------------------------- /C/10-31-3.c: -------------------------------------------------------------------------------- 1 | /*输入一个日期将他改为后一天要考虑闰年的情况*/ 2 | #include 3 | void increase_date(int *y,int *m,int *d){ 4 | if (*y % 4==0,*m==2,*d==28){ 5 | if(*y % 100==0){ 6 | if (*y % 400==0) 7 | *d=29; 8 | else { 9 | *m=3; 10 | *d=1; 11 | } 12 | } 13 | else 14 | *d=29; 15 | } 16 | else if (*d==30){ 17 | switch (*m){ 18 | case 4 : 19 | case 6 : 20 | case 9 : 21 | case 11 : *m=*m+1; *d=1; break; 22 | } 23 | } 24 | else if (*d==31){ 25 | switch(*m){ 26 | case 1: 27 | case 3: 28 | case 5: 29 | case 7: 30 | case 8: 31 | case 10: *m=*m+1;*d=1; break; 32 | case 12: *y=*y+1; *m=1;*d=1; break; 33 | } 34 | } 35 | else { 36 | *d =*d+1; 37 | } 38 | 39 | } 40 | 41 | int main(){ 42 | int y,m,d; 43 | printf("请输入一个日期:\n"); 44 | printf("年:\n"); 45 | scanf("%d",&y); 46 | printf("月:\n"); 47 | scanf("%d",&m); 48 | printf("日:\n"); 49 | scanf("%d",&d); 50 | increase_date(&y,&m,&d); 51 | printf("后一天是%d年%d月%d日",y,m,d); 52 | return 0; 53 | } 54 | -------------------------------------------------------------------------------- /C/10-31-4.c: -------------------------------------------------------------------------------- 1 | /*将3个数进行升序排列*/ 2 | #include 3 | void sort3 (int *n1,int *n2,int *n3){ 4 | if (*n1>*n2) 5 | swap(n1,n2); 6 | if (*n2>*n3) 7 | swap(n2,n3); 8 | if (*n1>*n3) 9 | swap(n1,n2); 10 | if (*n1>*n2) 11 | swap(n1,n2); 12 | } 13 | void swap(int *i,int *j){ 14 | *i=*i+*j; 15 | *j=*i-*j; 16 | *i=*i-*j; 17 | } 18 | int main(){ 19 | int n1,n2,n3; 20 | printf("请输入三个整数\n"); 21 | scanf("%d %d %d "&n1,&n2,&n3); 22 | sort3(&n1,&n2,&n3); 23 | printf("升序排列:%d %d %d",n1,n2,n3); 24 | return 0; 25 | } 26 | /*未解:为什么每次输入4个数时才显示结果,而且怎样比较次数比较少?*/ 27 | -------------------------------------------------------------------------------- /C/10-8-3.c: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | int main () 4 | { 5 | int a; 6 | printf("请输入一个月份的数值:\n"); 7 | scanf("%d",&a); 8 | if (a>=3 && a<=5) 9 | puts("该月份属于春季"); 10 | else if (a>=6 && a<=8) 11 | puts("该月份属于夏季"); 12 | else if(a>=9 && a<=11) 13 | puts("该月份属于秋季"); 14 | else if (a==12 || a==1 || a==2) 15 | puts("该月份属于冬季"); 16 | else 17 | puts("该月份不存在"); 18 | return 0; 19 | } 20 | -------------------------------------------------------------------------------- /C/10-8-4.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | {int a,b,c; 4 | printf("请输入两个整数\n"); 5 | puts("整数a:"); 6 | scanf("%d",&a); 7 | puts("整数b"); 8 | scanf("%d",&b); 9 | c=(a 2 | int main () 3 | { 4 | int a,b,c; 5 | printf("请输入三个整数:\n"); 6 | printf("整数1:"); 7 | scanf("%d",&a); 8 | printf("整数2:"); 9 | scanf("%d",&b); 10 | printf("整数3:"); 11 | scanf("%d",&c); 12 | if (a==b && b==c) 13 | puts("三个数相等"); 14 | else if (a==b&&a!=c) 15 | puts("有两个数相等"); 16 | else if( a==c&&a!=b) 17 | puts("有两个数相等"); 18 | else if(c==b&&a!=b) 19 | puts("有两个数相等"); 20 | else 21 | puts("三个数各不相等"); 22 | return 0; 23 | } 24 | -------------------------------------------------------------------------------- /C/10-9-2.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { 4 | int month; 5 | printf("请输入一个整数:\n"); 6 | scanf("%d",&month); 7 | switch (month){ 8 | case 3: 9 | case 4: 10 | case 5:puts("该月份属于春季");break; 11 | case 6: 12 | case 7: 13 | case 8:puts("该月份属于夏季");break; 14 | case 9: 15 | case 10: 16 | case 11:puts("该月份属于秋季");break; 17 | case 12: 18 | case 1: 19 | case 2:puts("该月份属于冬季");break; 20 | default:puts("该月份不存在");break; 21 | } 22 | return 0; 23 | } 24 | -------------------------------------------------------------------------------- /C/10.8.2.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main () 3 | { int a,b; 4 | pues("请输入两个整数:\n"); 5 | printf("整数1:"); 6 | scanf("%d",&a); 7 | printf("整数2:"); 8 | scanf("%d",&b); 9 | if (a 3 | int main (){ 4 | int i; 5 | int a[5] = {1,2,3,4,5}; 6 | int *p=a; 7 | for(i=0;i<5;i++){ 8 | printf("&a[%d] = %d *(a+%d) = %d p[%d] = %d *(p+%d) = %d \n", 9 | i,a[i],i,*(a+1),i,p[i],i,*(p+i)); 10 | } 11 | for(i=0;i<5;i++){ 12 | printf("a[%d] = %p a+%d = %p &p[%d] = %p p+%d = %p \n", 13 | i,&a[i],i,(a+i),i,&p[i],i,(p+i)); 14 | } 15 | return 0; 16 | } 17 | -------------------------------------------------------------------------------- /C/11-1-2.c: -------------------------------------------------------------------------------- 1 | /*为所有的值赋上与下标相同的值*/ 2 | #include 3 | void set_idx(int *v,int n){ 4 | int i ; 5 | for(i=0;i 3 | #define number 5 4 | void change(int *i, int *j){ 5 | *i = *i + *j; 6 | *j = *i - *j; 7 | *i = *i - *j; 8 | } 9 | void bsort (int a[],int n){ 10 | int i,j; 11 | for(i=0;ii;j--){ 13 | if (a[j-1] 2 | 3 | int main(){ 4 | int a1[12] = {31 ,28 ,31 ,30 ,31 ,30 ,31 ,31 ,30 , 31 ,30 ,31 } ; 5 | int a2[12] = {31, 29 ,31, 30 ,31, 30 ,31 ,31 ,30 , 31 ,30 ,31 }; 6 | int year ,month ,day ; 7 | int i ,n ; 8 | int sum =0 ; 9 | 10 | printf("输入年月日\n"); 11 | scanf("%d %d %d" ,&year ,&month ,&day ); 12 | // year = 2016; 13 | // month = 11; 14 | // day = 11; 15 | 16 | if (year / 4 == 0) { 17 | if (year / 100 == 0) { 18 | if (year /400 == 0) { 19 | for (i =0 , n=0; i 2 | int main(){ 3 | printf("I am so tired !"); 4 | return 0; 5 | } 6 | -------------------------------------------------------------------------------- /C/11-5-1.c: -------------------------------------------------------------------------------- 1 | #include 2 | void* str_copy(char *d,const char*s){ 3 | 4 | char *t=d; 5 | while (*d++=*s++) 6 | printf("%s",t); 7 | } 8 | int main(){ 9 | 10 | char str[128]="ABC"; 11 | char tmp[128]; 12 | printf("str=\"%s\"\n",str); 13 | printf("要复制的是:"); 14 | scanf("%s",tmp); 15 | 16 | printf("复制了\n"); 17 | printf("str = \n"); 18 | str_copy (str,tmp); 19 | 20 | return 0; 21 | } 22 | -------------------------------------------------------------------------------- /C/11-5-2.c: -------------------------------------------------------------------------------- 1 | #include 2 | void* put_string ( char *s){ 3 | 4 | char *t = s ; 5 | while (*s++>=0 ) 6 | printf("%s",t); 7 | } 8 | 9 | int main(){ 10 | 11 | char s[128] ; 12 | printf("输入一个字符串:\n"); 13 | scanf("%s", s); 14 | printf("显示字符串\n"); 15 | put_string (s); 16 | return 0; 17 | } 18 | /*为什么 const char *s 不能 char *t = s,只有char *s 可以,而且为什么输入一个12345,会输出很多12345呢*/ 19 | -------------------------------------------------------------------------------- /C/11-5-3.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | int str_chnum( char*s , int c ){ 4 | 5 | int i = 0; 6 | while(*s++) 7 | { 8 | if (*s++ == 'c') 9 | i++; 10 | } 11 | 12 | return i; 13 | } 14 | 15 | int main(){ 16 | int c; 17 | char s[128]; 18 | printf("输入一个字符串\n"); 19 | scanf("%s",s); 20 | printf("输入一个字符\n"); 21 | scanf("%d",&c); 22 | printf("字符%d出现的次数是%d",c,str_chnum(s,c)); 23 | return 0; 24 | } 25 | -------------------------------------------------------------------------------- /C/11-5-4.c: -------------------------------------------------------------------------------- 1 | /*不用下标实现大小写的转换,还是错的,要改*/ 2 | #include 3 | #include 4 | 5 | void str_toupper(char *s ){ 6 | char *t ; 7 | while (*s++=*t++){ 8 | t = toupper(t); 9 | } 10 | } 11 | 12 | int main (){ 13 | 14 | char s[128]; 15 | printf("输入一个字符串\n"); 16 | scanf("%s",s); 17 | str_toupper(s); 18 | printf("大写字母:%s \n",s); 19 | return 0 ; 20 | } 21 | -------------------------------------------------------------------------------- /C/11-7-1.c: -------------------------------------------------------------------------------- 1 | /*从键盘输入打开文件*/ 2 | 3 | #include 4 | 5 | int main (){ 6 | 7 | FILE *fp ; 8 | char fname [128]; 9 | printf("输入一个文件名 \n"); 10 | scanf("%s",fname); 11 | 12 | fp = fopen ("fname","r"); 13 | if (fp ==NULL) 14 | printf("无法打开文件\n"); 15 | else { 16 | printf("成功打开了文件\n"); 17 | fclose (fp); 18 | } 19 | 20 | return 0; 21 | 22 | } 23 | -------------------------------------------------------------------------------- /C/11-7-2.c: -------------------------------------------------------------------------------- 1 | /* 从键盘输入文件名,消去该文件的内容,即用只写格式 "w"*/ 2 | 3 | #include 4 | int main () 5 | { 6 | FILE *fp ; 7 | char fname[FILENAME_MAX]; 8 | printf("输入一个文件名\n"); 9 | scanf ("%s",fname); 10 | fp = fopen ("fname","w"); 11 | fclose (fp); 12 | return 0; 13 | } 14 | 15 | 16 | -------------------------------------------------------------------------------- /C/11-7-3.c: -------------------------------------------------------------------------------- 1 | /*从文件读入个人信息,按身高排序后进行显示*/ 2 | /*要用到结构体的知识,暂时还不会,还要改,如何使其他信息随着身高的改变而改变*/ 3 | #include 4 | 5 | int main(){ 6 | FILE *fp; 7 | int number = 0; 8 | char name [100]; 9 | double weight ; 10 | int height [100] ; 11 | int i=0, j; 12 | char fname [FLIENAME_MAX]; 13 | 14 | printf("输入一个文件名\n"); 15 | scanf("%s",fname); 16 | 17 | if (( fp = fopen ("fname","w")) == NULL ) 18 | printf("打开文件失败\n"); 19 | else { 20 | while (fscanf(fp, "%s%d%lf",name,&heigh[i++]t,&weight) == 3 ){ 21 | printf("%-10s %5d %5.1f \n ", name,height[i++] ,weight ); 22 | number ++ ; 23 | for ( i=0; ii; j--){ 25 | if 26 | 27 | -------------------------------------------------------------------------------- /C/11-7-4.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | char data_flie[] = "datatime.dat"; 5 | 6 | void get_data (){ 7 | 8 | FILE *fp; 9 | if ((fp = fopen (data_flie,"r")) == NULL ) 10 | printf("本程序第一次执行\n"); 11 | else { 12 | char mood[128]; 13 | int year , month , day , h ,m ,s ; 14 | fscanf (fp , "%s %d %d %d %d %d %d ", mood ,&year ,&month ,&day ,&h,&m,&s ); 15 | printf("上一次运行的时间是%d年%d月%d日%d时%d分%d秒。心情是%s",year,month,day,h,m,s,mood); 16 | fclose(fp); 17 | } 18 | } 19 | 20 | void put_data(){ 21 | FILE *fp; 22 | char mood[128]; 23 | time_t current = time (NULL); 24 | struct tm *timer = localtime(¤t); 25 | if (( fp = fopen (data_flie ,"r")) == NULL ) 26 | printf("打开文件失败\n"); 27 | else { 28 | fprintf( fp ," %d %d %d %d %d %d %s ", 29 | timer->tm_year+1900 , timer->tm_mon+1, timer->tm_mday, 30 | timer->tm_hour, timer->tm_min,timer->tm_sec, mood ); 31 | fclose (fp); 32 | } 33 | } 34 | 35 | int main (){ 36 | 37 | get_data(); 38 | put_data(); 39 | 40 | return 0; 41 | } 42 | 43 | 44 | -------------------------------------------------------------------------------- /C/11-8-1.c: -------------------------------------------------------------------------------- 1 | /*NULL和EOF的区别要注意 2 | * NULL是0的字面表示法可以赋值给数组,指针,字符串等变量 3 | * EOF表示文件结束*/ 4 | #include 5 | /*打开文件 ,显示字符数*/ 6 | 7 | int main (){ 8 | int ch; 9 | int i=0; 10 | FILE *fp ; 11 | char fname[FILENAME_MAX]; 12 | 13 | printf("输入一个文件名\n"); 14 | scanf("%s",fname); 15 | 16 | if ((fp = fopen (fname , "r") ) == NULL) 17 | printf("打开该文件失败\n"); 18 | else 19 | { 20 | while (( ch = fgetc(fp)) != EOF) 21 | { i++; 22 | 23 | } 24 | printf("一共有%d个字符\n",i); 25 | fclose (fp); 26 | 27 | } 28 | return 0 ; 29 | } 30 | -------------------------------------------------------------------------------- /C/11-8-2.c: -------------------------------------------------------------------------------- 1 | /*打开文件复制到另一文件,并显示原文件*/ 2 | #include 3 | 4 | int main(){ 5 | 6 | int ch ; 7 | FILE *sfp ; 8 | FILE *dfp ; 9 | char sname [FILENAME_MAX]; 10 | char dname [FILENAME_MAX]; 11 | 12 | printf(" 打开原文件\n"); 13 | scanf("%s",sname); 14 | printf("打开目标文件\n"); 15 | scanf("%s",dname); 16 | 17 | if ((sfp = fopen (sname ,"r")) == NULL) 18 | printf("打开原文件失败\n"); 19 | else { 20 | if (( dfp = fopen (dname ,"w")) == NULL) 21 | printf("打开目标文件失败\n"); 22 | else { 23 | while ((ch = fgetc (sfp)) != EOF){ 24 | fputc (ch ,dfp); 25 | putchar(ch); 26 | 27 | } 28 | fclose (dfp); 29 | 30 | } 31 | fclose (sfp); 32 | 33 | } 34 | return 0; 35 | } 36 | -------------------------------------------------------------------------------- /C/11-8-3.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | /*复制文件同时将大写字母改为大写字母*/ 4 | 5 | int main(){ 6 | 7 | int ch ; 8 | FILE *sfp ; 9 | FILE *dfp ; 10 | char sname[FILENAME_MAX]; 11 | char dname[FILENAME_MAX]; 12 | 13 | printf("打开原文件\n"); 14 | scanf("%s",sname); 15 | printf("打开目标文件\n"); 16 | scanf("%s",dname); 17 | 18 | if (( sfp = fopen(sname ,"r")) == NULL) 19 | printf("打开原文件失败\n"); 20 | else 21 | { 22 | if ((dfp = fopen (dname ,"w")) == NULL) 23 | printf("打开目标文件失败\n"); 24 | else 25 | { 26 | while ((ch = fgetc (sfp)) != EOF) 27 | { 28 | ch = toupper (ch); 29 | fputc ( ch ,dfp ); 30 | putchar (ch) ; 31 | 32 | } 33 | fclose (dfp); 34 | } 35 | fclose (sfp); 36 | } 37 | 38 | return 0; 39 | } 40 | 41 | -------------------------------------------------------------------------------- /C/11-8-4.c: -------------------------------------------------------------------------------- 1 | /*将圆周率写进二进制文件再进行读取*/ 2 | #include 3 | 4 | { 5 | FILE *fp ; 6 | double pi = 3.14159265358979323846; 7 | 8 | printf( "从变量pi得到的圆周率是23.2lf。\n",pi); 9 | 10 | if ((fp = fopen ("pi.bin","wb")) ==NULL) 11 | printf("文件打开失败\n"); 12 | else 13 | { 14 | fwrite ( &pi ,sizeof(double) , 1 ,fp); 15 | fclose (fp); 16 | 17 | } 18 | 19 | if ((fp = fopen("pi.bin","rb")) == NULL) 20 | printf("打开文件失败\n"); 21 | else 22 | { 23 | fread(&pi , sizeof(double) , 1 ,fp); 24 | printf("从文件读取的圆周率是%23.1lf。\n",pi); 25 | fclose(fp); 26 | } 27 | 28 | 29 | 30 | return 0 ; 31 | } 32 | -------------------------------------------------------------------------------- /C/11-8-5.c: -------------------------------------------------------------------------------- 1 | #include 2 | /*读取含有10个double型的元素的数组的所有元素值*/ 3 | int main(){ 4 | double a[10]; 5 | int i; 6 | FILE *fp ; 7 | if ((fp = fopen ("pi.bin" , "r")) == NULL) 8 | printf("打开文件失败\n"); 9 | else 10 | { 11 | fread (&a ,sizeof(double),10,fp); 12 | for (int i=0 ; i<10 ;i++) 13 | printf("a[%d]的值是%lf",i+1,a[i]); 14 | fclose (fp); 15 | } 16 | return 0 ; 17 | } 18 | -------------------------------------------------------------------------------- /C/11-8-7.c: -------------------------------------------------------------------------------- 1 | /*用字符和字符编码显示文件内容*/ 2 | #include 3 | #include 4 | 5 | int main(){ 6 | int n ; 7 | unsigned long count = 0 ; 8 | unsigned char buf[16] ; 9 | FILE *fp ; 10 | char fname [FILENAME_MAX]; 11 | 12 | printf("文件名\n"); 13 | scanf("%s",fname); 14 | 15 | if ((fp = fopen( fname ,"rb")) ==NULL) 16 | printf("打开文件失败\n"); 17 | 18 | else { 19 | while (( n =fread( buf ,1 ,16 ,fp )) >0) 20 | /*返回值是成功读取的元素的个数*/ 21 | { 22 | int i ; 23 | printf("%08lx" , count); 24 | 25 | for (i=0; i 2 | 3 | /*打开二进制文件进行复制*/ 4 | 5 | int main(){ 6 | unsigned char buf[16]; 7 | int ch ; 8 | FILE *sfp ; 9 | FILE *dfp ; 10 | char sname [FILENAME_MAX]; 11 | char dname [FILENAME_MAX]; 12 | 13 | printf("打开原文件:\n"); 14 | scanf("%s",sname); 15 | printf("打开目标文件\n"); 16 | scanf("%s",dname); 17 | 18 | if (( sfp = fopen (sname ,"r")) ==NULL) 19 | printf("打开原文件失败\n"); 20 | else { 21 | if( (dfp = fopen (dname ,"w")) ==NULL) 22 | printf("打开目标文件失败\n"); 23 | else{ 24 | 25 | while((ch = fread (buf, 1,16 ,sfp) )>0) 26 | fwrite (buf ,1 , 16 ,dfp ); 27 | } 28 | fclose (dfp); 29 | } 30 | fclose(sfp); 31 | return 0 ; 32 | } 33 | /*未完待续*/ 34 | -------------------------------------------------------------------------------- /C/2-20-1.c: -------------------------------------------------------------------------------- 1 | /*计算某矩阵中各行元素之和最大值*/ 2 | #include 3 | #include 4 | #include 5 | 6 | int GetSumRow(int *p , int num) ; 7 | int GetMaxRow(int **p , int row , int col) ; 8 | 9 | int main(){ 10 | 11 | int row , col ; 12 | int i , j , **p , maxrow ; 13 | 14 | printf("input row =") ; 15 | scanf("%d",&row) ; 16 | printf("input col =") ; 17 | scanf("%d",&col) ; 18 | 19 | p = (int **) malloc(row * sizeof(int *)) ; 20 | for ( i = 0 ; i < row ; i++) 21 | p[i] = (int *) malloc(col * sizeof(int )) ; 22 | 23 | printf("input the number:\n") ; 24 | for ( i = 0 ; i < row ; i++) 25 | for ( j = 0 ; j < col ; j++) 26 | scanf("%d",p[i]+j) ; 27 | 28 | maxrow = GetMaxRow( p , row , col) ; 29 | printf("maxrow=%d\n",maxrow) ; 30 | 31 | for (i = 0 ; i < row ; i++) { 32 | free(p[i]) ; 33 | free(p) ; 34 | } 35 | 36 | return 0 ; 37 | 38 | } 39 | 40 | int GetMaxRow(int **p , int row , int col) { 41 | 42 | int i , max , t ; 43 | 44 | max = GetSumRow(p[0], col) ; 45 | 46 | for (i = 1 ; i < row ; i++) { 47 | 48 | t = GetSumRow(p[i] , col) ; 49 | if (t > max) 50 | max = t ; 51 | 52 | } 53 | 54 | return max ; 55 | } 56 | 57 | int GetSumRow(int *p , int num ) { 58 | 59 | int i , sum = 0 ; 60 | 61 | for ( i = 0 ; i < num ; i++) 62 | sum += p[i] ; 63 | 64 | return sum ; 65 | } 66 | -------------------------------------------------------------------------------- /C/2-26-1.c: -------------------------------------------------------------------------------- 1 | #include 2 | /*神奇啊 , 直接这样居然可以改变数组的值!!,数组就是指针吗?? */ 3 | void hah( int a[], int n ) { 4 | 5 | int i ; 6 | 7 | for ( i = 0 ; i < n ; i++) 8 | a[i] = i ; 9 | 10 | for ( i = 0 ; i < n ; i++) 11 | printf("%d ",a[i]) ; 12 | 13 | 14 | } 15 | 16 | int main () { 17 | 18 | int a[10] ; 19 | 20 | int i ; 21 | 22 | for ( i = 0 ; i < 10 ; i++) 23 | scanf("%d",&a[i]) ; 24 | 25 | hah(a,10) ; 26 | 27 | return 0 ; 28 | } 29 | -------------------------------------------------------------------------------- /C/2-27-1.c: -------------------------------------------------------------------------------- 1 | /* 归并排序*/ 2 | 3 | #include 4 | #include 5 | 6 | void merge(int *arr , int left , int middle ,int right , int size) { 7 | 8 | int i = left , j = middle + 1 , k ; 9 | int temp_arr[size] ; 10 | for ( k = left ; k <= right ; k++) 11 | temp_arr[k] = arr[k] ; // 复制数组 12 | 13 | for( k = left ; k <= right ; k++) { 14 | 15 | if ( i > middle) 16 | arr[k] = temp_arr[j++] ; 17 | else if ( j > right ) 18 | arr[k] = temp_arr[i++] ; 19 | else if ( temp_arr[i] < temp_arr[j] ) 20 | arr[k] = temp_arr[i++] ; 21 | else 22 | arr[k] = temp_arr[j++] ; 23 | } 24 | } 25 | 26 | void merge_sort( int *arr , int size ) { 27 | 28 | int n ; // 每次递归的子序列长度 29 | int i ; // 索引 30 | int right ; // 子序列的右边界 31 | 32 | for ( n = 1 ; n < size ; n = 2*n) { 33 | 34 | for ( i = 0 ; i < size - n ; i += 2*n) { 35 | 36 | if ((i+2*n-1) < (size-1)) 37 | right = i + 2*n -1 ; 38 | else 39 | right = size -1 ; 40 | merge(arr, i , i+n-1,right,size ) ; 41 | } 42 | for ( i = 0 ; i < size ; i++) 43 | printf("%d ",arr[i]) ; 44 | printf("\n") ; 45 | } 46 | } 47 | 48 | 49 | 50 | int main(){ 51 | 52 | int i ; 53 | int arr[40] ; 54 | int size ; 55 | 56 | scanf("%d" ,&size) ; 57 | 58 | for ( i = 0 ; i < size ; i++) 59 | scanf("%d",&arr[i]) ; 60 | 61 | merge_sort(arr , size) ; 62 | 63 | 64 | return 0 ; 65 | 66 | } 67 | 68 | 69 | -------------------------------------------------------------------------------- /C/2-27-2.c: -------------------------------------------------------------------------------- 1 | /* 归并排序*/ 2 | 3 | // 死了死了 , 是错的 !!!! 4 | #include 5 | #include 6 | 7 | void merge(int *arr , int left , int middle , int right , int size ){ 8 | 9 | int i = left , j = middle + 1 , k ; 10 | int temp_arr[size] ; 11 | for ( k = left ; k <= right ; k++) 12 | temp_arr[k] = arr[k] ; 13 | 14 | for ( k = left ; k <= right ; k++) { 15 | 16 | if ( i > middle) 17 | arr[k] = temp_arr[j++] ; 18 | else if ( j > right ) 19 | arr[k] = temp_arr[i++] ; 20 | else if ( temp_arr[i] > temp_arr[j] ) 21 | arr[k] = temp_arr[i++] ; 22 | else 23 | arr[k] = temp_arr[j++] ; 24 | } 25 | } 26 | 27 | void merge_sort(int *arr , int left , int right , int size ) { 28 | 29 | if ( left < right ) { 30 | 31 | int middle = left + ( right - left) / 2 ; 32 | merge_sort(arr , left, middle+1 , right , size) ; 33 | merge_sort(arr , middle+1,right,size) ; 34 | merge(arr,left,middle,right,size) ; 35 | /* for ( int i = 0 ; i < size ; i++) 36 | printf("%d ",arr[i]) ; 37 | */ printf("\n") ; 38 | } 39 | } 40 | 41 | int main() { 42 | 43 | int i ; 44 | int arr[20] ; 45 | int size ; 46 | 47 | scanf("%d",&size) ; 48 | 49 | for ( i = 0 ; i < size ;i++) 50 | scanf("%d",&arr[i]) ; 51 | 52 | merge_sort(arr,0,size-1 ,size) ; 53 | 54 | for ( i = 0 ; i < size ; i++) 55 | 56 | printf("%d ",arr[i]) ; 57 | return 0 ; 58 | } 59 | -------------------------------------------------------------------------------- /C/2.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { 4 | int a,b,c; 5 | printf("请输入两个整数\n"); 6 | printf("整数a:"); 7 | scanf("%d",&a); 8 | printf("整数b:"); 9 | scanf("%d",&b); 10 | c=(a*100)/b; 11 | printf("a的值是b的%d%%\n",c); 12 | return 0; 13 | } 14 | -------------------------------------------------------------------------------- /C/3-12-1.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | int equal(int x , int y){ 4 | 5 | return !(x^y) ; // 等价于 == , 判断是否相等!! 6 | 7 | } 8 | 9 | int main() { 10 | 11 | int x , y ; // 交换 x , y 的方法 !! 12 | 13 | scanf("%d%d",&x,&y) ; 14 | 15 | y = x ^ y ; 16 | x = x ^ y ; 17 | y = x ^ y ; 18 | 19 | printf("%d %d",x,y) ; 20 | 21 | return 0 ; 22 | } 23 | -------------------------------------------------------------------------------- /C/3-12-2.c: -------------------------------------------------------------------------------- 1 | #include // 不知道他是干嘛的,所以来写来跑跑23333 2 | 3 | typedef unsigned char *byte_pointer ; // 每个都是16进制表示的字节.. 4 | 5 | void show_bytes( byte_pointer start , size_t len ) { 6 | 7 | size_t i ; 8 | for ( i = 0 ; i < len ; i ++ ) 9 | printf(" %.2x",start[i]) ; 10 | printf("\n") ; 11 | 12 | } 13 | 14 | void show_int(int x) { 15 | 16 | show_bytes((byte_pointer) &x , sizeof(int)) ; 17 | } 18 | 19 | void show_float( float x){ 20 | 21 | show_bytes((byte_pointer) &x , sizeof(float)) ; 22 | } 23 | 24 | void show_pointer( void *x){ 25 | 26 | show_bytes((byte_pointer) &x , sizeof(void *)) ; // 害怕 ,居然还能这样!!! 27 | } 28 | 29 | int main() { 30 | 31 | int x ; 32 | float y ; 33 | float *z ; 34 | 35 | scanf("%d%f",&x,&y) ; 36 | z = &y ; 37 | 38 | show_int(x) ; 39 | show_float(y) ; 40 | show_pointer(z) ; 41 | 42 | return 0 ; 43 | // 原来是打印出16进制表示的字节 233333!!! 44 | } 45 | -------------------------------------------------------------------------------- /C/3-12-3.c: -------------------------------------------------------------------------------- 1 | // 判断大端法和小端法 2 | #include // 用0x01234567 来测试 3 | 4 | int is_little_endian1() { 5 | 6 | int flag = 1 ; // 默认是小端法 7 | unsigned int x = 0x1234567 ; 8 | unsigned int temp = *((unsigned char *)&x) ; // 取出前2位 9 | 10 | if ( temp == 0x01 ) 11 | flag = 0 ; 12 | 13 | return flag ; 14 | } 15 | 16 | int is_little_endian2(){ // 方法2 联合体union的存放顺序是所有成员都从低地址开始存放。 17 | union w 18 | { 19 | 20 | int a ; 21 | char b ; 22 | }c ; 23 | 24 | c.a = 1 ; 25 | 26 | return (c.b==1) ; 27 | } 28 | 29 | int main() { 30 | 31 | printf("%d\n",is_little_endian1()) ; 32 | printf("%d\n",is_little_endian2()) ; 33 | 34 | return 0 ; 35 | } 36 | -------------------------------------------------------------------------------- /C/3-13-1.c: -------------------------------------------------------------------------------- 1 | #include 2 | // 返回 x 的最低字节 和y剩下的字节 3 | int main() { 4 | 5 | int x ; 6 | int y ; 7 | int res ; 8 | 9 | scanf("%x %x",&x,&y) ; 10 | 11 | x = x&0x000000ff ; 12 | y = y&0xffffff00 ; 13 | res = x|y ; 14 | printf("%x %x %x",x ,y,res) ; 15 | 16 | return 0 ; 17 | } 18 | -------------------------------------------------------------------------------- /C/3-20-1.c: -------------------------------------------------------------------------------- 1 | #include 2 | #define MAX 15 3 | 4 | int main () { 5 | 6 | int m , mm , i , j , k , ni , nj ; 7 | int magic[MAX][MAX] = {0} ; 8 | 9 | printf("Enter the number you wanted: \n") ; 10 | scanf("%d",&m) ; 11 | 12 | mm = m*m ; 13 | 14 | i = 0 ; 15 | j = m / 2 ; 16 | 17 | for ( k = 1 ; k <= mm ; k++ ){ 18 | 19 | magic[i][j] = k ; 20 | 21 | if ( i ==0 ){ 22 | 23 | ni = m - 1 ; 24 | } 25 | else { 26 | 27 | ni = i - 1 ; 28 | } 29 | if ( j == m -1 ){ 30 | 31 | nj = 0 ; 32 | } 33 | else { 34 | 35 | nj = j+ 1 ; 36 | } 37 | 38 | if ( magic[ni][nj] == 0 ){ 39 | 40 | i = ni ; 41 | j = nj ; 42 | } 43 | else 44 | i++ ; 45 | } 46 | 47 | for ( i = 0 ; i < m ; i++ ){ 48 | 49 | for ( j = 0 ; j < m ; j++){ 50 | 51 | printf("%4d",magic[i][j]) ; 52 | } 53 | printf("\n") ; 54 | } 55 | 56 | return 0 ; 57 | } 58 | -------------------------------------------------------------------------------- /C/3-20-2.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | // 求两个整数之间所有整数中出现的0到9的次数 4 | int main() { 5 | 6 | long k , min , max , count[10] = {0} ; 7 | char str[9] ; 8 | int i ; 9 | 10 | printf("input the first number : \n") ; 11 | scanf("%ld",&min) ; 12 | printf("input the last number : \n") ; 13 | scanf("%ld",&max) ; 14 | 15 | for ( k = min ; k <= max ; k++) { 16 | 17 | sprintf(str,"%8ld",k) ; // 将改数转为字符串存在str中 18 | for ( i = 7 ; i >= 0 && str[i] != ' ' ; i-- ){ 19 | 20 | count[str[i]-'0']++ ; 21 | } 22 | } 23 | 24 | for ( i = 0 ; i < 10 ; i++){ 25 | 26 | printf("%d--(%ld) ",i,count[i]) ; 27 | if ( i == 4 ){ 28 | 29 | printf("\n") ; 30 | } 31 | } 32 | printf("\n") ; 33 | return 0 ; 34 | } 35 | -------------------------------------------------------------------------------- /C/3-20-3.c: -------------------------------------------------------------------------------- 1 | #include 2 | // 改进后的冒泡排序 和 选择排序 3 | 4 | int main() { 5 | 6 | int n , m ; 7 | int a[1000] ; 8 | int b[1000] ; 9 | 10 | scanf("%d",&n) ; 11 | 12 | int i = 0 ; 13 | 14 | for ( i = 0 ; i < n ; i++) 15 | scanf("%d",&a[i]) ; 16 | 17 | int flag = 0 ; 18 | int j ; 19 | 20 | // 冒泡排序 21 | for ( i = 1 ; i < n ; i++) { 22 | 23 | flag = 0 ; 24 | for ( j = 0 ; j < n - i ; j++) { 25 | 26 | int temp ; 27 | if (a[j] > a[j+1]) { 28 | 29 | temp = a[j] ; 30 | a[j] = a[j+1] ; 31 | a[j+1] = temp ; 32 | flag = 1 ; 33 | } 34 | } 35 | if ( flag == 0 ) // flag 等于0 说明没有发生 交换 36 | break ; 37 | } 38 | printf(" 冒泡排序: the sorted numbers : \n") ; 39 | for ( i = 0 ; i < n ; i ++){ 40 | 41 | printf("%d ",a[i]) ; 42 | } 43 | 44 | // 选择排序 45 | printf("\n") ; 46 | 47 | scanf("%d",&m) ; 48 | 49 | for ( i = 0 ; i < m ; i++ ) 50 | scanf("%d",&b[i]) ; 51 | int k ; 52 | 53 | for ( i = 0 ; i < m - 1 ; i++){ 54 | 55 | k = i ; 56 | for ( j = i+1 ; j < m ; j++) { 57 | 58 | if (b[k]>b[j]){ 59 | 60 | k = j ; 61 | } 62 | } 63 | if ( k != i ){ 64 | 65 | int temp = b[i] ; 66 | b[i] = b[k] ; 67 | b[k] = temp ; 68 | } 69 | } 70 | 71 | printf("选择排序 : the sorted numbers : \n") ; 72 | for ( i = 0 ; i < m ; i++) 73 | printf("%d ",b[i]) ; 74 | 75 | return 0 ; 76 | } 77 | -------------------------------------------------------------------------------- /C/3-20-4.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | int main () { 4 | 5 | int a[6] ; 6 | int i , j ; 7 | 8 | for ( i = 0 ; i < 6 ; i++) 9 | scanf("%d",&a[i]) ; 10 | 11 | for ( i = 0 ; i < 6 ; i ++) { 12 | 13 | for ( j = 0 ; j < 6 ; j++) { 14 | 15 | int temp = (6 - i + j) % 6 ; 16 | printf("%3d",a[temp]) ; 17 | } 18 | printf("\n") ; 19 | } 20 | 21 | return 0 ; 22 | } 23 | -------------------------------------------------------------------------------- /C/3-20-5.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | int main() { 4 | 5 | int n ; 6 | int i , j ,a[100][100] ; 7 | 8 | scanf("%d",&n) ; 9 | 10 | for ( i = 0 ; i < n ; i++) { 11 | 12 | a[i][0] = 1 ; 13 | a[i][i] = 1 ; 14 | for (j = 1 ; j < i ; j++) { 15 | 16 | a[i][j] = a[i-1][j-1] + a[i-1][j] ; 17 | } 18 | } 19 | 20 | for ( i = 0 ; i < n ; i++){ 21 | 22 | for (j = 0 ; j < n - 1 - i ; j++) 23 | printf(" ") ; 24 | for (j = 0 ; j <= i ; j++){ 25 | 26 | printf("%4d",a[i][j]) ; 27 | } 28 | printf("\n") ; 29 | } 30 | return 0 ; 31 | } 32 | -------------------------------------------------------------------------------- /C/3-26-1.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | using namespace std ; 4 | 5 | bool checkpalindrome(string s , int first ,int last ) ; 6 | bool checkpalindrome(string s , int first , int last) { 7 | if ( first >= last ){ 8 | 9 | return true ; 10 | } 11 | else { 12 | 13 | return (s[first]==s[last]&& checkpalindrome(s,first+1,last-1)) ; 14 | } 15 | } 16 | 17 | int main () { 18 | 19 | string s ; 20 | cin >> s ; 21 | cout << checkpalindrome(s,0,s.length()-1) ; 22 | return 0 ; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /C/3-28-1.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | void Sort( char str[]) ; 5 | int main() { 6 | 7 | char str[80] ; 8 | printf("Input a String\n") ; 9 | gets(str) ; 10 | Sort(str) ; 11 | printf("After Sort: \n" ) ; 12 | for ( int i = 0 ; i < strlen(str) ; i++) { 13 | 14 | printf("%c ",str[i]) ; 15 | } 16 | return 0 ; 17 | } 18 | 19 | void Sort( char str[] ){ 20 | 21 | int i , j , k , len ; 22 | char ch ; 23 | len = strlen(str) ; 24 | for ( i = 1 ; i < len - 1 ; i += 2 ){ 25 | 26 | k = i ; 27 | for ( j = i + 2 ; j < len ; j += 2 ){ 28 | 29 | if ( str[j] > str[k] ){ 30 | 31 | k = j ; 32 | } 33 | } 34 | 35 | if ( k != i ){ 36 | 37 | ch = str[i] ; 38 | str[i] = str[k] ; 39 | str[k] = ch ; 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /C/3-28-2.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | void find(int p[] , int n , int s , int m) ; 4 | int main() { 5 | 6 | int n = 10 ; 7 | int p[30] ; 8 | 9 | find(p,30,1,n) ; 10 | for (int i = 29 ; i >=0 ; i--){ 11 | 12 | printf(" %4d",p[i]) ; 13 | if ( i % 10 == 0){ 14 | 15 | printf("\n") ; 16 | } 17 | } 18 | 19 | return 0 ; 20 | } 21 | 22 | void find (int p[] , int n , int s , int m) { 23 | 24 | int i , j , w ; 25 | 26 | for ( i = 1 ; i <= n ; i++) 27 | p[i-1] = i ; 28 | for ( i = n ; i >= 2 ; i--) { 29 | 30 | s = ( s + m - 1 ) % i ; 31 | if ( s == 0 ){ 32 | 33 | s = i ; 34 | } 35 | w = p[s-1] ; 36 | for ( j = s ; j < i ; j++ ){ 37 | 38 | p[j-1] = p[j] ; 39 | } 40 | p[i-1] = w ; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /C/3-28-3.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() { 3 | 4 | 5 | } 6 | -------------------------------------------------------------------------------- /C/3-28-4.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | void multi(char a[] , char b[], int c[] ) ; 4 | void subtraction(char a[] , char b[] , int c[] ) ; 5 | int main() { 6 | int choice ; 7 | printf("1:超大整数乘法\n2:超大整数减法\n") ; 8 | scanf("%d",&choice) ; 9 | printf("\n") ; 10 | char a[100] , b[100] ; 11 | int c[202] ; 12 | scanf("%s%s",a,b) ; 13 | memset(c,0,202*sizeof(int)) ; 14 | if ( choice == 1 ){ 15 | multi(a,b,c) ; 16 | } 17 | if ( choice == 2 ){ 18 | subtraction(a,b,c) ; 19 | } 20 | } 21 | void multi(char a[] , char b[] , int c[] ){ 22 | int lena = strlen(a) ; 23 | int lenb = strlen(b) ; 24 | for ( int i = 0 ; i < lena ; i++ ) { 25 | for ( int j = 0 ; j < lenb ; j++) { 26 | c[i+j+1] += (a[i]-'0')*(b[j]-'0') ; 27 | } 28 | } 29 | for ( int i = lena+lenb+2 ; i >= 0 ; i-- ) { 30 | if (c[i]>=10) { 31 | c[i-1] += c[i]/10 ; 32 | c[i] %= 10 ; 33 | } 34 | } 35 | int flag = 0 ; 36 | printf("%s * %s = " ,a ,b) ; 37 | for ( int i = 0 ; i < lena+lenb ; i++){ 38 | if (c[i] != 0 ){ 39 | flag = 1 ; 40 | } 41 | if ( flag ){ 42 | printf("%d",c[i]) ; 43 | } 44 | } 45 | } 46 | void subtraction( char a[] , char b[] , int s[] ){ 47 | int lena = strlen(a) ; 48 | int lenb = strlen(b) ; 49 | int k = lena - 1 , j = lenb - 1 ; 50 | int i = 0 ; 51 | while ( k >= 0 && j >= 0 ) { 52 | s[i++] = a[k--] - b[j--] ; 53 | } 54 | while ( k >= 0 ){ 55 | s[i++] = a[k--] - '0' ; 56 | } 57 | while ( j >= 0 ){ 58 | s[i++] = '0' - b[j--] ; 59 | } 60 | int lens = i ; 61 | for ( int i = 0 ; i < lens - 1 ; i++ ){ 62 | s[i] = (s[i] < 0 ) ? (-s[i]) : s[i] ; 63 | } 64 | printf("%s - %s = ",a,b) ; 65 | for ( int i = lens -1 ; i >=0 ; i --){ 66 | printf("%d",s[i]) ; 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /C/3-29-1.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() { 3 | 4 | int n , m , i , j , k ; 5 | 6 | for ( n = 2 ; n <= 1000 ; n++){ 7 | 8 | m = 0 ; 9 | j = 0 ; 10 | for ( i = 2 ; i < n ; i++){ 11 | // printf(" n : %d : ",n) ; 12 | if ( n % i == 0){ 13 | 14 | m += i ; 15 | // printf(" i : %d ",i) ; 16 | } 17 | } 18 | 19 | // printf("\n") ; 20 | // printf("m: %d\n",m) ; 21 | for ( k = 2 ; k < m ; k++){ 22 | 23 | // printf(" m : %d ",m) ; 24 | if ( m % k == 0 ){ 25 | 26 | j += k ; 27 | // printf("k : %d",k) ; 28 | } 29 | } 30 | 31 | // printf("\n") ; 32 | // printf("j: %d\n",j) ; 33 | if ( j == n && n != m ){ 34 | 35 | printf("%d %d",n,m) ; 36 | } 37 | } 38 | return 0 ; 39 | } 40 | -------------------------------------------------------------------------------- /C/3-7-1.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std ; 3 | 4 | int tell(int year) ; 5 | int firstspace(int year) ; 6 | void gethelp( int help[12] ,int year ) ; 7 | void getmonth(int month[12]) ; 8 | void getspace(int space[12], int help[12],int year) ; 9 | void firstline() ; 10 | void res(int start ,int space[12] ,int help[13] ,int month[12]) ; 11 | 12 | int main () { 13 | 14 | int i ; 15 | int j ; 16 | int k ; 17 | int space[12] ; 18 | int help[12] ; 19 | int t ; 20 | int month[12] ; 21 | int year ; 22 | 23 | cin >> year ; 24 | 25 | gethelp( help , year ) ; 26 | getmonth(month) ; 27 | getspace(space,help,year) ; 28 | 29 | cout <<" "< 2 | // 把2017的农历写死 ,唉 QAQ! 3 | using namespace std ; 4 | 5 | int tell(int year) ; 6 | int firstspace(int year) ; 7 | void gethelp( int help[12] ,int year ) ; 8 | void getmonth(int month[12],int month1[12]) ; 9 | void getspace(int space[12], int help[12],int year) ; 10 | void firstline() ; 11 | void res(int year ,int start ,int space[12] ,int help[13] ,int month[12],int month1[12]) ; 12 | 13 | string lunar[30] = {"初一","初二","初三","初四","初五","初六","初七","初八","初九","初十" ,"十一","十二","十三","十四","十五","十六","十七" ,"十八","十九","二十","廿一","廿二","廿三","廿四","廿五","廿六","廿七","廿八","廿九" ,"三十"} ; 14 | 15 | int lun[12] = {3,4,3,4,5,6,7,9,10,11,12,13} ; 16 | int lun1[12] = {29,28,29,28,29,28,28,29,28,29,28,29} ; 17 | 18 | int main () { 19 | 20 | int i ; 21 | int j ; 22 | int k ; 23 | int space[12] ; 24 | int help[12] ; 25 | int t ; 26 | int month[12] ; 27 | int year ; 28 | int month1[12] ; 29 | 30 | cin >> year ; 31 | 32 | // for ( i = 0 ; i < 30 ; i++) 33 | // cout << lunar[i] << endl ; 34 | 35 | gethelp( help , year ) ; 36 | getmonth(month,month1) ; 37 | getspace(space,help,year) ; 38 | 39 | 40 | cout <<" "< lun1[i] ) { 179 | 180 | lun[i] = 0 ; 181 | } 182 | 183 | cout < 2 | #include 3 | int main () { 4 | char *p = "" 5 | } 6 | -------------------------------------------------------------------------------- /C/4-11-1.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | void alltrim( char *psstr ,char *psdstr); 4 | void main(){ 5 | char *pstr , str[20] ; 6 | pstr = " Happy birthday ! " ; 7 | printf("before alltrim : %s \n" , pstr) ; 8 | alltrim(pstr,str) ; 9 | printf("after alltrim : %s \n", str) ; 10 | } 11 | void alltrim( char *pstr , char *pdstr) { 12 | char *pstart , *pend ; 13 | pstart = pstr ; 14 | while ( *pstart == ' ') { 15 | pstart++ ; 16 | } 17 | pend = pstart + strlen(pstr) - 1 ; 18 | while ( *pend == ' ') { 19 | pend--; 20 | } 21 | while ( pstart <= pend ){ 22 | *pdstr++ = *pstart++ ; 23 | } 24 | *pdstr = '\0' ; 25 | } 26 | -------------------------------------------------------------------------------- /C/4-11-2.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | int GetSumRow( int *p , int num ) ; 6 | int GetMaxRow( int **p , int row , int col) ; 7 | 8 | int main() { 9 | int col , row ; 10 | int i , j , **p , maxrow ; 11 | printf("input row = ") ; 12 | scanf("%d",&row) ; 13 | printf("input col = ") ; 14 | scanf("%d",&col) ; 15 | 16 | p = ( int ** ) malloc( row * sizeof(int *)) ; 17 | for ( i = 0 ; i < row ; i++ ){ 18 | p[i] = (int *) malloc ( col *sizeof(int )) ; 19 | } 20 | 21 | printf("input the number : \n") ; 22 | for ( i = 0 ; i < row ; i++ ){ 23 | for ( j = 0 ; j < col ; j++ ){ 24 | scanf("%d",p[i]+j) ; 25 | } 26 | } 27 | 28 | maxrow = GetMaxRow(p,row,col) ; 29 | printf("-------------------------------------------------------------------------------\n") ; 30 | printf("maxrow = %d \n",maxrow) ; 31 | 32 | for ( i= 0 ; i < row ; i++ ) { 33 | free(p[i]) ; 34 | } 35 | free(p) ; 36 | return 0 ; 37 | } 38 | 39 | int GetMaxRow( int **p , int row , int col) { 40 | int i , max ,t ; 41 | max = GetSumRow(p[0],col) ; 42 | for ( i = 1 ; i < row ; i++) { 43 | t = GetSumRow(p[i],col) ; 44 | if ( t > max ) { 45 | max = t ; 46 | } 47 | } 48 | return max ; 49 | } 50 | 51 | int GetSumRow(int *p , int num ){ 52 | int i , sum = 0 ; 53 | for ( i = 0 ; i < num ; i++ ){ 54 | sum += p[i] ; 55 | } 56 | return sum ; 57 | } 58 | -------------------------------------------------------------------------------- /C/4-11-3.c: -------------------------------------------------------------------------------- 1 | #include 2 | void change( int a[] , int b[], int n ) ; 3 | int main () { 4 | int n , a[20] , b[20] ; 5 | scanf("%d",&n) ; 6 | printf("int a :") ; 7 | for ( int i = 0 ; i < n ; i++ ){ 8 | scanf("%d",&a[i]) ; 9 | } 10 | printf("input b :") ; 11 | for ( int i = 0 ; i < n ; i++) { 12 | scanf("%d",&b[i]) ; 13 | } 14 | change(a,b,n) ; 15 | for ( int i = 0 ; i < n ; i++) { 16 | printf("%d ",a[i]) ; 17 | } 18 | printf("\n") ; 19 | for ( int i = 0 ; i < n ; i++ ){ 20 | printf("%d ",b[i]) ; 21 | } 22 | return 0 ; 23 | } 24 | 25 | void change( int a[] , int b[], int n) { 26 | int i , k ; 27 | for ( i = 0 ; i < n ; i++) { 28 | k = a[i] ; 29 | a[i] = b[i] ; 30 | b[i] = k ; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /C/4-11-4.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | void add(char a[] , char b[]) { 4 | int num = 0 , n = 0 ; 5 | num = strlen(a) ; 6 | while ( b[n] != '\0' ){ 7 | a[num++] = b[n++] ; 8 | } 9 | } 10 | int main () { 11 | char str1[100] , str2[100] ; 12 | memset(str1,0,100) ; 13 | memset(str2,0,100) ; 14 | gets(str1) ; 15 | gets(str2) ; 16 | add(str1,str2) ; 17 | printf("str1 + str2 = %s",str1) ; 18 | return 0 ; 19 | } 20 | -------------------------------------------------------------------------------- /C/4-11-5.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int main() { 4 | char str[100] , *b , *e ; 5 | scanf("%s",str) ; 6 | int i , len = strlen(str) ; 7 | b = str ; 8 | e = str + len - 1 ; 9 | while ( b < e ){ 10 | if ( *b != *e ){ 11 | printf("No!") ; 12 | return 0 ; 13 | } 14 | } 15 | printf("Yes") ; 16 | return 0 ; 17 | } 18 | -------------------------------------------------------------------------------- /C/4-12-1.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() { 3 | int n , m , i , t , s; 4 | scanf("%d%d",&n,&m) ; 5 | s = ( m >= n ) ? n : m ; 6 | for ( i = s ; i >= 1 ; i -- ) { 7 | if( ( n % i == 0 ) && ( m % i == 0) ){ 8 | printf("%d\n",i) ; 9 | return 0 ; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /C/4-12-2.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() { 3 | int n , m , t , i ; 4 | scanf("%d%d",&n,&m) ; 5 | t = 1 ; 6 | if ( m < n ) { 7 | for ( i = 1 ; i < m ; i++){ 8 | if ( (m % i ==0 ) && ( n % i == 0 ) ){ 9 | t = i ; 10 | } 11 | } 12 | printf("%d\n",t) ; 13 | } 14 | if ( m >= n ){ 15 | for ( i = 1 ; i < n ; i++) { 16 | if ( ( n % i== 0)&& ( m % i == 0)) { 17 | t = i ; 18 | } 19 | } 20 | printf("%d\n",t) ; 21 | } 22 | return 0 ; 23 | } 24 | -------------------------------------------------------------------------------- /C/4-12-3.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | int GetMonth( char *str) ; 6 | char *month[] = {"Janunary" ,"February" , "March" , "April" , "May" ,"June", "July" , "August" , "September" , "October" , "November","December" } ; 7 | 8 | int main (int argc , char *argv[]) { 9 | int k ; 10 | if ( argc != 2 ) { 11 | printf("error!") ; 12 | exit(0) ; 13 | } 14 | k = GetMonth(argv[1]) ; 15 | if ( k == -1 ){ 16 | printf("error!!!") ; 17 | exit(0) ; 18 | } 19 | printf("%s\n",month[k-1]) ; 20 | return 0 ; 21 | } 22 | int GetMonth(char *str) { 23 | int k, i = 0; 24 | while ( str[i] != 0 ){ 25 | if ( str[i] < '0' || str[i] > '9') { 26 | return (-1) ; 27 | } 28 | i++ ; 29 | } 30 | k = atoi(str) ; // 原来可以这样233 31 | if ( k < 0 || k > 12 ){ 32 | return (-1) ; 33 | } 34 | return k ; 35 | } 36 | -------------------------------------------------------------------------------- /C/4-17-1.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int main() { 4 | char a[80] ; 5 | gets(a) ; 6 | char *p , *q ; 7 | p = a ; 8 | q = a + strlen(a) - 1 ; 9 | while ( p <= q ){ 10 | if ( *p != *q ){ 11 | printf("No!\n") ; 12 | return 0 ; 13 | } 14 | p++ ; 15 | q-- ; 16 | } 17 | printf("Yes!\n") ; 18 | return 0 ; 19 | } 20 | -------------------------------------------------------------------------------- /C/4-17-2.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | char *change(char *p ,int m ,int n ) { 4 | static char str[80] ; 5 | if ( m < 0 || n < 0 || m >= strlen(p)) { 6 | return NULL ; 7 | } 8 | int i ; 9 | for ( i = 0 ; i < n ; i++ ){ 10 | str[i] = p[m+i] ; 11 | } 12 | return str ; 13 | } 14 | int main() { 15 | char a[80] ; 16 | int m , n ; 17 | gets(a) ; 18 | char *p = a ; 19 | scanf("%d%d",&m,&n) ; 20 | char *q = change(p,m,n) ; 21 | printf("%s",q) ; 22 | return 0 ; 23 | } 24 | -------------------------------------------------------------------------------- /C/4-17-3.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | char *change(char *a ){ 4 | static char p[80] ; 5 | int i = 0 , t = 0 ; 6 | while ( a[i] != '\0') { 7 | if (!( a[i] >= '0' && a[i] <= '9' )){ 8 | p[t++] = a[i] ; 9 | } 10 | i++ ; 11 | } 12 | return p ; 13 | } 14 | int main () { 15 | char a[80] , *p ; 16 | scanf("%s",a) ; 17 | p = change(a) ; 18 | printf("%s",p) ; 19 | return 0 ; 20 | } 21 | -------------------------------------------------------------------------------- /C/4-17-4.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | char *change(char *a ,int n ){ 4 | static char res[80] ; 5 | if ( n > strlen(a) ){ 6 | return NULL ; 7 | } 8 | int i ; 9 | for ( i = 0 ; i < strlen(a) - n ; i++ ){ 10 | res[i] = a[i+n] ; 11 | } 12 | int t = i ; 13 | for ( i = 0 ; i < n ; i++ ){ 14 | res[t++] = a[i] ; 15 | } 16 | return res ; 17 | } 18 | int main() { 19 | char a[80], *p ; 20 | int n ; 21 | scanf("%s %d",a,&n) ; 22 | p = change(a,n) ; 23 | printf("%s",p) ; 24 | return 0 ; 25 | } 26 | -------------------------------------------------------------------------------- /C/4-17-5.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int find ( char *a , char *b ){ 4 | int i = 0 , count = 0 , len1 , len2 ; 5 | len1 = strlen(a) ; 6 | len2 = strlen(b) ; 7 | 8 | while ( i <= len1 -len2 ){ 9 | if ( strncmp(a+i,b,len2) == 0){ 10 | count++ ; 11 | i += len2 ; 12 | } 13 | else { 14 | i++ ; 15 | } 16 | } 17 | return count; 18 | } 19 | int main() { 20 | char a[80] , b[80] ; 21 | scanf("%s%s",a,b) ; 22 | int i = find(a,b) ; 23 | printf("%d",i) ; 24 | return 0 ; 25 | } 26 | -------------------------------------------------------------------------------- /C/4-25-1.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int main() { 4 | char a[10] ; 5 | int i = 0 , len , j ; 6 | gets(a) ; 7 | len = strlen(a) ; 8 | j = len - 1 ; 9 | while ( i < j ){ 10 | if ( a[i] != a[j] ){ 11 | printf("No\n") ; 12 | return 0 ; 13 | } 14 | i++ ; 15 | j-- ; 16 | } 17 | printf("Yes\n") ; 18 | return 0 ; 19 | } 20 | -------------------------------------------------------------------------------- /C/4-25-2.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main () { 3 | int n , i , j , a[50] , sum = 0 , k , temp ; 4 | scanf("%d",&n) ; 5 | k = n*n*n ; 6 | for ( i = 1 ; ; i = i + 2 ){ 7 | sum = 0 ; 8 | for ( j = i ; j < i+n*2 ; j = j + 2 ) { 9 | sum += j ; 10 | } 11 | if ( sum == k ){ 12 | temp = i ; 13 | for ( i = 0 ; i < n ; i++ ){ 14 | printf("%d ",temp ); 15 | temp += 2 ; 16 | } 17 | printf("\n") ; 18 | return 0 ; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /C/4-25-3.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int main() { 4 | int ch , i , j , len1 , len2 , start ; 5 | char a[80] , b[80] , c[80] ; 6 | printf("取子串操作---------1\n插入操作-----------2\n删除操作-----------3\n") ; 7 | scanf("%d",&ch) ; 8 | while ( ch < 0 && ch > 4 ){ 9 | printf("输入1,2或3!\n") ; 10 | scanf("%d",&ch) ; 11 | } 12 | if ( ch == 1 ){ 13 | printf("输入字符串, 起始位置, 子串长度 \n") ; 14 | scanf("%s",a) ; 15 | len1 = strlen(a) ; 16 | scanf("%d%d",&start,&len2) ; 17 | while ( len1 < len2 + start -1 ) { 18 | printf("子串不存在!!\n") ; 19 | scanf("%d%d",&start,&len2) ; 20 | } 21 | start-- ; 22 | for ( i = 0 ; i < len2 ; i ++ ){ 23 | printf("%c", a[start+i] ); 24 | } 25 | printf("\n") ; 26 | return 0 ; 27 | } 28 | 29 | if ( ch == 2 ){ 30 | printf("输入原字符串,目标字符串,指定位置\n") ; 31 | scanf("%s%s%d",a,b,&start) ; 32 | len1 = strlen(a) ; 33 | len2 = strlen(b) ; 34 | while ( len1 < start){ 35 | printf("无法输入!!!\n") ; 36 | scanf("%d",&start) ; 37 | } 38 | for ( i = 0 ; i < len1 + len2 ; i++ ){ 39 | if ( i < start ) { 40 | printf("%c", a[i]) ; 41 | } 42 | else if ( i >= start && i < len2 + start ) { 43 | printf("%c",b[i-start]) ; 44 | } 45 | else { 46 | printf("%c",a[i-start]) ; 47 | } 48 | } 49 | printf("\n") ; 50 | return 0 ; 51 | } 52 | if ( ch == 3 ) { 53 | printf("输入字符串,起始位置,删除长度\n") ; 54 | scanf("%s%d%d",a,&start,&len1) ; 55 | len2 = strlen(a) ; 56 | while ( len2 < start + len1 ){ 57 | printf("无法删除子串!!\n") ; 58 | scanf("%d",&start) ; 59 | } 60 | start-- ; 61 | int k = 0 ; 62 | for ( i = 0 ; i < len2 ; i++ ){ 63 | if ( i < start || i>= start + len1) { 64 | printf("%c",a[i]) ; 65 | } 66 | } 67 | printf("\n") ; 68 | return 0 ; 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /C/4-26-1.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int main() { 4 | short i , j , a[4] , max = 0 , min = 0 ; 5 | unsigned short int b[4] , maxn, minn ; 6 | for ( i = 0 ; i < 4 ; i++ ){ 7 | scanf("%hd",&a[i]) ; 8 | b[i] = (unsigned short int)a[i] ; 9 | } 10 | maxn = b[0] ; 11 | minn = b[0] ; 12 | for ( i = 1 ; i < 4 ; i++ ){ 13 | if ( maxn < b[i] ){ 14 | maxn = b[i] ; 15 | max = i ; 16 | } 17 | if ( minn > b[i] ){ 18 | minn = b[i] ; 19 | min = i ; 20 | } 21 | } 22 | printf("最大无符号数:%u 对应的输入值: %hd\n",a[max],b[max]) ; 23 | printf("最小无符号数:%u 对应的输入值: %hd\n",a[min],b[min]) ; 24 | printf("两数之差:%u\n",a[max]-a[min]) ; 25 | return 0 ; 26 | } 27 | 28 | -------------------------------------------------------------------------------- /C/4-26-2.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | struct node{ 4 | char word[20] ; 5 | int num ; 6 | } ; 7 | int cmp (struct node a , struct node b ){ 8 | if ( a.num != b.num ){ 9 | return a.num > b.num ; 10 | } 11 | return a.word > b.word ; 12 | } 13 | 14 | int main () { 15 | int i , j , k = 0 , t = 0 , len , s = 0 , z = 0 , end = 0 ; 16 | char in[200] ; 17 | gets(in) ; 18 | len = strlen(in) ; 19 | struct node p[50] ; 20 | struct node q[50] ; 21 | struct node temp ; 22 | for ( i = 0 ; i < len ; i++) { 23 | in[i] = tolower(in[i]) ; 24 | } 25 | for ( i = 0 ; i < len ; i++ ) { 26 | if ( in[i] >= 'a' && in[i] <= 'z') { 27 | temp.word[k++] = in[i] ; 28 | temp.num = 1 ; 29 | } 30 | else if ( in[i+1] >= 'a' && in[i+1] <= 'z'){ 31 | p[t++] = temp ; 32 | memset(temp.word,0,sizeof(temp.word)) ; 33 | temp.num = 0 ; 34 | k = 0 ; 35 | } 36 | } 37 | k = 0 ; 38 | for ( i = len -1 ; ; i-- ){ 39 | if (in[i] >= 'a' && in[i] <= 'z' ) { 40 | p[t].word[k++] = in[i] ; 41 | p[t].num = 1 ; 42 | } 43 | if (in[i] == ' ' ) { 44 | break ; 45 | } 46 | } 47 | len = strlen(p[t].word) ; 48 | k = len - 1 ; 49 | s = 0 ; 50 | while ( s <= k ){ 51 | char c = p[t].word[k] ; 52 | p[t].word[k] = p[t].word[s] ; 53 | p[t].word[s] = c ; 54 | s++ ; 55 | k--; 56 | } 57 | k = t ; 58 | for ( i = k ; i >= 0 ; i--) { 59 | int flag = 0 ; 60 | for ( j = 0 ; j < i ; j++ ){ 61 | if ( strcmp(p[i].word , p[j].word) == 0 ){ 62 | if ( flag == 0 ){ 63 | p[j].num++ ; 64 | flag = 1 ; 65 | } 66 | else { 67 | p[j].num = 0 ; 68 | } 69 | } 70 | } 71 | if ( flag == 0 ){ 72 | q[z++] = p[i] ; 73 | } 74 | else { 75 | p[i].num = 0 ; 76 | } 77 | } 78 | for ( i = 0 ; i < z ; i++ ){ 79 | for ( j = 0 ; j + i < z - 1 ; j++){ 80 | if ( (q[j].num < q[j+1].num) || ((q[j].num==q[j+1].num)&&strcmp(q[j].word,q[j+1].word)>0 )){ 81 | temp = q[j] ; 82 | q[j] = q[j+1] ; 83 | q[j+1] = temp ; 84 | } 85 | } 86 | } 87 | for ( i= 0 ; i < z ; i++) { 88 | printf("%s:%d\n",q[i].word,q[i].num) ; 89 | } 90 | return 0 ; 91 | } 92 | -------------------------------------------------------------------------------- /C/4-26-3.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | int random2() { 5 | time_t t; 6 | srand((unsigned)time(&t)); 7 | int number = rand() % 10 ; 8 | return number ; 9 | } 10 | int main() { 11 | int i , j , num , a[11][11] = {0} , x , y , tx ,ty , k ; 12 | int dir[8][2] = {{-1, -1}, {-1, 0}, {-1, 1}, {0, 1}, {1, 1}, {1, 0}, {1, -1}, {0, -1}} ; 13 | for ( i = 0 ; i < 10 ; ){ 14 | x = random2() ; 15 | y = random2() ; 16 | if ( x != 0 && y != 0 && a[x][y] != 9 ){ 17 | a[x][y] = 9 ; 18 | i++ ; 19 | } 20 | } 21 | for ( i = 0 ; i < 11 ; i++ ){ 22 | for ( j = 0 ; j < 11 ; j++ ){ 23 | if (a[i][j] != 9 ){ 24 | for ( k = 0 ; k < 8 ; k++) { 25 | tx = i + dir[k][0] ; 26 | ty = j + dir[k][1] ; 27 | if ( tx >= 0 && ty >= 0 && tx < 11 && ty < 11 && a[tx][ty] == 9 ){ 28 | a[i][j]++ ; 29 | } 30 | } 31 | } 32 | } 33 | } 34 | for ( i = 0 ; i < 11 ; i++) { 35 | for ( j = 0 ; j < 11 ; j++){ 36 | if ( a[i][j] == 9 ){ 37 | printf("* ") ; 38 | } 39 | else { 40 | printf("%d ",a[i][j]) ; 41 | } 42 | } 43 | printf("\n") ; 44 | } 45 | return 0 ; 46 | } 47 | -------------------------------------------------------------------------------- /C/4-3-1.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | using namespace std ; 6 | 7 | int main() { 8 | 9 | string a[4] = {"华","中","师","大"}; 10 | 11 | for ( int i = 3 ; i >= 0 ; i-- ){ 12 | 13 | cout << a[i] ; 14 | } 15 | 16 | return 0 ; 17 | } 18 | -------------------------------------------------------------------------------- /C/4.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuyilei/C/2ad104930952c75f56df294e69c7b1109498a2fc/C/4.c -------------------------------------------------------------------------------- /C/5-1-1.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int main(int argc , char *argv[] ){ 4 | FILE *fp1 , *fp2 ; 5 | char ch ; 6 | if ( argc != 2 ){ 7 | printf("The number of arguments not correct\n\n") ; 8 | exit(0) ; 9 | } 10 | if ( (fp1 = fopen(argv[1] ,"wt")) == NULL){ 11 | printf("Can not open the file\n") ; 12 | exit(0) ; 13 | } 14 | for ( ; ( ch = getchar()) != '@' ; ){ 15 | fputc(ch,fp1) ; 16 | } 17 | fclose(fp1) ; 18 | fp2 = fopen(argv[1],"rt") ; 19 | for ( ; ( ch = getchar()) != EOF ; ){ 20 | putchar(ch) ; 21 | } 22 | fclose(fp2) ; 23 | return 0 ; 24 | } 25 | -------------------------------------------------------------------------------- /C/5-1-2.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int main(int argc , char *argv[]){ 4 | FILE *input , *output ; 5 | if ( argc != 3){ 6 | printf("The number of arguments not correct\n") ; 7 | exit(0) ; 8 | } 9 | if ((input = fopen(argv[1],"r")) == NULL) { 10 | printf("Can not open source file\n") ; 11 | exit(0) ; 12 | } 13 | if ((output = fopen(argv[2],"w")) == NULL){ 14 | printf("Can not open destination file\n") ; 15 | exit(0) ; 16 | } 17 | for ( ; !feof(input) ; ){ 18 | fputc(fgetc(input),output) ; 19 | } 20 | fclose(input) ; 21 | fclose(output) ; 22 | return 0 ; 23 | } 24 | -------------------------------------------------------------------------------- /C/5-1-3.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | int main(){ 5 | FILE *fp ; 6 | short i , a[10] = {0,1,2,3,4,5,6,7,8,9} ; 7 | fp = fopen("wang.dat","wb") ; 8 | if ( fp == NULL){ 9 | printf("can not create file: wang.dat") ; 10 | exit(0) ; 11 | } 12 | fwrite(a,sizeof(short),10,fp) ; 13 | fclose(fp) ; 14 | fp = fopen("wang.dat","rb") ; 15 | if ( fp == NULL ){ 16 | printf("can not open file : wang.dat\n") ; 17 | exit(0) ; 18 | } 19 | memset(a,0,10*sizeof(short)) ; 20 | fread(a,sizeof(short),10,fp) ; 21 | fclose(fp) ; 22 | for ( i = 0 ; i < 10 ;i++){ 23 | printf("%d ",a[i]) ; 24 | } 25 | return 0 ; 26 | } 27 | -------------------------------------------------------------------------------- /C/5-13-1.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | void reverse( char *a ){ 4 | if ( *a == '\0' ){ 5 | return ; 6 | } 7 | else { 8 | reverse(a+1) ; 9 | printf("%c",*a) ; 10 | } 11 | } 12 | int main() { 13 | char a[40] ; 14 | gets(a) ; 15 | reverse(a) ; 16 | } 17 | -------------------------------------------------------------------------------- /C/5-15-1.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #define KEY 0xFA 4 | int main( int argc , char *argv[] ){ 5 | FILE *fpr , *fpw ; 6 | char ch , k = (char)KEY ; 7 | fpr = fopen(argv[1],"rb") ; 8 | if ( fpr == NULL ){ 9 | exit(0) ; 10 | } 11 | fpw = fopen(argv[1],"rb+") ; // 不是wb , rb+从头开始写入 12 | if ( fpw == NULL ){ 13 | exit(0) ; 14 | } 15 | while ( (ch=fgetc(fpr)) != EOF){ 16 | fputc(ch^k,fpw) ; 17 | k = (*argv[2]=='+')? ch : ch^k ; 18 | } 19 | fclose(fpr) ; 20 | fclose(fpw) ; 21 | return 0 ; 22 | } 23 | -------------------------------------------------------------------------------- /C/5-15-2.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #define MAX 1000 4 | #define NUM 10000 5 | int main( int argc , char *argv[] ) { 6 | FILE *fp ; 7 | int n = 0 , m = 0 , i ; 8 | char ch[10000] ; 9 | if ( argc != 4 && argc != 2 ){ 10 | exit(0) ; 11 | } 12 | fp = fopen(argv[1],"r") ; 13 | if ( fp == NULL ){ 14 | exit(0) ; 15 | } 16 | if ( argc == 4 ) { 17 | n = atoi(argv[2]) ; //  将命令行参数变为int,不能用(int)(argv[2]-'0') ; 18 | m = atoi(argv[3]) - 1 ; 19 | } 20 | n = ( n == 0 ) ? 0 : n ; 21 | m = ( m == 0 ) ? MAX : m ; 22 | for ( i = 0 ; fgets(ch,NUM,fp) ; i++ ){ 23 | if ( i >= n && i <= m ){ 24 | printf("%s",ch) ; 25 | } 26 | } 27 | return 0 ; 28 | } 29 | -------------------------------------------------------------------------------- /C/5-16-1.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int main( int argc , char *argv[]){ 4 | int k = 2 , i ; 5 | char ch ; 6 | FILE *fp ; 7 | if ( argc != 2 ){ 8 | printf("The numer of argc is wrong!\n") ; 9 | exit(0) ; 10 | } 11 | if (( fp = fopen(argv[1],"rt")) == NULL){ 12 | printf("Can not open the file!") ; 13 | exit(0) ; 14 | } 15 | printf("1 ") ; 16 | for ( ; !feof(fp) ; ){ 17 | ch = fgetc(fp) ; 18 | printf("%c",ch) ; 19 | if ( ch == '\n'){ 20 | printf("%d ",k++) ; 21 | } 22 | } 23 | fclose(fp) ; 24 | return 0 ; 25 | } 26 | -------------------------------------------------------------------------------- /C/5-16-10.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() { 3 | int n , tmp1 = 0 , tmp2 = 0 ; 4 | scanf("%d",&n) ; 5 | while ( n > 0 ){ 6 | tmp1 = n % 10 ; 7 | tmp2 = 10*tmp2 + tmp1 ; 8 | n /= 10 ; 9 | } 10 | printf("%d\n",tmp2) ; 11 | return 0 ; 12 | } 13 | -------------------------------------------------------------------------------- /C/5-16-11.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() { 3 | int i , j , k ; 4 | for ( i = 1 ; i <= 28 ; i++ ){ 5 | for ( j = 1 ; j <= 72 ; j++ ){ 6 | k = 100 -i - j ; 7 | if ( 150 == k + i*5 + j*2 ){ 8 | printf("1:%d 2:%d 5:%d \n",k,j,i) ; 9 | } 10 | } 11 | } 12 | return 0 ; 13 | } 14 | -------------------------------------------------------------------------------- /C/5-16-12.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() { 3 | int k , sum = 0 ; 4 | char real = ' ' ; 5 | for ( k = 0 ; k <= 3 ; k++ ){ 6 | real = 'A' + k ; 7 | sum = (real != 'A') + (real == 'C') + ( real == 'D') + (real != 'D') ; 8 | if ( sum == 3 ){ 9 | printf("The real man is %c\n",real) ; 10 | return 0 ; 11 | } 12 | } 13 | printf("Can not found the man!\n") ; 14 | return 0 ; 15 | } 16 | -------------------------------------------------------------------------------- /C/5-16-13.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() { 3 | int a[6] , i , j ; 4 | for ( i = 0 ; i < 6 ; i++ ){ 5 | scanf("%d",&a[i]) ; 6 | } 7 | for ( i = 0 ; i < 6 ; i++ ){ 8 | for ( j = 6 - i ; j < 6 ; j++ ){ 9 | printf("%d ",a[j]) ; 10 | } 11 | for ( j = 0 ; j < 6 - i ; j++ ){ 12 | printf("%d ",a[j]) ; 13 | } 14 | printf("\n") ; 15 | } 16 | return 0 ; 17 | } 18 | -------------------------------------------------------------------------------- /C/5-16-14.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() { 3 | int a[12][12] , i , j , n ; 4 | do { 5 | scanf("%d",&n) ; 6 | } while ( n <= 0 || n > 12 ) ; 7 | for ( i = 0 ; i < n ; i++ ){ 8 | a[i][0] = 1 ; 9 | a[i][i] = 1 ; 10 | for ( j = 1 ; j < i ; j++ ){ 11 | a[i][j] = a[i-1][j-1] + a[i-1][j] ; 12 | } 13 | } 14 | for ( i = 0 ; i < n ; i++ ){ 15 | for ( j = 0 ; j < n - i ; j ++ ){ 16 | printf(" ") ; 17 | } 18 | for ( j = 0 ; j <= i ; j++ ){ 19 | printf("%-3d ",a[i][j]) ; 20 | } 21 | printf("\n") ; 22 | } 23 | return 0 ; 24 | } 25 | -------------------------------------------------------------------------------- /C/5-16-2.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | typedef struct { 4 | int number ; 5 | int score ; 6 | } node ; 7 | int getres(node p[100] , int num ){ 8 | int i , j , res = 0 , min = 0 ; 9 | min = p[0].score ; 10 | for ( i = 1 ; i < num ; i++ ){ 11 | if (p[i].score < min ){ 12 | min = p[i].score ; 13 | res = i ; 14 | } 15 | } 16 | return res ; 17 | } 18 | int main() { 19 | int i , n , temp , res ; 20 | node p[100] , tmp ; 21 | scanf("%d",&n) ; 22 | for ( i = 0 ; i < n ; i++ ){ 23 | scanf("%d%d",&p[i].number,&p[i].score) ; 24 | } 25 | res = getres(p,n) ; 26 | printf("%d %d\n",p[res].number,p[res].score) ; 27 | return 0 ; 28 | } 29 | -------------------------------------------------------------------------------- /C/5-16-3.c: -------------------------------------------------------------------------------- 1 | #include 2 | #define D 1000000 3 | int main() { 4 | int i , j , y , x ; 5 | double res = 0 ; 6 | scanf("%d",&x) ; 7 | y = 1 ; 8 | while ( y <= D ){ 9 | res += (1/(double)y) ; 10 | y *= x ; 11 | } 12 | printf("%.10lf",res) ; 13 | } 14 | -------------------------------------------------------------------------------- /C/5-16-4.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int main() { 4 | float n , x , i , temp , y , tmp = 1 , res = 0 , one = 1 , a = 1 ; 5 | float e , real ; 6 | scanf("%f%f",&x,&e) ; 7 | real = sin(x) ; 8 | printf("%.10f\n",real) ; 9 | y = x ; 10 | do { 11 | temp = fabs(real-res) ; 12 | res += ((a)*y/tmp ); 13 | tmp *= (one+1)*(one+2) ; 14 | one += 2 ; 15 | a *= (-1) ; 16 | y *= (x*x) ; 17 | } while ( temp >= e ) ; 18 | printf("%.10f",res) ; 19 | return 0 ; 20 | } 21 | -------------------------------------------------------------------------------- /C/5-16-5.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() { 3 | int a[3][3] ; 4 | int max[3] ; 5 | int i , j , temp =0 ; 6 | for ( i = 0 ; i < 3 ; i ++ ){ 7 | for ( j = 0 ; j < 3 ; j ++ ){ 8 | scanf("%d",&a[i][j]) ; 9 | } 10 | } 11 | for ( i = 0 ; i < 3 ; i++ ){ 12 | max[i] = 0 ; 13 | for ( j = 1 ; j < 3 ; j++ ){ 14 | if ( max[i] < a[i][j] ){ 15 | max[i] = a[i][j] ; 16 | } 17 | } 18 | } 19 | temp = max[0] ; 20 | for ( i = 1 ; i < 3 ; i++ ){ 21 | if ( temp > max[i] ){ 22 | temp = max[i] ; 23 | } 24 | } 25 | printf("%d\n",temp) ; 26 | } 27 | -------------------------------------------------------------------------------- /C/5-16-6.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int main() { 4 | int num[128] = {0} , i , len ; 5 | char str[40] ; 6 | gets(str) ; 7 | len = strlen(str) ; 8 | for ( i = 0 ; i < len ; i++ ){ 9 | num[str[i]]++ ; 10 | } 11 | for ( i = 0 ; i < 128 ; i++ ){ 12 | if( num[i] != 0 ){ 13 | printf("%c : %d\n",i,num[i]) ; 14 | } 15 | } 16 | return 0 ; 17 | } 18 | -------------------------------------------------------------------------------- /C/5-16-7.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() { 3 | int year , mon , flag = 0 , month[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31} ; 4 | scanf("%d%d",&year,&mon) ; 5 | if ( (( year % 4 ) == 0 && (year % 100) != 0) || (( year % 400 ) == 0 ) ){ 6 | flag = 1 ; 7 | } 8 | if ((mon==2) && (flag==1)){ 9 | printf("29\n") ; 10 | } 11 | else { 12 | printf("%d\n",month[mon]) ; 13 | } 14 | return 0 ; 15 | } 16 | -------------------------------------------------------------------------------- /C/5-16-8.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() { 3 | int c , s ; 4 | float p , w , d , f ; 5 | scanf("%f%f%d",&p,&w,&s) ; 6 | if ( s >= 3000 ){ 7 | c = 12 ; 8 | } 9 | else { 10 | c = s / 250 ; 11 | } 12 | switch (c) { 13 | case 0 : d = 0 ; break ; 14 | case 1 : d = 2 ; break ; 15 | case 2 : 16 | case 3 : d = 5 ; break ; 17 | case 4 : 18 | case 5 : 19 | case 6 : 20 | case 7 : d = 8 ; break ; 21 | case 8 : 22 | case 9 : 23 | case 10 : 24 | case 11 : d = 10 ; break ; 25 | case 12 : d = 15 ; break ; 26 | } 27 | printf("%.10f\n",p*w*s*(100-d)/100) ; 28 | return 0 ; 29 | } 30 | -------------------------------------------------------------------------------- /C/5-16-9.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() { 3 | int n , i , k , j ; 4 | for ( n = 100 ; n <= 999 ; n++ ){ 5 | i = n / 100 ; 6 | j = ( n - i*100) / 10 ; 7 | k = n % 10 ; 8 | if ( n == k*k*k + j*j*j + i*i*i ){ 9 | printf("%d ",n) ; 10 | } 11 | } 12 | return 0 ; 13 | } 14 | -------------------------------------------------------------------------------- /C/5-18-1.c: -------------------------------------------------------------------------------- 1 | #include 2 | int getcommon1(int a , int b ){ 3 | if ( a < b ){ 4 | a = a + b ; 5 | b = a - b ; 6 | a = a - b ; 7 | } 8 | while ( b != 0 ) { 9 | int c = a ; 10 | a = b ; 11 | b = c % b ; 12 | } 13 | return a ; 14 | } 15 | int getcommon2(int a , int b ){ 16 | while ( a != b ){ 17 | if ( a > b ){ 18 | a = a - b ; 19 | } 20 | else { 21 | b = b - a ; 22 | } 23 | } 24 | return a ; 25 | } 26 | int getcommon3( int a , int b ){ 27 | int min = ( a < b ) ? a : b , i ; 28 | for ( i = min ; i >= 1 ; i-- ){ 29 | if ( a % i == 0 && b % i == 0 ) { 30 | break ; 31 | } 32 | } 33 | return i ; 34 | } 35 | int main() { 36 | int n ,m , res1 , res2 , res3 ; 37 | scanf("%d%d",&n,&m) ; 38 | res1 = getcommon1(n,m) ; 39 | res2 = getcommon2(n,m) ; 40 | res3 = getcommon3(n,m) ; 41 | printf("%d %d %d",res1,res2,res3) ; 42 | return 0 ; 43 | } 44 | -------------------------------------------------------------------------------- /C/5-18-2.c: -------------------------------------------------------------------------------- 1 | #include 2 | void getint( int a[] ){ 3 | for ( int i = 0 ; i < 10 ; i++ ){ 4 | scanf("%d",&a[i]) ; 5 | } 6 | } 7 | void sort1( int a[] ){ 8 | int i , j , k , tmp ; 9 | for ( i = 0 ; i < 9 ; i++ ){ 10 | k = i ; 11 | for ( j = i + 1 ; j < 10 ; j++ ){ 12 | if ( a[j] > a[k] ){ 13 | k = j ; 14 | } 15 | } 16 | if ( k != i ){ 17 | tmp = a[i] ; 18 | a[i] = a[k] ; 19 | a[k] = tmp ; 20 | } 21 | } 22 | } 23 | void sort2( int a[] ){ 24 | int i , j , tmp ; 25 | for ( i = 0 ; i < 10 ; i++ ){ 26 | for ( j = 0 ; j + i < 10 - 1 ; j++ ){ 27 | if ( a[j] > a[j+1] ){ 28 | tmp = a[j] ; 29 | a[j] = a[j+1] ; 30 | a[j+1] = tmp ; 31 | } 32 | } 33 | } 34 | } 35 | int main() { 36 | int a[10] , i , j , b[10] ; 37 | getint(a) ; 38 | getint(b) ; 39 | sort1(a) ; 40 | sort2(b) ; 41 | for ( i = 0 ; i < 10 ; i++ ){ 42 | printf("%d ",a[i]) ; 43 | } 44 | printf("\n") ; 45 | for ( i = 0 ; i < 10 ; i++ ){ 46 | printf("%d ",b[i]) ; 47 | } 48 | return 0 ; 49 | } 50 | -------------------------------------------------------------------------------- /C/5-18-3.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int main() { 4 | char a[40] , tmp1[40] , tmp2[40] , temp , i = 0 , j = 0 , k = 0 , len , flag[40] = {0} ; 5 | gets(a) ; 6 | len = strlen(a) ; 7 | for ( i = 0 ; i < len ; i++ ){ 8 | if ( (a[i] - 'a' ) % 2 == 1 ){ 9 | tmp1[j++] = a[i] ; 10 | flag[i] = 1 ; 11 | } 12 | else { 13 | tmp2[k++] = a[i] ; 14 | } 15 | } 16 | len = j ; 17 | for ( i = 0 ; i < len - 1; i++ ){ 18 | for ( j = i + 1 ; j < len - 1 ; j++ ){ 19 | if ( tmp1[j] > tmp1[j+1] ){ 20 | temp = tmp1[j] ; 21 | tmp1[j] = tmp1[j+1] ; 22 | tmp1[j+1] = temp ; 23 | } 24 | } 25 | } 26 | len =strlen(a) ; 27 | printf("\n") ; 28 | for ( i = 0 , k = 0 , j = 0 ; i < len ; i++ ){ 29 | if ( flag[i] == 1 ){ 30 | printf("%c ",tmp1[k++]) ; 31 | } 32 | else { 33 | printf("%c ",tmp2[j++]) ; 34 | } 35 | } 36 | return 0 ; 37 | } 38 | -------------------------------------------------------------------------------- /C/5-18-4.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int main() { 4 | char in[80] , tmp ; 5 | int i , j , k , len ; 6 | gets(in) ; 7 | len = strlen(in) ; 8 | for ( i = 1 ; i < len - 1 ; i += 2 ){ 9 | k = i ; 10 | for ( j = i + 2 ; j < len ; j += 2 ){ 11 | if ( in[j] > in[k] ){ 12 | k = j ; 13 | } 14 | } 15 | if ( k != i ){ 16 | tmp = in[i] ; 17 | in[i] = in[k] ; 18 | in[k] = tmp ; 19 | } 20 | } 21 | for ( i = 0 ; i < len ; i++ ){ 22 | printf("%c ",in[i]) ; 23 | } 24 | return 0 ; 25 | } 26 | -------------------------------------------------------------------------------- /C/5-18-5.c: -------------------------------------------------------------------------------- 1 | #include 2 | #define ALL 30 3 | void change( int a[] , int n , int s , int e ){ 4 | int i , j , k = s ; 5 | for ( i = 0 ; i < n ; i++ ){ 6 | a[i] = i + 1 ; 7 | } 8 | for ( i = 30 ; i >= 2 ; i -- ){ 9 | k = ( k + e - 1 ) % i ; 10 | if ( k == 0 ){ 11 | k = i ; 12 | } 13 | int t = a[k-1] ; 14 | for ( j = k ; j < i ; j ++ ){ 15 | a[j-1] = a[j] ; 16 | } 17 | a[i-1] = t ; 18 | } 19 | } 20 | int main() { 21 | int a[ALL] , i , n ; 22 | scanf("%d",&n) ; 23 | change(a,ALL,1,n) ; 24 | for ( i = ALL - 1 ; i>= 0 ; i -- ){ 25 | printf("%3d ",a[i]) ; 26 | if ( i % n == 0 && i != ALL - 1 ){ 27 | printf("\n") ; 28 | } 29 | } 30 | return 0 ; 31 | } 32 | -------------------------------------------------------------------------------- /C/5-2-1.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int main( int argc , char *argv[]){ 4 | FILE *fp ; 5 | long length ; 6 | if (argc != 2){ 7 | printf("Error!!") ; 8 | exit(0) ; 9 | } 10 | fp = fopen(argv[1],"rb") ; 11 | if ( fp == NULL){ 12 | printf("File not found!"); 13 | exit(0) ; 14 | } 15 | fseek(fp,0L,SEEK_END) ; 16 | length = ftell(fp) ; 17 | printf("Length of File is %ld bytes\n",length) ; 18 | fclose(fp) ; 19 | return 0 ; 20 | } 21 | -------------------------------------------------------------------------------- /C/5-2-2.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int main( int argc , char *argv[]){ 4 | int k = 2 , i ; 5 | char ch ; 6 | FILE *fp ; 7 | if ( argc != 2 ){ 8 | printf("The numer of argc is wrong!\n") ; 9 | exit(0) ; 10 | } 11 | if (( fp = fopen(argv[1],"rt")) == NULL){ 12 | printf("Can not open the file!") ; 13 | exit(0) ; 14 | } 15 | printf("1 ") ; 16 | for ( ; !feof(fp) ; ){ 17 | ch = fgetc(fp) ; 18 | printf("%c",ch) ; 19 | if ( ch == '\n'){ 20 | printf("%d ",k++) ; 21 | } 22 | } 23 | fclose(fp) ; 24 | return 0 ; 25 | } 26 | -------------------------------------------------------------------------------- /C/5-2-3.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int main(int argc , char *argv[]){ 4 | int i , k ; 5 | FILE *fp1 , *fp2 , *fp3 ; 6 | char ch ; 7 | if ( argc != 4 ){ 8 | printf("The number of the argc is wrong!") ; 9 | exit(0) ; 10 | } 11 | if ( (fp1 = fopen(argv[1],"rt")) == NULL){ 12 | printf("Can not open the source file1\n") ; 13 | exit(0) ; 14 | } 15 | if ( (fp2 = fopen(argv[2],"rt")) == NULL){ 16 | printf("Can not open the source file2\n") ; 17 | exit(0) ; 18 | } 19 | if ( (fp3 = fopen(argv[3],"wt"))== NULL ){ 20 | printf("Can not open the destination file\n") ; 21 | exit(0) ; 22 | } 23 | while (!feof(fp1)){ 24 | fputc(fgetc(fp1),fp3) ; 25 | } 26 | fclose(fp1) ; 27 | while (!feof(fp2)){ 28 | fputc(fgetc(fp2),fp3) ; 29 | } 30 | fclose(fp2) ; 31 | fclose(fp3) ; 32 | if ((fp3 = fopen(argv[3],"rt")) == NULL){ 33 | printf("Can not open the read file\n") ; 34 | exit(0) ; 35 | } 36 | while (!feof(fp3)){ 37 | fscanf(fp3,"%c",&ch) ; 38 | printf("%c",ch) ; 39 | } 40 | fclose(fp3) ; 41 | return 0 ; 42 | } 43 | -------------------------------------------------------------------------------- /C/5-2-4.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | struct info { 4 | int score ; 5 | struct info *next ; 6 | } ; 7 | typedef struct info NODE ; 8 | NODE *create_linklist() ; 9 | void insert_linklist(NODE *head, NODE *pnew , int i ) ; 10 | void delete_linklist(NODE *head, int i) ; 11 | void display_linklist(NODE *head ) ; 12 | void free_linklist(NODE *head ) ; 13 | int main() { 14 | NODE *head , *pnew ; 15 | head = create_linklist() ; 16 | if ( head == NULL ){ 17 | return 0 ; 18 | } 19 | printf("after create") ; 20 | display_linklist(head) ; 21 | pnew = (NODE *)malloc(sizeof(NODE)) ; 22 | if ( pnew == NULL) { 23 | printf("do not have enough memory") ; 24 | return 0 ; 25 | } 26 | pnew->score = 88 ; 27 | insert_linklist(head,pnew,3) ; 28 | printf("after insert") ; 29 | display_linklist(head) ; 30 | delete_linklist(head,3) ; 31 | printf("after delete") ; 32 | display_linklist(head) ; 33 | free_linklist(head) ; 34 | return 0 ; 35 | } 36 | NODE *create_linklist() { 37 | NODE *head , *tail , *pnew ; 38 | int score ; 39 | head = (NODE *)malloc(sizeof(NODE)) ; 40 | if ( head == NULL ){ 41 | printf("no enough memory\n") ; 42 | return NULL ; 43 | } 44 | head->next = NULL ; 45 | tail = head ; 46 | printf("input the score of student\n") ; 47 | while (1){ 48 | scanf("%d",&score) ; 49 | if ( score <0 ){ 50 | break ; 51 | } 52 | pnew = (NODE *)malloc(sizeof(NODE)) ; 53 | if ( pnew ==NULL ){ 54 | printf("no enough memory\n") ; 55 | return NULL ; 56 | } 57 | pnew->score = score ; 58 | pnew->next = NULL ; 59 | tail->next = pnew ; 60 | tail = pnew ; 61 | } 62 | return head ; 63 | } 64 | void insert_linklist(NODE *head , NODE *pnew , int i ){ 65 | NODE *p ; 66 | int j ; 67 | p = head ; 68 | for ( j = 0 ; j < i && p != NULL ; j++) { 69 | p = p->next ; 70 | } 71 | if ( p == NULL ){ 72 | printf("Can not insert!\n") ; 73 | return ; 74 | } 75 | pnew->next = p->next ; 76 | p->next = pnew ; 77 | } 78 | void delete_linklist(NODE *head , int i ) { 79 | NODE *p = head , *q ; 80 | int j ; 81 | if ( i== 0 ){ 82 | return ; 83 | } 84 | for ( j = 0 ; j < i && p->next != NULL ; j++ ){ 85 | p = p->next ; 86 | } 87 | if ( p->next == NULL ){ 88 | printf("Can not delete the node") ; 89 | return ; 90 | } 91 | q = p->next ; 92 | p->next = q->next ; 93 | free(q) ; 94 | } 95 | void display_linklist(NODE *head){ 96 | NODE *p ; 97 | for ( p = head->next ; p != NULL ; p=p->next ){ 98 | printf("%d ",p->score) ; 99 | } 100 | printf("\n") ; 101 | } 102 | void free_linklist(NODE *head){ 103 | NODE *p , *q ; 104 | p = head ; 105 | while( p->next != NULL){ 106 | q = p->next ; 107 | p->next = q->next ; 108 | free(q) ; 109 | } 110 | free(head) ; 111 | } 112 | -------------------------------------------------------------------------------- /C/5-2-5.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() { 3 | long n , high , low , change ; 4 | int flag1 , flag2 ; 5 | scanf("%lx",&n) ; 6 | printf("n: %#lx\n",n) ; 7 | high = (n>>16)&0x0000ffff ; 8 | low = n&0x0000ffff ; 9 | flag1 = (high%2)?1:0 ; 10 | flag2 = (low%2)?1:0 ; 11 | printf("0为偶数,1为奇数\n") ; 12 | printf("high: %#lx ------%d\nlow: %#lx------%d\n",high,flag1,low,flag2) ; 13 | change = (n&0x00ffff00) + ((n&0x000000ff)<<24) + ((n&0xff000000)>>24) ; 14 | printf("after change: %#lx\n",change) ; 15 | return 0 ; 16 | } 17 | -------------------------------------------------------------------------------- /C/5-20-1.c: -------------------------------------------------------------------------------- 1 | #include 2 | void swap( int a[] , int x , int y ){ 3 | int temp = a[x]; 4 | a[x] = a[y] ; 5 | a[y] = temp ; 6 | } 7 | void perm( int a[] , int begin , int end , int number ){ 8 | int i , j ; 9 | if ( begin >= end ) { 10 | for ( i = 0 ; i < number ; i++ ){ 11 | printf("%d ",a[i]) ; 12 | } 13 | printf("\n") ; 14 | } 15 | else { 16 | for ( j = begin ; j < end ; j ++ ){ 17 | swap(a,begin,j) ; 18 | perm(a,begin+1, end, number) ; 19 | swap(a,begin,j) ; 20 | } 21 | } 22 | } 23 | int main() { 24 | int a[3] = { 7 , 8 , 9 } ; 25 | perm(a,0,3,3) ; 26 | return 0 ; 27 | } 28 | -------------------------------------------------------------------------------- /C/5-21-1.c: -------------------------------------------------------------------------------- 1 | #include 2 | void try(int like[5][5] , int book[] , int take[] , int index ){ 3 | int i , j ; 4 | if ( index == 5 ){ 5 | printf("\n") ; 6 | for ( i = 0 ; i < 5 ; i ++ ){ 7 | printf("%c :%d \n",'A'+i,take[i]) ; 8 | } 9 | printf("-------------") ; 10 | } 11 | else { 12 | for ( i = 0 ; i < 5 ; i ++ ){ 13 | if ( like[index][i] == 1 && book[i] == 0 ){ 14 | take[index] = i + 1 ; 15 | book[i] = 1 ; 16 | try(like,book,take,index+1) ; 17 | take[index] = 0 ; 18 | book[i] = 0 ; 19 | } 20 | } 21 | } 22 | } 23 | int main() { 24 | int like[5][5] = {{0,0,1,1,0},{1,1,0,0,1},{0,1,1,0,1},{0,0,0,1,0},{0,1,0,0,1}} ; 25 | int book[5] = {0} , take[5] = {0} ; 26 | try(like,book,take,0) ; 27 | return 0 ; 28 | } 29 | -------------------------------------------------------------------------------- /C/5-21-2.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int main() { 4 | int n , i = 0 , j = 0 , k , tmp1 = 0 , tmp2 , a[4] = {0} ; 5 | scanf("%d",&n) ; 6 | if ( !(n >= 1000 && n <= 9999) ){ 7 | exit(-1) ; 8 | } 9 | tmp2 = n ; 10 | while ( tmp2 > 0 ){ 11 | tmp1 = tmp1*10 + tmp2 % 10 ; 12 | a[i++] = tmp2 % 10 ; 13 | tmp2 /= 10 ; 14 | } 15 | printf("%d\n",tmp1) ; 16 | for ( i = 0 ; i < 4 ; i++ ){ //  选择排序的i , j 的范围都是number 17 | k = i ; 18 | for ( j = i + 1 ; j < 4 ; j ++ ){ 19 | if ( a[j] > a[k] ){ 20 | k = j ; 21 | } 22 | } 23 | if ( k != i ){ 24 | tmp2 = a[k] ; 25 | a[k] = a[i] ; 26 | a[i] = tmp2 ; 27 | } 28 | } 29 | for ( i = 0 , j = 1 , tmp1 = 0 , tmp2 = 0 ; i < 4 ; i ++ , j *= 10 ){ 30 | tmp1 += (a[i])*j ; 31 | } 32 | printf("%d\n",tmp1) ; 33 | tmp2 = 0 ; 34 | while ( tmp1 > 0 ){ 35 | tmp2 = tmp2 * 10 + tmp1 % 10 ; 36 | tmp1 /= 10 ; 37 | } 38 | printf("%d\n",tmp2) ; 39 | return 0 ; 40 | } 41 | -------------------------------------------------------------------------------- /C/5-21-3.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() { 3 | int i , j , k , tmp , a[10] , b[10] ; 4 | for ( i = 0 ; i < 10 ; i++ ){ 5 | scanf("%d",&a[i]) ; 6 | } 7 | for ( i = 0 ; i < 10 ; i++ ){ 8 | scanf("%d",&b[i]) ; 9 | } 10 | for ( i = 0 ; i < 9 ; i++ ){ 11 | for ( j = i + 1 ; j < 9 ; j++ ){ 12 | if ( a[j] > a[j+1] ){ 13 | tmp = a[j] ; 14 | a[j] = a[j+1] ; 15 | a[j+1] = tmp ; 16 | } 17 | } 18 | } 19 | for ( i = 0 ; i < 10 ; i++ ){ 20 | k = i ; 21 | for ( j = i + 1 ; j < 10 ; j++ ){ 22 | if ( b[k] > b[j]) { 23 | k = j ; 24 | } 25 | } 26 | if ( k != i ){ 27 | tmp = b[k] ; 28 | b[k] = b[i] ; 29 | b[i] = tmp ; 30 | } 31 | } 32 | for ( i = 0 , j = 0 ; i < 10 && j < 10 ; ){ 33 | if ( a[i] < b[j] ){ 34 | printf("%d ",a[i++]) ; 35 | } 36 | else { 37 | printf("%d ",b[j++]) ; 38 | } 39 | } 40 | while ( i < 10 ){ 41 | printf("%d ",a[i++]) ; 42 | } 43 | while ( j < 10 ){ 44 | printf("%d ",b[j++]) ; 45 | } 46 | printf("\n") ; 47 | return 0 ; 48 | } 49 | -------------------------------------------------------------------------------- /C/5-21-4.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() { 3 | int a[12] = { 1 , 3 , 5 , 7 , 9 , 11, 13 ,15 , 17 , 19 } , i , k , tmp ; 4 | scanf("%d",&k) ; 5 | for ( i = 9 ; i > 0 ; i-- ){ 6 | if ( a[i] > k ){ 7 | a[i+1] = a[i] ; 8 | } 9 | else { 10 | break ; 11 | } 12 | } 13 | a[i+1] = k ; 14 | for ( i = 0 ; i < 11 ; i++ ){ 15 | printf("%d ",a[i]) ; 16 | } 17 | printf("\n") ; 18 | return 0 ; 19 | } 20 | -------------------------------------------------------------------------------- /C/5-21-5.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int main() { 4 | char s[80] , a[10] ; 5 | memset(s,0,80) ; 6 | memset(a,0,10) ; 7 | int len1 , len2 , i , j , n ; 8 | gets(s) ; 9 | gets(a) ; 10 | len1 = strlen(s) ; 11 | len2 = strlen(a) ; 12 | for ( i = 0 ; i < len1 - len2 ; i++ ){ 13 | if ( strncmp(s+i,a,len2) == 0 ){ 14 | printf("%d\n",i+1) ; 15 | return 0 ; 16 | } 17 | } 18 | printf("-1\n") ; 19 | return 0 ; 20 | } 21 | -------------------------------------------------------------------------------- /C/5-21-6.c: -------------------------------------------------------------------------------- 1 | #include 2 | int getres(int x , int y ){ 3 | int res ; 4 | if ( y == 0 ){ 5 | res = 1 ; 6 | } 7 | else { 8 | res = x * getres(x,y-1) ; 9 | } 10 | return res ; 11 | } 12 | int main() { 13 | int x , k , sum ; 14 | scanf("%d%d",&x,&k) ; 15 | sum = getres(x,k) ; 16 | printf("%d\n",sum) ; 17 | return 0 ; 18 | } 19 | -------------------------------------------------------------------------------- /C/5-21-7.c: -------------------------------------------------------------------------------- 1 | #include 2 | int getres(int m , int n ){ 3 | if ( m == n || n == 0 ){ 4 | return 1 ; 5 | } 6 | else { 7 | return (m*getres(m-1,n)/(m-n)) ; 8 | } 9 | } 10 | int main() { 11 | int n , m , res ; 12 | scanf("%d%d",&m,&n) ; 13 | res = getres(m , n) ; 14 | printf("%d\n",res) ; 15 | return 0 ; 16 | } 17 | -------------------------------------------------------------------------------- /C/5-21-8.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | char s[80] ; 4 | void change(long long n ){ 5 | int i = 0 ; 6 | if ( n == 0 ){ 7 | return ; 8 | } 9 | else { 10 | for ( i = strlen(s) - 1 ; i >= 0 ; i-- ){ 11 | s[i+1] = s[i] ; 12 | } 13 | s[0] = n % 10 + '0' ; 14 | change(n/10) ; 15 | } 16 | } 17 | int main() { 18 | int len , i , j , k ; 19 | long long n ; 20 | memset(s,0,80) ; 21 | scanf("%lld",&n) ; 22 | change(n) ; 23 | printf("%s",s) ; 24 | return 0 ; 25 | } 26 | -------------------------------------------------------------------------------- /C/5-3-1.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | void prime( int j , int n , int k ){ 4 | while ( j <= n ){ 5 | if ( k % j == 0 ){ 6 | return ; 7 | } 8 | j += 1 ; 9 | } 10 | printf("%6d",k) ; 11 | return ; 12 | } 13 | int main() { 14 | int i , m , n ; 15 | m = 3 ; 16 | while ( m < 200 ){ 17 | i = 2 ; 18 | n = sqrt(m+0.001) ; 19 | prime(i,n,m) ; 20 | m += 2 ; 21 | } 22 | return 0 ; 23 | } 24 | -------------------------------------------------------------------------------- /C/5-8-1.c: -------------------------------------------------------------------------------- 1 | #include 2 | struct node { 3 | int number , score ; 4 | } ; 5 | void output(struct node *s , int n ){ 6 | int min = s[0].score , i , flag = 0 ; 7 | for ( i = 1 ; i < n ; i++ ){ 8 | if ( s[i].score < min ){ 9 | min = s[i].score ; 10 | flag = i ; 11 | } 12 | } 13 | printf("min_score : %d number : %d\n",min,s[flag].number) ; 14 | } 15 | int main() { 16 | int n , i ; 17 | struct node in[100] , *s ; 18 | s = &in[0] ; 19 | scanf("%d",&n) ; 20 | for ( i = 0 ; i < n ; i++ ){ 21 | scanf("%d%d",&in[i].number,&in[i].score) ; 22 | } 23 | output(s,n) ; 24 | return 0 ; 25 | } 26 | -------------------------------------------------------------------------------- /C/5-8-2.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | typedef struct { 6 | char dm[5] ,mc[11] ; 7 | int dj , sl ; 8 | long je ; 9 | } node ; 10 | node *input(int n ){ 11 | node *p ; 12 | int i ; 13 | p = ( node * )malloc ( n * sizeof(node) ) ; // 注意先分内存!! 14 | if ( p == NULL ){ 15 | printf("not enough space!") ; 16 | return NULL ; 17 | } 18 | printf("input the dm , mc , dj , sl\n") ; 19 | for ( i = 0 ; i < n ; i++ ){ 20 | scanf("%s%s%d%d",p[i].dm,p[i].mc,&p[i].dj,&p[i].sl) ; 21 | p[i].je = p[i].sl * p[i].dj ; 22 | } 23 | return p ; 24 | } 25 | void sort( node *p , int n ){ 26 | int i , j ; 27 | for ( i = 0 ; i < n - 1 ; i++ ){ 28 | for ( j = i + 1 ; j < n - 1 ; j++ ){ 29 | if ( (strcmp(p[j].dm,p[j+1].dm)<0) || ((strcmp(p[j].dm,p[j+1].dm)==0) &&( p[j].je>p[j+1].je))){ 30 | node temp = p[j] ; 31 | p[j] = p[j+1] ; 32 | p[j+1] = temp ; 33 | } 34 | } 35 | } 36 | } 37 | void output( node *p , int n ){ 38 | int i ; 39 | printf("after sort\n") ; 40 | for ( i = 0 ; i < n ; i++ ){ 41 | printf("%4s %10s %4d %5d %10ld\n",p[i].dm,p[i].mc,p[i].dj,p[i].sl,p[i].je) ; 42 | } 43 | } 44 | int main() { 45 | int n , i ; 46 | node *p ; 47 | printf("input the number of the product\n") ; 48 | scanf("%d",&n) ; 49 | p = input(n) ; 50 | if ( p == NULL ){ 51 | exit(0) ; 52 | } 53 | sort(p,n) ; 54 | output(p,n) ; 55 | free(p) ; // 注意释放内存!! 56 | return 0 ; 57 | } 58 | 59 | -------------------------------------------------------------------------------- /C/5-9-1.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() { 3 | char *color[] = {"red","yellow","blue","white","black"} ; 4 | int i , j , k , m = 1 ; 5 | for ( i = 0 ; i < 5 ; i++ ){ 6 | for ( j = i + 1 ; j < 5 ; j++ ){ 7 | for ( k = j + 1 ; k < 5 ; k++ ){ 8 | printf("%d : %s %s %s\n",m++,color[i],color[j],color[k]) ; 9 | } 10 | } 11 | } 12 | return 0 ; 13 | } 14 | -------------------------------------------------------------------------------- /C/5-9-2.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | struct q { 4 | int data ; 5 | struct q *next ; 6 | } ; 7 | typedef struct q node ; 8 | node *head ; 9 | node *create(int n ){ 10 | node *p ; 11 | p = ( node *)malloc(sizeof(node)) ; 12 | if ( p== NULL ){ 13 | printf("Not enough space\n") ; 14 | exit(0) ; 15 | } 16 | p->next = NULL ; 17 | p->data = n+1 ; 18 | return p ; 19 | } 20 | void dislink(node *head){ 21 | node *p = head ; 22 | for ( int j = 1 ; p != NULL ; p = p->next , j++ ){ 23 | printf("%5d%10d\n",j,p->data) ; 24 | } 25 | } 26 | node *delnode( node *p , node *pr ){ 27 | if ( p == head ){ 28 | head = p->next ; 29 | free(p) ; 30 | return head ; 31 | } 32 | if ( p->next == NULL ){ 33 | pr->next = NULL ; 34 | free(p) ; 35 | return head ; 36 | } 37 | else { 38 | pr->next = p->next ; 39 | free(p) ; 40 | return pr->next ; 41 | } 42 | } 43 | int main(){ 44 | int i = 0 , all = 25 ; 45 | node *p , *pr ; 46 | head = NULL ; 47 | for ( i = 0 ; i < 25 ; i++ ){ 48 | if ( i == 0 ){ 49 | head = create(i) ; 50 | pr = head ; 51 | } 52 | else { 53 | pr->next = create(i) ; 54 | pr = pr->next ; 55 | } 56 | } 57 | dislink(head) ; 58 | for ( i = 1 , p = head ; ; i++ ){ 59 | if ( i % 3 == 0 ){ 60 | p = delnode(p,pr) ; 61 | all--; 62 | if ( all < 3 ){ 63 | break ; 64 | } 65 | } 66 | else { 67 | pr = p ; 68 | p = p->next ; 69 | if ( p == NULL ){ 70 | p = head ; 71 | } 72 | } 73 | } 74 | printf("The last man is : \n") ; 75 | dislink(head) ; 76 | 77 | } 78 | -------------------------------------------------------------------------------- /C/5-9-3.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | struct q { 4 | int score ; 5 | struct q *next ; 6 | } ; 7 | typedef struct q node ; 8 | int main() { 9 | int k , a ; 10 | node *head , *p , *q ; 11 | head = (node *)malloc(sizeof(node)) ; 12 | if ( head == NULL ){ 13 | printf("Not enough space\n") ; 14 | exit(0) ; 15 | } 16 | head->next = NULL ; 17 | for ( k = 0 ; k < 10 ; k++ ){ 18 | p = ( node *)malloc(sizeof(node)) ; 19 | if ( p == NULL ){ 20 | printf("Not enough space\n") ; 21 | exit(0) ; 22 | } 23 | printf("input the %dth stu\'s score\n",k+1) ; 24 | scanf("%d",&(p->score)) ; 25 | for ( q = head ; q->next != NULL ; q = q->next){ 26 | if ( q->next->score < p->score ){ 27 | break ; 28 | } 29 | } 30 | p->next = q->next ; 31 | q->next = p ; 32 | } 33 | printf("after sorted\n") ; 34 | for ( p = head->next ; p != NULL ; p = p->next ){ 35 | printf("%d ",p->score) ; 36 | } 37 | printf("\n") ; 38 | for ( p = head ; p->next != NULL ; p = p->next ){ 39 | q = p->next ; 40 | p->next = q->next ; 41 | free(q) ; 42 | } 43 | free(head) ; 44 | return 0 ; 45 | } 46 | -------------------------------------------------------------------------------- /C/5-9-4.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int main(){ 4 | char a[40] , b[20] ; 5 | int i , k , j , out = 0 , flag = 0 ; 6 | gets(a) ; 7 | gets(b) ; 8 | int l = strlen(a) , h = strlen(b) ; 9 | for ( i = 0 ; i < l - h ; i++ ){ 10 | flag = 0 ; 11 | for ( j = 0 ; j < h ; j++ ){ 12 | if ( a[i+j] != b[j] ){ 13 | flag = 1 ; 14 | break ; 15 | } 16 | } 17 | if ( flag == 0 ){ 18 | out++ ; 19 | } 20 | } 21 | printf("%d\n",out) ; 22 | return 0 ; 23 | } 24 | -------------------------------------------------------------------------------- /C/5-9-5.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int main( int argc , char *argv[] ) { 4 | int m = 0 , n = 0 , i , j , all = 250 , flag = 0 ; 5 | FILE *fp ; 6 | char string[250] ; 7 | if ( argc != 2 && argc != 4 ){ 8 | printf("input number is wrong!") ; 9 | exit(0) ; 10 | } 11 | if ( argc == 4 ){ 12 | m = atoi(argv[2]) ; 13 | n = atoi(argv[3]) ; 14 | } 15 | int a = ( m == 0 ) ? 0 : m ; 16 | int b = ( m == 0 ) ? 250 : n ; 17 | if ( ( fp = fopen(argv[1],"r") ) == NULL ){ 18 | printf("can not open it!") ; 19 | exit(0) ; 20 | } 21 | for ( i = 0 ; i < m ; i++ ){ 22 | if ( fgets(string,all,fp) == NULL ){ 23 | flag = 1 ; 24 | break ; 25 | } 26 | } 27 | for ( i = m ; i < b ; i++ ){ 28 | if ( fgets(string,all,fp) == NULL ) { 29 | break ; 30 | } 31 | printf("%s",string) ; 32 | } 33 | fclose(fp) ; 34 | return 0 ; 35 | } 36 | -------------------------------------------------------------------------------- /C/5-9-6.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() { 3 | int ji[10] , ou[10] , temp , i , j , m = 0 , n = 0 ; 4 | for ( i = 0 ; i < 10 ; i++ ){ 5 | scanf("%d",&temp) ; 6 | if ( temp % 2 == 0 ){ 7 | ou[m++] = temp ; 8 | } 9 | else { 10 | ji[n++] = temp ; 11 | } 12 | } 13 | for ( i = 0 ; i < m - 1 ; i ++ ){ 14 | for ( j = 0 ; j < m - 1 - i; j ++ ){ 15 | if ( ou[j] > ou[j+1] ){ 16 | int t = ou[j] ; 17 | ou[j] = ou[j+1] ; 18 | ou[j+1] = t ; 19 | } 20 | } 21 | } 22 | for ( i = 0 ; i < n - 1 ; i ++ ){ 23 | for ( j = 0 ; j < n - 1 - i ; j ++ ){ 24 | if ( ji[j] > ji[j+1]) { 25 | int t = ji[j] ; 26 | ji[j] = ji[j+1] ; 27 | ji[j+1] = t ; 28 | } 29 | } 30 | } 31 | for ( i = 0 ; i < n ; i++ ){ 32 | printf("%d ",ji[i]) ; 33 | } 34 | for ( i = 0 ; i < m ; i++ ){ 35 | printf("%d ",ou[i]) ; 36 | } 37 | printf("\n") ; 38 | return 0 ; 39 | } 40 | -------------------------------------------------------------------------------- /C/5-9-7.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #define max 100 4 | struct q { 5 | int rank ; 6 | char no[11] ; 7 | char name[21] ; 8 | int score ; 9 | int time ; 10 | } ; 11 | typedef struct q node ; 12 | int main() { 13 | node st[100] , temp , *pst ; 14 | FILE *fp ; 15 | pst = ( node *)malloc( 7*sizeof(node)) ; 16 | int i , j , k , n , s ,t ; 17 | if ( ( fp = fopen("score.dat" ,"rb")) == NULL ){ 18 | printf("can not open it !\n") ; 19 | exit(0) ; 20 | } 21 | n = 7 ; 22 | for ( i = 0 ; i < n ; i++ ) { 23 | fscanf(fp,"%d %s %s %d %d",&pst[i].rank,pst[i].no,pst[i].name,&pst[i].score,&pst[i].time) ; 24 | } 25 | 26 | for ( i = 0 ; i < 7 ; i++ ){ 27 | printf("%d %s %s %d %d\n",pst[i].rank,pst[i].no,pst[i].name,pst[i].score,pst[i].time) ; 28 | } 29 | for ( i = 0 ; i < n - 1 ; i ++ ){ 30 | k = i ; 31 | for ( j = i + 1 ; j < n ; j++ ){ 32 | if ( (st[j].score > st[k].score) || (( st[j].score == st[k].score) && st[j].time < st[k].time)){ 33 | k = j ; 34 | } 35 | } 36 | if ( k != i ){ 37 | temp = st[i] ; 38 | st[i] = st[k] ; 39 | st[k] = temp ; 40 | } 41 | } 42 | j = 0 ; 43 | s = 0 ; 44 | t = 0 ; 45 | for ( i = 0 ; i < n ; i++ ){ 46 | if (st[i].score != s || st[i].time != t ){ 47 | j++ ; 48 | st[i].rank = j ; 49 | s = st[i].score ; 50 | t = st[i].time ; 51 | } 52 | st[i].rank = j ; 53 | } 54 | for ( i = 0 ; i < n ; i++ ){ 55 | // printf("%4d %-10s %-20s %3d %3d\n",st[i].rank,st[i].no,st[i].name,st[i].score,st[i].time) ; 56 | } 57 | fclose(fp) ; 58 | } 59 | -------------------------------------------------------------------------------- /C/5.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuyilei/C/2ad104930952c75f56df294e69c7b1109498a2fc/C/5.c -------------------------------------------------------------------------------- /C/6-2-1.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int main() { 4 | int a[128] = {0} , i , len ; 5 | char b[50] ; 6 | gets(b) ; 7 | len = strlen(b) ; 8 | for ( i = 0 ; i < len ; i++ ){ 9 | a[b[i]]++ ; 10 | } 11 | for ( i = 0 ; i < 128 ; i ++ ){ 12 | if ( a[i] != 0 ){ 13 | printf("%c : %d \n",i,a[i]) ; 14 | } 15 | } 16 | return 0 ; 17 | } 18 | -------------------------------------------------------------------------------- /C/6-2-2.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() { 3 | int n , i , a[20] , max = 0 , min = 0 , temp ; 4 | scanf("%d",&n) ; 5 | for ( i = 0 ; i < n ; i++ ){ 6 | scanf("%d",&a[i]) ; 7 | } 8 | for ( i = 1 ; i < n ; i++ ){ 9 | min = (a[min] > a[i] ) ? i : min ; 10 | max = (a[max] < a[i] ) ? i : max ; 11 | } 12 | temp = a[0] ; 13 | a[0] = a[max] ; 14 | a[max] = temp ; 15 | temp = a[n-1] ; 16 | a[n-1] = a[min] ; 17 | a[min] = temp ; 18 | for ( i = 0 ; i < n ; i++ ){ 19 | printf("%d ",a[i]) ; 20 | } 21 | return 0 ; 22 | } 23 | -------------------------------------------------------------------------------- /C/6-2-3.c: -------------------------------------------------------------------------------- 1 | #include 2 | int getres(int n ){ 3 | if ( n == 1 || n == 0 ){ 4 | return 1 ; 5 | } 6 | return getres(n-1) + getres(n-2) ; 7 | } 8 | int main() { 9 | int i ; 10 | float sum = 0 ; 11 | for ( i = 0 ; i < 20 ; i++ ) { 12 | printf("%d/%d \n",getres(i+2),getres(i+1)) ; 13 | sum += (float)getres(i+2)/getres(i+1) ; 14 | } 15 | printf("\nsum = %f\n",sum) ; 16 | return 0 ; 17 | } 18 | -------------------------------------------------------------------------------- /C/6-20-1.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std ; 3 | int main() { 4 | int n , i ; 5 | unsigned long sum = 1 ; 6 | cin >> n ; 7 | for ( i = 1 ; i <= n ; i ++ ){ 8 | sum *= i ; 9 | if ( (signed)sum < 0 ){ 10 | cout << "warning!" << endl ; 11 | return 0 ; 12 | } 13 | } 14 | cout << sum << endl ; 15 | return 0 ; 16 | } 17 | -------------------------------------------------------------------------------- /C/6.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuyilei/C/2ad104930952c75f56df294e69c7b1109498a2fc/C/6.c -------------------------------------------------------------------------------- /C/7-21-1.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int main() { 4 | pid_t pid ; 5 | int x = 1 ; 6 | pid = Fork() ; 7 | if ( pid == 0 ) { 8 | printf("child %d\n",++x) ; 9 | exit(0) ; 10 | } 11 | printf("parent %d\n",--x) ; 12 | exit(0); 13 | } 14 | -------------------------------------------------------------------------------- /C/7.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuyilei/C/2ad104930952c75f56df294e69c7b1109498a2fc/C/7.c -------------------------------------------------------------------------------- /C/8-15-1.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | int main() { 6 | printf("1\n") ; 7 | return 0 ; 8 | } 9 | -------------------------------------------------------------------------------- /C/ListStruct.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | using namespace std ; 4 | 5 | const int LIST_INIT_SIZE=100 ; 6 | const int LISTINCREMENT=10 ; 7 | 8 | typedef struct { 9 | int *elem , length , listsize , incrementsize ; 10 | } LIST ; 11 | 12 | 13 | // 初始化线性表 14 | void InitList(LIST &L , int size=LIST_INIT_SIZE, int increase=LISTINCREMENT) { 15 | L.elem = new int [size] ; // 初始化指针 16 | L.length = 0 ; 17 | L.listsize = size ; 18 | L.incrementsize = increase ; 19 | } 20 | 21 | // 销毁线性表 22 | void DestroyList(LIST &L) { 23 | delete [] L.elem ; 24 | L.length = 0 ; 25 | L.listsize = 0 ; 26 | } 27 | 28 | // 重置为空表 29 | void ClearList(LIST &L) { 30 | DestroyList(L) ; 31 | InitList(L) ; 32 | } 33 | 34 | // 判断线性表是否为空 35 | bool ListEmpty(LIST L) { 36 | if ( L.length == 0 ) 37 | return false ; 38 | return true ; 39 | } 40 | 41 | // 计算线性表的长度 42 | int ListLength(LIST L) { 43 | return L.length ; 44 | } 45 | 46 | // 获取某个元素(通过下标) 47 | void GetElem(LIST L ,int i , int &e ) { 48 | e = L.elem[i] ; 49 | } 50 | 51 | // 查找元素 52 | int LocateElem(LIST L, int e){ 53 | for ( int i = 0 ; i < L.length ; i++ ) 54 | if ( L.elem[i] == e ) 55 | return i ; 56 | return 0 ; 57 | } 58 | 59 | // 查找前驱 60 | void PriorElem(LIST L, int cur_e , int &pre_e) { 61 | for ( int i = 1 ; i < L.length ; i++ ) { 62 | if ( L.elem[i] == cur_e ) { 63 | pre_e = L.elem[i-1] ; 64 | return ; 65 | } 66 | } 67 | } 68 | 69 | // 查找后继 70 | void NextElem(LIST L, int cur_e , int &next_e) { 71 | for ( int i = 0 ; i < L.length - 1 ; i++ ){ 72 | if ( L.elem[i] == cur_e ) { 73 | next_e = L.elem[i+1] ; 74 | return ; 75 | } 76 | } 77 | } 78 | 79 | 80 | // 插入元素 81 | void InsertElem(LIST &L ,int index , int e ) { 82 | if ( index == 1 ){ 83 | L.elem[index-1] = e ; 84 | L.length = 1 ; 85 | return ; 86 | } 87 | for (int i = L.length - 2 ; i > index - 1 ; i-- ) 88 | L.elem[i+1] = L.elem[i] ; 89 | L.elem[index-1] = e ; 90 | L.length += 1 ; 91 | } 92 | 93 | // 删除元素 94 | void DeleteElem(LIST &L ,int index , int &e ) { 95 | e = L.elem[index-1] ; 96 | for ( int i = index - 1 ; i < L.length - 1 ; i++ ) { 97 | L.elem[i] = L.elem[i+1] ; 98 | } 99 | L.length -= 1 ; 100 | } 101 | 102 | // 依次输出每个元素的值 103 | void ListTraverse(LIST L) { 104 | for ( int i = 0 ; i < L.length ; i++ ) 105 | cout << L.elem[i] << " " ; 106 | cout << endl ; 107 | } 108 | 109 | 110 | // 主函数 111 | int main() { 112 | LIST L ; 113 | InitList(L) ; 114 | cout << "After init the list, the List is Emtpy? 0 means empty, 1 means not empry." << endl ; 115 | cout << ListEmpty(L) << endl ; 116 | cout << "Before insert Elem the length is " << ListLength(L) << endl ; 117 | for ( int i = 0 ; i < 10 ; i++ ) { 118 | InsertElem(L,i+1,i) ; 119 | } 120 | cout << "Insert 10 elems: " << endl ; 121 | ListTraverse(L) ; 122 | cout << "After insert the length is " << ListLength(L) << endl ; 123 | cout << endl ; 124 | for ( int i = 0 ; i < 10 ; i++ ){ 125 | cout << "The elem " << L.elem[i] << " is in the " << LocateElem(L,i) + 1 << "th" << endl ; 126 | } 127 | } 128 | -------------------------------------------------------------------------------- /C/market/.main.cpp.swp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuyilei/C/2ad104930952c75f56df294e69c7b1109498a2fc/C/market/.main.cpp.swp -------------------------------------------------------------------------------- /C/market/data0.txt: -------------------------------------------------------------------------------- 1 | 12 2 | Y001 鲜肉小月饼 3.5 10 2 3 | Y002 五芳大肉粽 7 10 5 4 | Y003 小米黄金粥 15 10 9.5 5 | Y004 红枣银耳羹 15 10 10 6 | Y005 绵密红豆沙 6 10 3.5 7 | Y006 桂花糊米酒 8 10 4.5 8 | Z001 外婆大碗饭 22 10 14.5 9 | Z002 魔都小排饭 21 10 13 10 | Z003 巴西烤肉饭 25 10 16.5 11 | Z004 梅菜扣肉饭 22 10 14.5 12 | Z005 鱼香肉丝饭 23 10 14.5 13 | Z006 台湾卤肉饭 21 10 12.5 14 | -------------------------------------------------------------------------------- /C/market/data1.txt: -------------------------------------------------------------------------------- 1 | 10 2 | 10月16日 3 | 001 1 3 0 53 53 10月16日 3 2 3 10 4 | 002 2 2 1 31.5 31.5 10月16日 3 0 1 11 5 | 003 3 1 2 53.5 70 10月16日 5 0 3 4 5 7 6 | 004 2 3 0 7 | -------------------------------------------------------------------------------- /C/market/data2.txt: -------------------------------------------------------------------------------- 1 | 12 2 | 鲜肉小月饼 983 3 | 五芳大肉粽 1932 4 | 小米黄金粥 402 5 | 红枣银耳羹 150 6 | 绵密红豆沙 233 7 | 桂花糊米酒 190 8 | 外婆大碗饭 603 9 | 魔都小排饭 834 10 | 巴西烤肉饭 342 11 | 梅菜扣肉饭 235 12 | 鱼香肉丝饭 342 13 | 台湾卤肉饭 232 14 | -------------------------------------------------------------------------------- /C/market/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | using namespace std ; 6 | 7 | const int LIST_INIT_SIZE=100 ; 8 | const int LISTINCREMENT=10 ; 9 | 10 | 11 | typedef struct 12 | { 13 | char name[25] , id[5]; 14 | float price, cost ; 15 | int num ; 16 | } goods ; 17 | 18 | 19 | typedef struct 20 | { 21 | int trans_num, computer_num, cashier_num, customer_id, pay_way ; 22 | float pay , all ; 23 | char date[10] ; 24 | vector gid ; 25 | } recipet ; 26 | 27 | 28 | typedef struct 29 | { 30 | recipet *elem ; 31 | int length , listsize , incrementsize ; 32 | char date[10] ; 33 | int all ; 34 | } r_list ; 35 | 36 | 37 | typedef struct 38 | { 39 | int id, point ; 40 | char num[10] ; 41 | } customer ; 42 | 43 | 44 | typedef struct 45 | { 46 | vector all_goods ; 47 | int sum ; 48 | } market ; 49 | 50 | 51 | typedef struct 52 | { 53 | int *elem , length , listsize , incrementsize ; 54 | } LIST ; 55 | 56 | typedef struct 57 | { 58 | char name[25] ; 59 | int xiaoliang ; 60 | } shangyue ; 61 | 62 | 63 | struct St 64 | { 65 | int id , age ; 66 | char name[10] ; 67 | struct St * next ; 68 | St(int x , int y) : id(x), age(y) , next(NULL) {} 69 | } ; 70 | 71 | int welcome() ; 72 | void to_clear() ; 73 | void init(vector &all) ; 74 | void show_goods(vector &all) ; 75 | void initrecipet(r_list &L , int size, int increase ) ; 76 | void insertrecipet(r_list &L ,int index , recipet e ) ; 77 | void createrecipet(r_list &res) ; 78 | void showrecipet(r_list &res) ; 79 | void diandan(r_list &res, vector&all_goods) ; 80 | void show_one_day(r_list &res, vector&all_goods) ; 81 | void show_one_day(r_list &res1, vector&all_goods) ; 82 | void PriorElem(LIST L, int cur_e , int &pre_e) ; 83 | int LocateElem(LIST L, int e) ; 84 | void GetElem(LIST L ,int i , int &e ) ; 85 | void show_one_good(vector&all_goods,int pos ) ; 86 | void show_all_goods(vector &all_goods ) ; 87 | void init_shangeyue(vector &shang ) ; 88 | void DeRlist(r_list &res) ; 89 | void form_one_day(r_list &res, vector&all_goods) ; 90 | void get_goods(vector &all_goods ) ; 91 | void print_xiaopiao(r_list &res ) ; 92 | void print_xiaopiao_log(r_list &res ) ; 93 | 94 | 95 | 96 | vector all_goods ; 97 | r_list res ; 98 | vector shang ; 99 | 100 | int main() 101 | { 102 | init(all_goods) ; 103 | int r = welcome() ; 104 | // r_list res ; 105 | while ( true ) 106 | { 107 | if ( r == 0 ) 108 | { 109 | break ; 110 | } 111 | switch (r) 112 | { 113 | case 2 : show_goods(all_goods) ; break ; 114 | } 115 | break ; 116 | } 117 | init_shangeyue(shang ) ; 118 | initrecipet(res,100,10) ; 119 | createrecipet(res) ; 120 | showrecipet(res) ; 121 | diandan(res,all_goods) ; 122 | show_one_day(res,all_goods) ; 123 | form_one_day(res,all_goods) ; 124 | show_all_goods(all_goods) ; 125 | print_xiaopiao(res ) ; 126 | print_xiaopiao_log(res ) ; 127 | get_goods(all_goods ) ; 128 | show_goods(all_goods) ; 129 | DeRlist(res) ; 130 | 131 | return 0 ; 132 | } 133 | 134 | void to_clear() 135 | { 136 | system("clear"); 137 | cout << "欢迎下次再来!" ; 138 | cout << endl ; 139 | } 140 | 141 | int welcome() 142 | { 143 | system("clear") ; 144 | cout << " " ; 145 | cout << endl ; 146 | cout << " ******************" ; 147 | cout << endl ; 148 | cout << " **欢迎来到五芳斋**" ; 149 | cout << endl ; 150 | cout << " ******************" ; 151 | cout << endl ; 152 | cout << endl ; 153 | cout << " “五芳斋”创始于1921年,是国家首批“中华老字号”,经过几代人的不懈努力,五芳斋已经发展成为集食品、农业、房产、金融和贸易" ; 154 | cout << endl ; 155 | cout << "业务为一体的企业集团,造就了一个民族品牌的百年传奇。" ; 156 | cout << endl ; 157 | cout << " 浙江嘉兴五芳斋粽子是获国家质检总局国家地理标志(原产地)注册的产品,“五芳斋”商标是国家商标局认定的中国驰名商标。五芳斋" ; 158 | cout << endl ; 159 | cout << "在传承民族饮食文化的基础上不断创新,对明清两代极具盛名的“嘉湖细点”的制作工艺进行了现代化改造,现已形成以粽子为主导,集传统" ; 160 | cout << endl ; 161 | cout << "糕点、卤味制品、米制品、肉食品、蛋制品、酒、调味品等为一体的系列产品群。 五芳斋号称'江南粽子大王',以糯而不烂,肥而不腻,肉" ; 162 | cout << endl ; 163 | cout << "嫩味美、咸甜适中而著称。" ; 164 | cout << endl ; 165 | cout << endl ; 166 | cout << " 按r查看菜单 按s点菜 按q退出程序" ; 167 | cout << endl ; 168 | char tmp ; 169 | 170 | while ( tmp != 'q' && tmp != 's' && tmp != 'r' ) 171 | { 172 | cin >> tmp ; 173 | switch (tmp) 174 | { 175 | case 'q' : to_clear() ; 176 | case 's' : return 1 ; 177 | case 'r' : return 2 ; 178 | default : 179 | cout << endl ; 180 | cout << "输入错误!请重新输入\n按r查看菜单 按s点菜 按q退出程序" ; 181 | cout << endl ; break ; 182 | } 183 | } 184 | } 185 | 186 | // 初始化商品 187 | void init(vector &all) 188 | { 189 | ifstream data ; 190 | data.open("data0.txt"); 191 | int i , n ; 192 | data >> n ; 193 | 194 | for ( i = 0 ; i < n ; i++ ) 195 | { 196 | goods tmp ; 197 | data >> tmp.id >> tmp.name >> tmp.price >> tmp.num >> tmp.cost ; 198 | all.push_back(tmp) ; 199 | } 200 | } 201 | 202 | 203 | // 上月销量 204 | void init_shangeyue( vector &shang) 205 | { 206 | ifstream data ; 207 | data.open("data2.txt") ; 208 | int n ; 209 | data >> n ; 210 | int i ; 211 | 212 | for ( i = 0 ; i < n ; i++ ) 213 | { 214 | shangyue tmp ; 215 | data >> tmp.name ; 216 | data >> tmp.xiaoliang ; 217 | shang.push_back(tmp) ; 218 | } 219 | } 220 | 221 | 222 | // 展示商品 223 | void show_goods(vector &all) 224 | { 225 | // system("clear") ; 226 | cout << endl ; 227 | cout << " 菜单" << endl ; 228 | cout << "菜名 价格 余量 编号 " ; 229 | cout << endl ; 230 | 231 | for ( int i = 0 ; i < all.size() ; i++ ) 232 | { 233 | printf("%-25s %4.1f %3d %-5s \n",all[i].name,all[i].price,all[i].num,all[i].id ) ; 234 | } 235 | cout << "按b返回首页" ; 236 | cout << endl ; 237 | char tmp ; 238 | while ( true ) 239 | { 240 | cin >> tmp ; 241 | if ( tmp == 'b' ) 242 | { 243 | welcome() ; 244 | return ; 245 | } 246 | cout << "输入错误,按b返回首页" ; 247 | cout << endl ; 248 | } 249 | } 250 | 251 | // 初始化小票列表 252 | void initrecipet(r_list &L , int size=LIST_INIT_SIZE, int increase=LISTINCREMENT) 253 | { 254 | L.elem = new recipet [size] ; 255 | // 初始化指针 256 | L.length = 0 ; 257 | L.listsize = size ; 258 | L.incrementsize = increase ; 259 | } 260 | 261 | 262 | // 在小票列表中加入小票 263 | void insertrecipet(r_list &L ,int index , recipet e ) 264 | { 265 | if ( index == 1 ) 266 | { 267 | L.elem[index-1] = e ; 268 | L.length = 1 ; 269 | return ; 270 | } 271 | 272 | for (int i = L.length - 2 ; i > index - 1 ; i-- ) 273 | { 274 | L.elem[i+1] = L.elem[i] ; 275 | } 276 | L.elem[index-1] = e ; 277 | L.length += 1 ; 278 | } 279 | 280 | // 点菜, 281 | // 只是初始化了小票列表 282 | void createrecipet(r_list &res) 283 | { 284 | ifstream data ; 285 | data.open("data1.txt"); 286 | int i , num ; 287 | data >> num ; 288 | data >> res.date ; 289 | res.all = 0 ; 290 | 291 | for ( i = 0 ; i < num ; i++ ) 292 | { 293 | recipet tmp ; 294 | data >> tmp.trans_num >> tmp.computer_num >> tmp.cashier_num ; 295 | data >> tmp.pay_way >> tmp.pay >> tmp.all ; 296 | data >> tmp.date ; 297 | res.all += tmp.all ; 298 | int m , k ; 299 | data >> m ; 300 | vector temp ; 301 | 302 | for ( int j = 0 ; j < m ; j++ ) 303 | { 304 | data >> k ; 305 | temp.push_back(k) ; 306 | } 307 | tmp.gid = temp ; 308 | temp.clear() ; 309 | insertrecipet(res,i+1,tmp) ; 310 | } 311 | } 312 | 313 | 314 | // 初始化列表 315 | void InitList(LIST &L , int size=LIST_INIT_SIZE, int increase=LISTINCREMENT) { 316 | L.elem = new int [size] ; 317 | // 初始化指针 318 | L.length = 0 ; 319 | L.listsize = size ; 320 | L.incrementsize = increase ; 321 | } 322 | 323 | 324 | // 展示菜单 325 | void showrecipet(r_list &res) 326 | { 327 | // system("clear") ; 328 | cout << endl ; 329 | int len = res.length ; 330 | int i ; 331 | cout << " 客人点单" << endl ; 332 | cout << endl ; 333 | cout << "交易号 " ; 334 | cout << "交易机号 " ; 335 | cout << "日期 " ; 336 | cout << "支付方式 " ; 337 | cout << "应付金额 " ; 338 | cout << "实付金额 " ; 339 | cout << "找零 " ; 340 | cout << "消费菜品 " ; 341 | cout << endl ; 342 | 343 | for ( i = 0 ; i < len ; i++ ) 344 | { 345 | printf(" %03d %d %s",res.elem[i].trans_num,res.elem[i].computer_num,res.elem[i].date) ; 346 | switch (res.elem[i].pay_way ) { 347 | case 0 : printf(" 微信 ") ; 348 | break ; 349 | case 1 : printf(" 支付宝 ") ; 350 | break ; 351 | case 2 : printf(" 现金 ") ; 352 | break ; 353 | } 354 | 355 | // printf(" %-10s ",(res.elem[i].pay_way)?"支付宝":"微信") ; 356 | // printf(" %s %2.2f",(res.elem[i].pay_way)?" ":" ", res.elem[i].pay) ; 357 | printf(" %03.2f",res.elem[i].pay) ; 358 | float ca = res.elem[i].all - res.elem[i].pay ; 359 | printf(" %03.2f",res.elem[i].all) ; 360 | printf(" %03.2f ",ca) ; 361 | 362 | for ( int j = 0 ; j < res.elem[i].gid.size() ; j++ ) 363 | { 364 | if ( j != 0 ) 365 | cout <<"\n " ; 366 | int tmp = res.elem[i].gid[j] ; 367 | cout << " " << j+1 << "." << all_goods[tmp].name ; 368 | } 369 | cout << "\n" << endl ; 370 | } 371 | cout << endl ; 372 | } 373 | 374 | 375 | // 查找后继 376 | void NextElem(LIST L, int cur_e , int &next_e) 377 | { 378 | for ( int i = 0 ; i < L.length - 1 ; i++ ) 379 | { 380 | if ( L.elem[i] == cur_e ) 381 | { 382 | next_e = L.elem[i+1] ; 383 | return ; 384 | } 385 | } 386 | } 387 | 388 | 389 | // 插入元素 390 | void InsertElem(LIST &L ,int index , int e ) 391 | { 392 | if ( index == 1 ) 393 | { 394 | L.elem[index-1] = e ; 395 | L.length = 1 ; 396 | return ; 397 | } 398 | 399 | for (int i = L.length - 2 ; i > index - 1 ; i-- ) 400 | { 401 | L.elem[i+1] = L.elem[i] ; 402 | } 403 | L.elem[index-1] = e ; 404 | L.length += 1 ; 405 | } 406 | 407 | // 删除元素 408 | void DeleteElem(LIST &L ,int index , int &e ) 409 | { 410 | e = L.elem[index-1] ; 411 | 412 | for ( int i = index - 1 ; i < L.length - 1 ; i++ ) 413 | { 414 | L.elem[i] = L.elem[i+1] ; 415 | } 416 | L.length -= 1 ; 417 | } 418 | 419 | // 依次输出每个元素的值 420 | void ListTraverse(LIST L) 421 | { 422 | for ( int i = 0 ; i < L.length ; i++ ) 423 | { 424 | cout << L.elem[i] << " " ; 425 | } 426 | cout << endl ; 427 | } 428 | 429 | // 这个函数用来根据点单数, 430 | //减少货物的量 431 | void diandan(r_list &res, vector&all_goods) 432 | { 433 | int i ; 434 | for ( i = 0 ; i < res.length ; i++ ) 435 | { 436 | int j ; 437 | for ( j = 0 ; j < res.elem[i].gid.size() ; j++ ) 438 | { 439 | all_goods[res.elem[i].gid[j]].num -- ; 440 | } 441 | 442 | } 443 | } 444 | 445 | 446 | // 这个函数用来显示一天卖出多少 447 | void show_one_day(r_list &res, vector&all_goods) 448 | { 449 | // system("clear") ; 450 | cout << endl ; 451 | cout << " " ; 452 | cout << res.date ; 453 | cout << "收入总计" ; 454 | cout << endl ; 455 | cout << endl ; 456 | vector g ; 457 | 458 | for ( int i = 0 ; i < all_goods.size() ; i++ ) 459 | { 460 | g.push_back(0) ; 461 | } 462 | int weixin = 0 , allw = 0 ; 463 | int zhifubao = 0 , allz = 0 ; 464 | int diannei = 0 , alld = 0 ; 465 | int dianall = 0 ; 466 | int shou = 0 , zhuan = 0 ; 467 | int i ; 468 | 469 | for ( i = 0 ; i < res.length ; i++ ) 470 | { 471 | int pay_way = res.elem[i].pay_way ; 472 | int pay = res.elem[i].pay ; 473 | int all = res.elem[i].all ; 474 | if ( pay_way == 0 ) 475 | { 476 | weixin++ ; 477 | allw += pay ; 478 | shou += pay ; 479 | zhuan += pay ; 480 | } 481 | else if ( pay_way == 1 ) 482 | { 483 | zhifubao ++ ; 484 | allz += pay ; 485 | shou += pay ; 486 | zhuan += pay ; 487 | } 488 | else if ( pay_way == 2 ) 489 | { 490 | diannei ++ ; 491 | alld += pay ; 492 | shou += pay ; 493 | dianall += all ; 494 | zhuan += all ; 495 | } 496 | int j ; 497 | int nums = res.elem[i].gid.size() ; 498 | 499 | for ( j = 0 ; j < nums ; j++ ) 500 | { 501 | int ss = res.elem[i].gid[j] ; 502 | g[ss]++ ; 503 | } 504 | } 505 | cout << "共计支付" << weixin + zhifubao + diannei << "次,详细情况如下:" ; 506 | cout << endl ; 507 | cout << "微信支付: " << weixin << "次" << endl ; 508 | cout << "支付宝支付: " << zhifubao << "次" << endl ; 509 | cout << "店内支付(店内消费): " << diannei << "次" << endl ; 510 | cout << endl ; 511 | cout << "支付方式 收入 盈利" ; 512 | cout << endl ; 513 | cout << "微信 " ; 514 | cout << allw ; 515 | cout << " " ; 516 | cout << allw ; 517 | cout << endl ; 518 | cout << "支付宝 " ; 519 | cout << allz ; 520 | cout << " " ; 521 | cout << allz ; 522 | cout << endl ; 523 | cout << "店内收入 " ; 524 | cout << dianall ; 525 | cout << " " ; 526 | cout << alld ; 527 | cout << "\n" << endl ; 528 | cout << "共计线上支付(微信和支付宝)支付" << allw+allz << "元, " << "线下支付" << dianall << "元。" << endl ; 529 | cout << "共计线上盈利(微信和支付宝)盈利" << allw+allz << "元, " << "线下盈利" << alld << "元。" << endl ; 530 | cout << res.date << "一共支付" << allw+allz+dianall << "元。 " << "收入" << allw+allz+alld << "元。" << endl ; 531 | cout << endl ; 532 | cout << "各个菜品销量如下:" ; 533 | cout << endl ; 534 | cout << "菜品 销量 收入" ; 535 | cout << endl ; 536 | int q ; 537 | int numss = 12 ; 538 | 539 | for ( q = 0 ; q < numss ; q++ ) 540 | { 541 | goods tmpg = all_goods[q] ; 542 | cout << tmpg.name ; 543 | cout << " " ; 544 | cout << g[q] ; 545 | cout << " " ; 546 | cout << g[q]*tmpg.price ; 547 | cout << endl ; 548 | } 549 | cout << endl ; 550 | cout << endl ; 551 | int maxy = 0 , iy = 0 ; 552 | int y = 0 ; 553 | 554 | for ( y = 0 ; y < 6 ; y++ ) 555 | { 556 | if ( g[y] > maxy ) 557 | { 558 | maxy = g[y] ; 559 | iy = y ; 560 | } 561 | } 562 | int maxz = 0 , iz = 6 ; 563 | int z = 6 ; 564 | 565 | for ( z = 6 ; z < 12 ; z++ ) 566 | { 567 | if ( g[z] > maxz ) 568 | { 569 | maxz = g[z] ; 570 | iz = z ; 571 | } 572 | } 573 | 574 | cout << endl ; 575 | cout << "其中,小吃中" << all_goods[iy].name << "的销量最高为" << maxy << endl ; 576 | cout << "其中,主食中" << all_goods[iz].name << "的销量最高为" << maxz << endl ; 577 | cout << "建议:" << endl ; 578 | cout << "明天多做一些" << all_goods[iy].name << "和" << all_goods[iz].name << endl ; 579 | cout << endl ; 580 | 581 | int miny = 100 ; 582 | iy = 0 ; 583 | y = 0 ; 584 | 585 | for ( y = 0 ; y < 6 ; y++ ) 586 | { 587 | if ( g[y] <= miny ) 588 | { 589 | miny = g[y] ; 590 | iy = y ; 591 | } 592 | } 593 | int minz = 100 ; 594 | iz = 6 ; 595 | z = 6 ; 596 | 597 | for ( z = 6 ; z < 12 ; z++ ) 598 | { 599 | if ( g[z] <= minz ) 600 | { 601 | minz = g[z] ; 602 | iz = z ; 603 | } 604 | } 605 | 606 | cout << endl ; 607 | cout << "其中,小吃中" << all_goods[iy].name << "的销量最低,为" << miny << endl ; 608 | cout << "其中,主食中" << all_goods[iz].name << "的销量最低,为" << minz << endl ; 609 | cout << "建议:" << endl ; 610 | cout << "明天少做一些" << all_goods[iy].name << "和" << all_goods[iz].name << endl ; 611 | cout << endl ; 612 | 613 | } 614 | 615 | 616 | // 销毁线性表 617 | void DestroyList(LIST &L) 618 | { 619 | delete [] L.elem ; 620 | L.length = 0 ; 621 | L.listsize = 0 ; 622 | } 623 | 624 | // 销毁小票列表 625 | void DeRlist(r_list &res) 626 | { 627 | delete [] res.elem ; 628 | // 销毁列表 629 | // res.date = NULL ; 630 | res.length = 0 ; 631 | res.listsize = 0 ; 632 | res.incrementsize = 0 ; 633 | // 参数重新设置为0 634 | } 635 | 636 | 637 | // 判断线性表是否为空 638 | bool ListEmpty(LIST L) 639 | { 640 | if ( L.length == 0 ) 641 | return false ; 642 | return true ; 643 | } 644 | 645 | // 计算线性表的长度 646 | int ListLength(LIST L) 647 | { 648 | return L.length ; 649 | } 650 | 651 | // 显示你想看的产品 652 | void show_one_good(vector&all_goods,int pos ) 653 | { 654 | if ( pos < 0 || pos >= all_goods.size() ) 655 | { 656 | cout << "输入不合理!" << endl ; 657 | return ; 658 | } 659 | goods t = all_goods[pos] ; 660 | cout << endl ; 661 | cout << t.name << "属于" ; 662 | if ( t.id[0] == 'Y' ) 663 | cout << "小吃" ; 664 | if ( t.id[0] == 'Z' ) 665 | cout << "主食" ; 666 | cout << ",上月销量" ; 667 | cout << shang[pos].xiaoliang << "(碗/个)" ; 668 | cout << endl ; 669 | cout << endl ; 670 | } 671 | 672 | // 获取某个元素(通过下标) 673 | void GetElem(LIST L ,int i , int &e ) 674 | { 675 | e = L.elem[i] ; 676 | } 677 | 678 | 679 | 680 | // 一直查看菜品 681 | void show_all_goods(vector &all_goods ) 682 | { 683 | // system("clear") ; 684 | int i = 0 ; 685 | cout << "选择相应的数字查看菜品!" << endl ; 686 | for ( i = 0 ; i < all_goods.size() ; i++ ) 687 | { 688 | goods t = all_goods[i] ; 689 | cout << "查看" << t.name << "轻按" << i+1 ; 690 | cout << endl ; 691 | } 692 | char tmp ; 693 | cout << "按q退出查看,查看请按k" << endl ; 694 | cin >> tmp ; 695 | while ( tmp != 'q' ) 696 | { 697 | if ( tmp != 'k' ) 698 | { 699 | cout << "输入不合理!" << endl ; 700 | cout << "按q退出查看,查看请按k" << endl ; 701 | cout << "请重新输入" << endl ; 702 | cin >> tmp ; 703 | continue ; 704 | } 705 | int temp ; 706 | cin >> temp ; 707 | int r = temp - 1 ; 708 | system("clear") ; 709 | show_one_good(all_goods,r) ; 710 | cout << "请继续输入:" ; 711 | cout << endl ; 712 | cout << "按q退出查看,查看请按k" << endl ; 713 | cout << endl ; 714 | for ( i = 0 ; i < all_goods.size() ; i++ ) 715 | { 716 | goods t = all_goods[i] ; 717 | cout << "查看" << t.name << "轻按" << i+1 ; 718 | cout << endl ; 719 | } 720 | cout << endl ; 721 | cin >> tmp ; 722 | } 723 | if ( tmp == 'q' ) 724 | { 725 | welcome() ; 726 | } 727 | else 728 | { 729 | return ; 730 | } 731 | } 732 | 733 | // 查找元素 734 | int LocateElem(LIST L, int e) 735 | { 736 | for ( int i = 0 ; i < L.length ; i++ ) 737 | if ( L.elem[i] == e ) 738 | return i ; 739 | return 0 ; 740 | } 741 | 742 | // 查找前驱 743 | void PriorElem(LIST L, int cur_e , int &pre_e) 744 | { 745 | for ( int i = 1 ; i < L.length ; i++ ) 746 | { 747 | if ( L.elem[i] == cur_e ) 748 | { 749 | pre_e = L.elem[i-1] ; 750 | return ; 751 | } 752 | } 753 | } 754 | 755 | // 重置为空表 756 | void ClearList(LIST &L) 757 | { 758 | DestroyList(L) ; 759 | InitList(L) ; 760 | } 761 | 762 | 763 | 764 | // 这个函数用来将一天的销量记录到文件中 765 | void form_one_day(r_list &res, vector&all_goods) 766 | { 767 | // system("clear") ; 768 | ofstream cou ; 769 | cou.open(res.date) ; 770 | cou << endl ; 771 | cou << " " ; 772 | cou << res.date ; 773 | cou << "收入总计" ; 774 | cou << endl ; 775 | cou << endl ; 776 | vector g ; 777 | 778 | for ( int i = 0 ; i < all_goods.size() ; i++ ) 779 | { 780 | g.push_back(0) ; 781 | } 782 | 783 | int weixin = 0 , allw = 0 ; 784 | int zhifubao = 0 , allz = 0 ; 785 | int diannei = 0 , alld = 0 ; 786 | int dianall = 0 ; 787 | int shou = 0 , zhuan = 0 ; 788 | int i ; 789 | 790 | for ( i = 0 ; i < res.length ; i++ ) 791 | { 792 | int pay_way = res.elem[i].pay_way ; 793 | int pay = res.elem[i].pay ; 794 | int all = res.elem[i].all ; 795 | 796 | if ( pay_way == 0 ) 797 | { 798 | weixin++ ; 799 | allw += pay ; 800 | shou += pay ; 801 | zhuan += pay ; 802 | } 803 | else if ( pay_way == 1 ) 804 | { 805 | zhifubao ++ ; 806 | allz += pay ; 807 | shou += pay ; 808 | zhuan += pay ; 809 | } 810 | else if ( pay_way == 2 ) 811 | { 812 | diannei ++ ; 813 | alld += pay ; 814 | shou += pay ; 815 | dianall += all ; 816 | zhuan += all ; 817 | } 818 | int j ; 819 | int nums = res.elem[i].gid.size() ; 820 | 821 | for ( j = 0 ; j < nums ; j++ ) 822 | { 823 | int ss = res.elem[i].gid[j] ; 824 | g[ss]++ ; 825 | } 826 | } 827 | 828 | cou << "共计支付" << weixin + zhifubao + diannei << "次,详细情况如下:" ; 829 | cou << endl ; 830 | cou << "微信支付: " << weixin << "次" << endl ; 831 | cou << "支付宝支付: " << zhifubao << "次" << endl ; 832 | cou << "店内支付(店内消费): " << diannei << "次" << endl ; 833 | cou << endl ; 834 | cou << "支付方式 收入 盈利" ; 835 | cou << endl ; 836 | cou << "微信 " ; 837 | cou << allw ; 838 | cou << " " ; 839 | cou << allw ; 840 | cou << endl ; 841 | cou << "支付宝 " ; 842 | cou << allz ; 843 | cou << " " ; 844 | cou << allz ; 845 | cou << endl ; 846 | cou << "店内收入 " ; 847 | cou << dianall ; 848 | cou << " " ; 849 | cou << alld ; 850 | cou << "\n" << endl ; 851 | cou << "共计线上支付(微信和支付宝)支付" << allw+allz << "元, " << "线下支付" << dianall << "元。" << endl ; 852 | cou << "共计线上盈利(微信和支付宝)盈利" << allw+allz << "元, " << "线下盈利" << alld << "元。" << endl ; 853 | cou << res.date << "一共支付" << allw+allz+dianall << "元。 " << "收入" << allw+allz+alld << "元。" << endl ; 854 | cou << endl ; 855 | cou << "各个菜品销量如下:" ; 856 | cou << endl ; 857 | cou << "菜品 销量 收入" ; 858 | cou << endl ; 859 | int q ; 860 | int numss = 12 ; 861 | 862 | for ( q = 0 ; q < numss ; q++ ) 863 | { 864 | goods tmpg = all_goods[q] ; 865 | cou << tmpg.name ; 866 | cou << " " ; 867 | cou << g[q] ; 868 | cou << " " ; 869 | cou << g[q]*tmpg.price ; 870 | cou << endl ; 871 | } 872 | 873 | cou << endl ; 874 | cou << endl ; 875 | cou << endl ; 876 | cout << "剩余菜品:" << endl ; 877 | cou << " 菜单" << endl ; 878 | cou << "菜名 价格 余量 编号 " ; 879 | cou << endl ; 880 | 881 | for ( int i = 0 ; i < all_goods.size() ; i++ ) 882 | { 883 | cou << all_goods[i].name ; 884 | cou << " " ; 885 | cou << all_goods[i].price ; 886 | cou << " " ; 887 | cou << all_goods[i].num ; 888 | cou << " " ; 889 | cou << all_goods[i].id << endl ; 890 | } 891 | 892 | int maxy = 0 , iy = 0 ; 893 | int y = 0 ; 894 | 895 | for ( y = 0 ; y < 6 ; y++ ) 896 | { 897 | if ( g[y] > maxy ) 898 | { 899 | maxy = g[y] ; 900 | iy = y ; 901 | } 902 | } 903 | 904 | int maxz = 0 , iz = 6 ; 905 | int z = 6 ; 906 | for ( z = 6 ; z < 12 ; z++ ) 907 | { 908 | if ( g[z] > maxz ) 909 | { 910 | maxz = g[z] ; 911 | iz = z ; 912 | } 913 | } 914 | 915 | cou << endl ; 916 | cou << "其中,小吃中" << all_goods[iy].name << "的销量最高为" << maxy << endl ; 917 | cou << "其中,主食中" << all_goods[iz].name << "的销量最高为" << maxz << endl ; 918 | cou << "建议:" << endl ; 919 | cou << "明天多做一些" << all_goods[iy].name << "和" << all_goods[iz].name << endl ; 920 | cou << endl ; 921 | 922 | int miny = 100 ; 923 | iy = 0 ; 924 | y = 0 ; 925 | 926 | for ( y = 0 ; y < 6 ; y++ ) 927 | { 928 | if ( g[y] <= miny ) 929 | { 930 | miny = g[y] ; 931 | iy = y ; 932 | } 933 | } 934 | int minz = 100 ; 935 | iz = 6 ; 936 | z = 6 ; 937 | for ( z = 6 ; z < 12 ; z++ ) 938 | { 939 | if ( g[z] <= minz ) 940 | { 941 | minz = g[z] ; 942 | iz = z ; 943 | } 944 | } 945 | 946 | cou << endl ; 947 | cou << "其中,小吃中" << all_goods[iy].name << "的销量最低,为" << miny << endl ; 948 | cou << "其中,主食中" << all_goods[iz].name << "的销量最低,为" << minz << endl ; 949 | cou << "建议:" << endl ; 950 | cou << "明天少做一些" << all_goods[iy].name << "和" << all_goods[iz].name << endl ; 951 | cou << endl ; 952 | 953 | 954 | } 955 | 956 | 957 | 958 | // 进货 959 | void get_goods(vector &all_goods ) 960 | { 961 | int i ; 962 | int num = all_goods.size() ; 963 | for ( i = 0 ; i < num ; i++ ) 964 | { 965 | all_goods[i].num = 10 ; 966 | } 967 | } 968 | 969 | 970 | void print_xiaopiao_log(r_list &res ) 971 | { 972 | ofstream cou ; 973 | cou.open("小票1") ; 974 | int nums = res.length ; 975 | int i ; 976 | 977 | cou << endl ; 978 | cou << endl ; 979 | cou << res.date << "小票列表:" << endl ; 980 | cou << endl ; 981 | cou << "交易号 " ; 982 | cou << "交易机号 " ; 983 | cou << "日期 " ; 984 | cou << "支付方式 " ; 985 | cou << "应付金额 " ; 986 | cou << "实付金额 " ; 987 | cou << "找零 " ; 988 | cou << "消费菜品 " ; 989 | cou << "外卖员 " ; 990 | cou << endl ; 991 | 992 | for ( i = 0 ; i <= nums ; i++ ) 993 | { 994 | cou << res.elem[i].trans_num << " " ; 995 | cou << res.elem[i].computer_num << " " ; 996 | cou << res.elem[i].date ; 997 | 998 | switch (res.elem[i].pay_way ) { 999 | case 0 : cou << " 微信 " ; 1000 | break ; 1001 | case 1 : cou << " 支付宝 " ; 1002 | break ; 1003 | case 2 : cou << " 现金 " ; 1004 | break ; 1005 | } 1006 | 1007 | // printf(" %-10s ",(res.elem[i].pay_way)?"支付宝":"微信") ; 1008 | // printf(" %s %2.2f",(res.elem[i].pay_way)?" ":" ", res.elem[i].pay) ; 1009 | cou << " " << res.elem[i].pay ; 1010 | float ca = res.elem[i].all - res.elem[i].pay ; 1011 | cou << " " << res.elem[i].all ; 1012 | cou << " "<< ca <<" " ; 1013 | 1014 | for ( int j = 0 ; j < res.elem[i].gid.size() ; j++ ) 1015 | { 1016 | /* 1017 | if ( j == 0 ) 1018 | { 1019 | if ( res.elem[i].pay_way == 0 || res.elem[i].pay_way == 1 ) 1020 | { 1021 | cout << " " ; 1022 | cout << i % 3 ; 1023 | } 1024 | } 1025 | */ 1026 | if ( j != 0 ) 1027 | cou <<"\n " ; 1028 | int tmp = res.elem[i].gid[j] ; 1029 | cou << " " << j+1 << "." << all_goods[tmp].name ; 1030 | if ( j == 0 ) 1031 | { 1032 | if ( res.elem[i].pay_way == 0 || res.elem[i].pay_way == 1 ) 1033 | { 1034 | cou << " " ; 1035 | cou << (i % 3) + 1 ; 1036 | } 1037 | else 1038 | { 1039 | cou << " 无(店内消费)" ; 1040 | } 1041 | } 1042 | } 1043 | cou << "\n" << endl ; 1044 | } 1045 | cou << endl ; 1046 | } 1047 | 1048 | 1049 | void print_xiaopiao(r_list &res ) 1050 | { 1051 | // system("clear") ; 1052 | cout << endl ; 1053 | int len = res.length ; 1054 | int i ; 1055 | 1056 | cout << " 客人点单" << endl ; 1057 | cout << endl ; 1058 | cout << "交易号 " ; 1059 | cout << "交易机号 " ; 1060 | cout << "日期 " ; 1061 | cout << "支付方式 " ; 1062 | cout << "应付金额 " ; 1063 | cout << "实付金额 " ; 1064 | cout << "找零 " ; 1065 | cout << "消费菜品 " ; 1066 | cout << "外卖员 " ; 1067 | cout << endl ; 1068 | 1069 | for ( i = 0 ; i < len ; i++ ) 1070 | { 1071 | printf(" %03d %d %s",res.elem[i].trans_num,res.elem[i].computer_num,res.elem[i].date) ; 1072 | switch (res.elem[i].pay_way ) { 1073 | case 0 : printf(" 微信 ") ; 1074 | break ; 1075 | case 1 : printf(" 支付宝 ") ; 1076 | break ; 1077 | case 2 : printf(" 现金 ") ; 1078 | break ; 1079 | } 1080 | 1081 | // printf(" %-10s ",(res.elem[i].pay_way)?"支付宝":"微信") ; 1082 | // printf(" %s %2.2f",(res.elem[i].pay_way)?" ":" ", res.elem[i].pay) ; 1083 | 1084 | printf(" %03.2f",res.elem[i].pay) ; 1085 | float ca = res.elem[i].all - res.elem[i].pay ; 1086 | printf(" %03.2f",res.elem[i].all) ; 1087 | printf(" %03.2f ",ca) ; 1088 | 1089 | for ( int j = 0 ; j < res.elem[i].gid.size() ; j++ ) 1090 | { 1091 | if ( j != 0 ) 1092 | cout <<"\n " ; 1093 | int tmp = res.elem[i].gid[j] ; 1094 | cout << " " << j+1 << "." << all_goods[tmp].name ; 1095 | if ( j == 0 ) 1096 | { 1097 | if ( res.elem[i].pay_way == 0 || res.elem[i].pay_way == 1 ) 1098 | { 1099 | cout << " " ; 1100 | cout << (i % 3) + 1 ; 1101 | } 1102 | else 1103 | { 1104 | cout << " 无(店内消费)" ; 1105 | } 1106 | } 1107 | } 1108 | cout << "\n" << endl ; 1109 | } 1110 | cout << endl ; 1111 | } 1112 | 1113 | 1114 | 1115 | -------------------------------------------------------------------------------- /C/merge-sort-顺序表-迭代.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | using namespace std ; 4 | 5 | void merge(vector&s,vector&d,int l,int m, int r) ; 6 | void merge_sort(vector &arr ) ; 7 | void mergepass(vector &s, vector &d , int step ) ; 8 | 9 | void show_elem(vector a) { 10 | for ( int i = 0 ; i < a.size() ; i++ ) 11 | cout << a[i] << " " ; 12 | cout << endl ; 13 | } 14 | void merge_sort(vector &arr ) { 15 | int i = 1 , len = arr.size() ; 16 | vector tmp (len) ; 17 | while ( i < len ) { 18 | mergepass(arr,tmp,i) ; 19 | i *= 2 ; 20 | if ( i > len ) { 21 | for ( int j = 0 ; j < len ; j++ ) 22 | arr[j] = tmp[j] ; 23 | return ; 24 | } 25 | mergepass(tmp,arr,i) ; 26 | i *= 2 ; 27 | } 28 | } 29 | 30 | void mergepass(vector &s, vector &d , int step ) { 31 | int i = 0 , len = s.size() ; 32 | while ( i < len - step + 1 ) { 33 | int tmp = min(len-1,i+2*step-1) ; 34 | merge(s, d,i,i+step-1,tmp) ; 35 | i = 2*step + i ; 36 | } 37 | for ( int j = i ; j < len ; j++ ) 38 | d[j] = s[j] ; 39 | } 40 | 41 | void merge(vector&s,vector&d,int l,int m, int r) { 42 | int i = l , j = m+1 , k = l ; 43 | while ( i <= m && j <= r ) 44 | d[k++] = (s[i]>s[j]) ? (s[j++]) : s[i++] ; 45 | while ( i <= m ) 46 | d[k++] = s[i++] ; 47 | while ( j <= r ) 48 | d[k++] = s[j++] ; 49 | } 50 | 51 | int main(){ 52 | int tmp[] = {5,8,2,0,6,9,1,3,7,4} ; 53 | vector arr (tmp,tmp+10) ; 54 | cout << "Before merge sort:" << endl ; 55 | show_elem(arr) ; 56 | merge_sort(arr) ; 57 | cout << "\nAfter merge sort:" << endl ; 58 | show_elem(arr) ; 59 | return 0 ; 60 | } -------------------------------------------------------------------------------- /C/merge_sort-顺序表实现-递归法.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | using namespace std ; 4 | 5 | void show_elem(vector a) { 6 | for ( int i = 0 ; i < a.size() ; i++ ) 7 | cout << a[i] << " " ; 8 | cout << endl ; 9 | } 10 | 11 | void Merge(vector &arr, int l , int m , int r , vector temp ){ 12 | int i , j , k = 0 ; 13 | for ( i = l , j = m + 1 ; i <= m && j <= r ; ) { 14 | if ( arr[i] < arr[j] ) { 15 | temp[k++] = arr[i++] ; 16 | } 17 | else { 18 | temp[k++] = arr[j++] ; 19 | } 20 | } 21 | while ( i <= m ) 22 | temp[k++] = arr[i++] ; 23 | while ( j <= r ) 24 | temp[k++] = arr[j++] ; 25 | k = 0 ; 26 | while ( l <= r ) 27 | arr[l++] = temp[k++] ; 28 | } 29 | 30 | void Msort(vector &arr, int l, int r, vector temp ) { 31 | if ( l < r ) { 32 | int m = (l+r) / 2 ; 33 | Msort(arr,l,m,temp) ; 34 | Msort(arr,m+1,r,temp) ; 35 | Merge(arr,l,m,r,temp) ; 36 | } 37 | } 38 | 39 | void sort(vector &arr ) { 40 | vector temp (10) ; 41 | Msort(arr,0,arr.size()-1,temp) ; 42 | } 43 | 44 | 45 | int main(){ 46 | int tmp[] = {5,8,2,0,6,9,1,3,7,4} ; 47 | vector arr (tmp,tmp+10) ; 48 | cout << "Before merge sort:" << endl ; 49 | show_elem(arr) ; 50 | sort(arr) ; 51 | cout << "\nAfter merge sort:" << endl ; 52 | show_elem(arr) ; 53 | return 0 ; 54 | } -------------------------------------------------------------------------------- /C/p16t3.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | using namespace std ; 4 | 5 | int n = 20 ; 6 | int a[20] = {3,6,71,1,9,18,22,12,57,14,24,16,19,83,66,35,80,45,33,91} ; 7 | 8 | 9 | /* 10 | 朴素算法 : 11 | 时间复杂度:O(N^2) 12 | 伪代码: 13 | 1. 假设数组a长度为n( n >= 3) ,设 res = INT32_MAX ; 14 | 2. 遍历数组a中下标从0到n-2的数,设下标为i 15 | a. 遍历数组a中下标从i+1到n-1,设下标为j 16 | -> 求 a[i] 和 a[j] 差的绝对值 tmp = abs(a[i]-a[j]) 17 | -> 比较tmp和res,如果 res > tmp ,则设 res = tmp 18 | 3. res就是数组a中相差最小的两个元素的的差 19 | 20 | */ 21 | 22 | void search1(int b[], int num) { 23 | int res = INT32_MAX ; 24 | int t1 = 0, t2 = 0, tmp = 0 ; 25 | for ( int i = 0 ; i < num - 1 ; i++ ) { 26 | for ( int j = i + 1 ; j < num ; j++ ) { 27 | tmp = abs(b[i]-b[j]) ; 28 | if ( tmp < res ) { 29 | t1 = b[i] ; 30 | t2 = b[j] ; 31 | res = tmp ; 32 | } 33 | } 34 | } 35 | cout << "In search1:" << endl ; 36 | cout << "在数组中," << t1 << " 和 " << t2 << " 之间的差最小为: " << res << endl ; 37 | } 38 | 39 | /* 40 | 快速算法: 41 | 时间复杂度: O(N*logN) 42 | 伪代码: 43 | 1. 假设数组a长度为n( n >= 3) 44 | 2. 对数组a进行快速排序,获得升序的数组的a 45 | 3. 令 t1 = a[0], t2 = a[1], tmp = a[1] - a[0] 46 | 4. 遍历数组a,设 i, j 为 数组下标,初始化 i = 1, j = 2 47 | a. 若 a[j] - a[i] < tmp, 令 t1 = a[i], t2 = a[j], tmp = a[j] - a[i] 48 | 5. tmp就是数组a中相差最小的两个元素的的差 49 | */ 50 | 51 | void quicksort(int b[], int left, int right) { 52 | if ( left >= right ) 53 | return ; 54 | int l = left, r = right, tmp = b[left] ; 55 | while ( l < r ) { 56 | while ( l < r && tmp <= b[r] ) 57 | r-- ; 58 | b[l] = b[r] ; 59 | while ( l < r && tmp >= b[l] ) 60 | l++ ; 61 | b[r] = b[l] ; 62 | } 63 | b[l] = tmp ; 64 | quicksort(b,left,l-1) ; 65 | quicksort(b,l+1,right) ; 66 | } 67 | 68 | void search2(int b[], int num) { 69 | quicksort(b,0,num-1) ; 70 | int t1 = b[0], t2 = b[1], tmp = b[1] - b[0] ; 71 | for ( int i = 1, j = 2 ; i < num && j < num ; i++, j++ ) { 72 | if ( b[j] - b[i] < tmp ) { 73 | tmp = b[j] - b[i] ; 74 | t1 = b[i] ; 75 | t2 = b[j] ; 76 | } 77 | } 78 | cout << "In search2:" << endl ; 79 | cout << "在数组中," << t1 << " 和 " << t2 << " 之间的差最小为: " << tmp << endl ; 80 | } 81 | 82 | int main() { 83 | search1(a,n) ; 84 | search2(a,n) ; 85 | return 0 ; 86 | } -------------------------------------------------------------------------------- /C/p16t4.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std ; 3 | 4 | int n = 20 ; 5 | int a[20] = {3,6,71,1,9,18,22,12,57,14,24,16,19,83,66,35,80,45,33,91} ; 6 | 7 | /* 8 | 伪代码: 9 | 1. 假设数组a长度为n,切数组a中至少有3个元素的值互不相等,设 minn = INT32_MAX, maxx = INT32_MIN。 10 | 2 遍历数组a下标从0到n-1的数,设下标为i 11 | a. 若 minn > a[i], 则令 minn = a[i] 12 | b. 若 maxx < a[i], 则令 maxx = a[i] 13 | 3. 遍历数组a下标从0到n-1的数,设下标为i 14 | a. 若 a[i] != minn 并且 a[i] != maxx,则当前 a[i] 就是一个既不是最大值,也不是最小值的数,输出 a[i],退出循环 15 | 16 | 分析 (最坏情况): 17 | 1. 寻找最大值和最小值: 比较 (2*n) 次 18 | 2. 寻找不是最大也不是最小的元素,最坏情况是,前 (n-1) 都等于最大值或等于最小值,就需要比较 n 次 19 | 所以: 最坏情况下比较 (3*n) 次 20 | */ 21 | 22 | void find(int b[], int num) { 23 | int maxx = INT32_MIN, minn = INT32_MAX ; 24 | for ( int i = 0 ; i < num ; i++ ) { 25 | if ( maxx < b[i] ) { 26 | maxx = b[i] ; 27 | } 28 | if ( minn > b[i] ) { 29 | minn = b[i] ; 30 | } 31 | } 32 | cout << "最大值:" << maxx << " 最小值:" << minn << endl ; 33 | for ( int i = 0 ; i < num ; i++ ) { 34 | if ( b[i] != minn && b[i] != maxx ) { 35 | cout << "一个既不是最大值也不是最小值的元素:" << b[i] << endl ; 36 | break ; 37 | } 38 | } 39 | } 40 | 41 | int main() { 42 | find(a,n) ; 43 | return 0 ; 44 | } -------------------------------------------------------------------------------- /C/p16t5.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std ; 3 | 4 | int main() { 5 | for ( int n = 1 ; ; n++ ) { 6 | if ( n % 2013 == 0 ) { 7 | cout << "至少 " << n << " 个1组成的整数能被 2013 整除." << endl ; 8 | break ; 9 | } 10 | } 11 | return 0 ; 12 | } -------------------------------------------------------------------------------- /C/quick_sort.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | using namespace std ; 4 | 5 | void show_elem(vector a) { 6 | for ( int i = 0 ; i < a.size() ; i++ ) 7 | cout << a[i] << " " ; 8 | cout << endl ; 9 | } 10 | 11 | void quicksort(vector &arr, int left , int right ) { 12 | if ( left < right ) { 13 | int l = left , r = right , tmp = arr[left] ; 14 | while ( l != r ) { 15 | while ( l < r && arr[r] >= tmp ) 16 | r-- ; 17 | arr[l] = arr[r] ; 18 | while ( l < r && arr[l] <= tmp ) 19 | l++ ; 20 | arr[r] = arr[l] ; 21 | } 22 | arr[l] = tmp ; 23 | quicksort(arr,left,l-1) ; // 将两边的子序列排序 24 | quicksort(arr,l+1,right) ; 25 | } 26 | } 27 | 28 | int main(){ 29 | int tmp[] = {5,8,2,0,6,9,1,3,7,4} ; 30 | vector arr (tmp,tmp+10) ; 31 | cout << "Before quick sort:" << endl ; 32 | show_elem(arr) ; 33 | quicksort(arr,0,arr.size()-1) ; 34 | cout << "After quick sort:" << endl ; 35 | show_elem(arr) ; 36 | return 0 ; 37 | } -------------------------------------------------------------------------------- /C/test-for1: -------------------------------------------------------------------------------- 1 | // 数据结构实验一 2 | 6 3 | 1 16 abc 4 | 2 17 bcd 5 | 6 16 efg 6 | 7 18 ert 7 | 9 16 zcc 8 | 11 17 zhh 9 | 8 10 | 1 16 abc 11 | 6 16 efg 12 | 9 16 zcc 13 | 5 15 wwz 14 | 4 17 asz 15 | 8 18 qwe 16 | 12 10 wer 17 | 7 18 ert 18 | 19 | // 基数排序(链表) 20 | 16 21 | 1114 22 | 3217 23 | 84 24 | 5488 25 | 6 26 | 891 27 | 1 28 | 435 29 | 2332 30 | 79 31 | 540 32 | 9999 33 | 8235 34 | 233 35 | 43 36 | 6666 37 | 38 | // 基数排序(链表) 39 | 10 40 | 10 41 | 29 42 | 2 43 | 48 44 | 13 45 | 67 46 | 94 47 | 26 48 | 55 -------------------------------------------------------------------------------- /C/基数排序-低位.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | using namespace std ; 4 | struct node { 5 | struct node *next ; 6 | int data ; 7 | node() : data(0), next(NULL) {} 8 | } ; 9 | int num , bit = 4 ; 10 | struct node * InitNode(struct node * head , int & num ) ; 11 | void show_elem(struct node *head ) ; 12 | struct node * GetFirstNode(struct node *head) ; 13 | void AppendNode(struct node *head,struct node *tmp) ; 14 | void Total(struct node *L, struct node *tmp ) ; 15 | int GetNum(struct node *p , int pos ) ; 16 | void radix_sort(struct node *head) ; 17 | 18 | struct node * InitNode(struct node * head , int & num ) { 19 | struct node *tmp = head ; 20 | cin >> num ; 21 | for ( int i = 0 ; i < num ; i++ ) { 22 | tmp->next = new node() ; 23 | tmp = tmp->next ; 24 | cin >> tmp->data ; 25 | } 26 | return head ; 27 | } 28 | 29 | void show_elem(struct node *head ) { 30 | struct node *tmp = head->next ; 31 | cout << "Show elem:" << endl ; 32 | while ( tmp ) { 33 | cout << tmp->data ; 34 | tmp = tmp->next ; 35 | if ( tmp ) 36 | cout << " -> " ; 37 | } 38 | cout << "\n\n" ; 39 | } 40 | 41 | struct node * GetFirstNode(struct node *head) { 42 | if ( head->next == NULL ) 43 | return NULL; 44 | struct node *p ; 45 | p = head->next ; 46 | head->next = p->next ; 47 | return p ; 48 | } 49 | 50 | void AppendNode(struct node *head,struct node *tmp) { 51 | if ( head == NULL ) 52 | return ; 53 | struct node *p ; 54 | p = head ; 55 | while ( p->next != NULL ) 56 | p = p->next ; 57 | p->next = tmp ; 58 | tmp->next = NULL ; 59 | } 60 | 61 | void Total(struct node *L, struct node *tmp ) { 62 | struct node *p = L ; 63 | while ( p->next != NULL ) 64 | p = p->next ; 65 | p->next = tmp->next ; 66 | } 67 | 68 | int GetNum(struct node *p , int pos ) { 69 | int data = p->data , res , i = 0 ; 70 | while ( i < pos ) { 71 | res = data % 10 ; 72 | data /= 10 ; 73 | i++ ; 74 | } 75 | return res ; 76 | } 77 | 78 | void radix_sort(struct node *head) { 79 | struct node *p[10] , *q ; 80 | int i , j , k ; 81 | for( j = 1 ; j <= bit ; j++ ){ 82 | for( i = 0 ; i < 10 ; i++ ) 83 | p[i] = new node() ; 84 | while( head->next!= NULL ) { 85 | q = GetFirstNode(head) ; 86 | k = GetNum(q,j) ; 87 | AppendNode(p[k],q) ; 88 | } 89 | for( i = 0 ; i < 10 ; i++) 90 | Total(head,p[i]) ; 91 | } 92 | for( i = 0 ; i < 10 ; i++ ) 93 | delete(p[i]); 94 | } 95 | 96 | int main() { 97 | struct node *head = new node() ; 98 | head = InitNode(head,num) ; 99 | cout << "\nBefore radix sort " ; 100 | show_elem(head) ; 101 | radix_sort(head) ; 102 | cout << "\nAfter radix sort " ; 103 | show_elem(head) ; 104 | return 0 ; 105 | } -------------------------------------------------------------------------------- /C/基数排序-高位.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | using namespace std ; 4 | struct node { 5 | struct node *next ; 6 | int data ; 7 | node() : data(0), next(NULL) {} 8 | } ; 9 | int num , bit = 4 ; 10 | struct node *result = new node() ; 11 | 12 | struct node * InitNode(struct node * head , int & num ) { 13 | int n , id , age , i , t1 , t2 ; 14 | struct node *tmp = head ; 15 | cin >> n ; 16 | num = n ; 17 | for ( i = 0 ; i < n ; i++ ) { 18 | tmp->next = new node() ; 19 | tmp = tmp->next ; 20 | cin >> tmp->data ; 21 | } 22 | return head ; 23 | } 24 | 25 | void show_elem(struct node *head ) { 26 | struct node *tmp = head->next ; 27 | cout << "Show elem:" << endl ; 28 | while ( tmp ) { 29 | cout << tmp->data ; 30 | tmp = tmp->next ; 31 | if ( tmp ) 32 | cout << " -> " ; 33 | } 34 | cout << "\n\n" ; 35 | } 36 | 37 | struct node * GetFirstNode(struct node *head) { 38 | if ( head->next == NULL ) 39 | return NULL; 40 | struct node *p ; 41 | p = head->next ; 42 | head->next = p->next ; 43 | return p ; 44 | } 45 | 46 | void AppendNode(struct node *head,struct node *tmp) { 47 | if ( head == NULL ) 48 | return ; 49 | struct node *p ; 50 | p = head ; 51 | while ( p->next != NULL ) 52 | p = p->next ; 53 | if ( tmp == NULL ) { 54 | p->next = NULL ; 55 | return ; 56 | } 57 | p->next = tmp ; 58 | tmp->next = NULL ; 59 | } 60 | 61 | int GetNum(struct node *p , int pos ) { 62 | int data = p->data , res , i = 0 ; 63 | while ( i < pos ) { 64 | res = data % 10 ; 65 | data /= 10 ; 66 | i++ ; 67 | } 68 | return res ; 69 | } 70 | 71 | void radix_sort(struct node *head ,int pos ) { 72 | struct node *p[10] , *q ; 73 | int i , j ,k ; 74 | for ( i = 0 ; i < 10 ; i++ ) 75 | p[i] = new node() ; 76 | for ( i = pos ; i >= 1 ; i-- ) { 77 | while ( head->next != NULL ) { 78 | q = GetFirstNode(head) ; 79 | k = GetNum(q,i) ; 80 | AppendNode(p[k],q) ; 81 | } 82 | if ( i == 1 ) { 83 | for ( j = 0 ; j < 10 ; j++ ) { 84 | if ( p[j]->next ) 85 | AppendNode(result,p[j]->next) ; 86 | } 87 | return ; 88 | } 89 | for ( j = 0 ; j < 10 ; j++ ) 90 | radix_sort(p[j],pos-1) ; 91 | } 92 | for ( i = 0 ; i < 10 ; i++ ) 93 | delete(p[i]) ; 94 | return ; 95 | } 96 | 97 | int main() { 98 | struct node *head = new node() ; 99 | head = InitNode(head,num) ; 100 | cout << endl ; 101 | cout << "Before radix sort " ; 102 | show_elem(head) ; 103 | radix_sort(head,4) ; 104 | cout << "\nAfter radix sort " ; 105 | show_elem(result) ; 106 | return 0 ; 107 | } 108 | -------------------------------------------------------------------------------- /C/插入排序.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | using namespace std ; 4 | typedef int Item ; 5 | #define key(A) (A) 6 | #define less(A,B) (key(A) < key(B)) 7 | #define exch(A,B) { Item t = A ; A = B ; B = t ; } 8 | #define compexch(A,B) if (less(B,A)) exch(A,B) 9 | 10 | void show_elem(int a[] , int num ) { 11 | for ( int i = 0 ; i < num ; i++ ) 12 | cout << a[i] << " " ; 13 | cout << endl ; 14 | } 15 | void insertion(Item a[] , int l , int r ) { 16 | for ( int i = r - 1 ; i > l ; i-- ) 17 | compexch(a[i-1],a[i]) ; // 这个循环将最小值放到第一位 18 | for ( int i = l+2 ; i < r ; i++ ) { 19 | int j = i ; 20 | Item v = a[i] ; 21 | while (less(v,a[j-1])) { //从后往前遍历,遇到比当前值大的值,后移,反之,跳出循环 22 | a[j] = a[j-1] ; 23 | j-- ; 24 | } 25 | a[j] = v ; 26 | } 27 | } 28 | 29 | int main() { 30 | int a[] = {5,8,2,0,6,9,1,3,7,4} ; 31 | cout << "Before insertion sort : " << endl ; 32 | show_elem(a,10) ; 33 | insertion(a,0,10) ; 34 | cout << "After insertion sort : " << endl ; 35 | show_elem(a,10) ; 36 | return 0 ; 37 | } -------------------------------------------------------------------------------- /C/数据结构实验一.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | using namespace std ; 4 | int len_a , len_b , all ; 5 | struct St { 6 | int id , age ; 7 | char name[10] ; 8 | struct St * next ; 9 | St(int x , int y) : id(x), age(y) , next(NULL) {} 10 | } ; 11 | struct St * InitSt(struct St * head , int & num ) { 12 | int n , id , age , i ; 13 | struct St *tmp = head ; 14 | char name[10] ; 15 | cin >> n ; 16 | num = n ; 17 | for ( i = 0 ; i < n ; i++ ){ 18 | cin >> id >> age ; 19 | tmp->next = new St(id,age) ; 20 | tmp = tmp->next ; 21 | cin >> tmp->name ; 22 | } 23 | return head ; 24 | } 25 | void show_stuinfo(struct St *head ) { 26 | struct St * tmp = head->next ; 27 | printf(" Show Student message!\n") ; 28 | printf(" ID age name \n") ; 29 | for ( ; tmp != NULL ; tmp = tmp->next ) { 30 | printf("%6d %18d %s\n",tmp->id,tmp->age,tmp->name) ; 31 | } 32 | } 33 | struct St* getset(struct St *a , struct St *b ) { 34 | struct St* res = a , *tmp1 , *tmp2 = b->next , *end = a->next ; 35 | int i , flag ; 36 | while ( end->next != NULL ) { 37 | end = end->next ; 38 | } 39 | for ( ; tmp2 != NULL ; tmp2 = tmp2->next ){ 40 | for ( i = 0 , flag = 0 , tmp1 = a->next ; i < len_a && tmp1 != NULL ; tmp1 = tmp1->next , i++ ) { 41 | if ( tmp1->id == tmp2->id ){ 42 | flag = 1 ; 43 | break ; 44 | } 45 | } 46 | if ( flag == 0 ){ 47 | end->next = tmp2 ; 48 | end = end->next ; 49 | all++ ; 50 | } 51 | } 52 | end->next = NULL ; 53 | return res ; 54 | } 55 | int main() { 56 | struct St * head_a = new St(0,0) , * head_b = new St(0,0) ; 57 | head_a = InitSt(head_a,len_a) ; 58 | head_b = InitSt(head_b,len_b) ; 59 | all = len_a ; 60 | cout << "Before the operation" << endl ; 61 | cout << endl ; 62 | cout << "The student message in A, the are " << len_a << " students at all" << endl ; 63 | show_stuinfo(head_a) ; 64 | cout << endl ; 65 | cout << "The student message in B, the are " << len_b << " students at all" << endl ; 66 | show_stuinfo(head_b) ; 67 | cout << endl ; 68 | struct St *res = getset(head_a,head_b) ; 69 | cout << "After the operation" << endl ; 70 | cout << "The student message in A and B, the are " << all << " students at all" << endl ; 71 | show_stuinfo(res) ; 72 | return 0 ; 73 | } -------------------------------------------------------------------------------- /C/计数排序.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | using namespace std ; 4 | 5 | void show_elem(vector a) { 6 | for ( int i = 0 ; i < a.size() ; i++ ) 7 | cout << a[i] << " " ; 8 | cout << endl ; 9 | } 10 | 11 | void countsort(vector &arr ) { 12 | int len = arr.size() , minn = arr[0] , maxx = arr[0] , i ; 13 | vector temp (len) ; 14 | for ( i = 1 ; i < len ; i++ ) { 15 | maxx = max(maxx,arr[i]) ; 16 | minn = min(minn,arr[i]) ; 17 | } 18 | vector tmp(maxx-minn+1,0) ; 19 | for ( i = 0 ; i < len ; i++ ) 20 | tmp[arr[i]-minn]++ ; 21 | for ( i = 1 ; i < tmp.size() ; i++ ) 22 | tmp[i] += tmp[i-1] ; 23 | for ( i = len-1 ; i>=0 ; i-- ) { 24 | temp[tmp[arr[i]-minn]-1] = arr[i] ; 25 | tmp[arr[i]-minn]-- ; 26 | } 27 | arr.assign(temp.begin(),temp.end()) ; 28 | } 29 | int main(){ 30 | int tmp[] = {5,8,2,10,6,9,1,3,7,4,4,-1} ; 31 | vector arr (tmp,tmp+12) ; 32 | cout << "Before count sort:" << endl ; 33 | show_elem(arr) ; 34 | countsort(arr) ; 35 | cout << "After count sort:" << endl ; 36 | show_elem(arr) ; 37 | return 0 ; 38 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 随便说几句QAQ 2 | - 这个仓库记录了我开始学c语言,从什么不会,到现在依旧很渣的血泪史QWQ!!! 3 | 都是我写的c语言,没什么营养,全都是课后习题啊,很奇怪的万年历啊,很无聊的作业之类的. 4 | --------------------------------------------------------------------------------