@@ -1,16 +1,5 @@
BasedOnStyle: LLVM
IndentWidth: 4
UseTab: Never
-AlignConsecutiveDeclarations: true
-AlignConsecutiveAssignments: true
BreakBeforeBraces: Stroustrup
ColumnLimit: 120
-AllowShortBlocksOnASingleLine: true
-AllowShortCaseLabelsOnASingleLine: true
-AllowShortFunctionsOnASingleLine: Inline
-AllowShortIfStatementsOnASingleLine: true
-AllowShortLoopsOnASingleLine: true
-SpaceBeforeParens: ControlStatements
-SpacesInParentheses: false
-SpacesInAngles: false
-SpacesBeforeTrailingComments: 1
@@ -0,0 +1,7 @@
+#include <stdio.h> // 这是编译预处理指令
+int main( ) // 定义主函数
+{ // 函数开始的标志
+ printf ("This is a C program.\n"); // 输出所指定的一行信息
+ return 0; // 函数执行完毕时返回函数值0
+}
+
@@ -0,0 +1,13 @@
+#include <stdio.h> // 这是编译预处理命令
+{ // 函数开始
+ int a,b,sum; // 本行是程序的声明部分,定义a、b、sum为整型变量
+ a = 123; // 对变量a赋值
+ b = 456; // 对变量b赋值
+ sum = a + b; // 进行a+b 的运算,并把结果存放在变量sum中
+ printf("sum is %d\n",sum); // 输出结果
+ return 0; // 使函数返回值为0
+} // 函数结束
@@ -0,0 +1,18 @@
+#include <stdio.h>
+{ // 主函数体开始
+ int max(int x,int y); // 对被调用函数max的声明
+ int a,b,c; // 定义变量a,b,c
+ scanf("%d,%d",&a,&b); // 输入变量a和b的值
+ c = max(a,b); // 调用max函数,将得到的值赋给c
+ printf("max=%d\n",c); // 输出c的值
+ return 0; // 返回函数值为0
+int max(int x,int y) //定义max函数,函数值为整型, 形式参数x和y为整型
+{
+ int z; // max函数中的声明部分,定义本函数中用到的变量z为整型
+ if (x > y) z = x;
+ else z = y;
+ return(z); //将z的值返回,通过max带回到调用函数的位置
@@ -0,0 +1,26 @@
+#include <stdlib.h>
+int main()
+ {FILE *fp;
+ char ch,filename[10];
+ printf("请输入所用的文件名:");
+ scanf("%s",filename);
+ if((fp=fopen(filename,"w"))==NULL) // 打开输出文件并使fp指向此文件
+ {
+ printf("无法打开此文件\n"); // 如果打开时出错,就输出"打不开"的信息
+ exit(0); // 终止程序*/
+ }
+ ch=getchar( ); // 接收在执行scanf语句时最后输入的回车符
+ printf("请输入一个准备存储到磁盘的字符串(以#结束):");
+ ch=getchar( ); // 接收从键盘输入的第一个字符
+ while(ch!='#') // 当输入'#'时结束循环
+ fputc(ch,fp); // 向磁盘文件输出一个字符
+ putchar(ch); // 将输出的字符显示在屏幕上
+ ch=getchar(); // 再接收从键盘输入的一个字符
+ fclose(fp); // 关闭文件
+ putchar(10); // 向屏幕输出一个换行符,换行符的ASCII代码为10
+ return 0;
@@ -0,0 +1,29 @@
+int main( )
+ {FILE *in,*out;
+ char ch,infile[10],outfile[10]; // 定义两个字符数组,分别存放两个文件名
+ printf("输入读入文件的名字:");
+ scanf("%s",infile); // 输入一个输入文件的名字
+ printf("输入输出文件的名字:");
+ scanf("%s",outfile); // 输入一个输出文件的名字
+ if((in=fopen(infile,"r"))==NULL) // 打开输入文件
+ {printf("无法打开此文件\n");
+ exit(0);
+ if((out=fopen(outfile,"w"))==NULL) // 打开输出文件
+ ch=fgetc(in); //从输入文件读入一个字符,放在变量ch中
+ while(!feof(in)) // 如果未遇到输入文件的结束标志
+ {fputc(ch,out); // 将ch写到输出文件中
+ putchar(ch); // 将ch显示在屏幕上
+ ch=fgetc(in); // 从输入文件读入一个字符,放在变量ch中
+ putchar(10); // 显示完全部字符后换行
+ fclose(in); // 关闭输入文件
+ fclose(out); // 关闭输出文件
@@ -0,0 +1,33 @@
+#include <string.h>
+{ FILE *fp;
+ char str[3][10],temp[10]; // str是用来存放字符串的二维数组,temp是临时数组
+ int i,j,k,n=3;
+ printf("Enter strings:\n"); // 提示输入字符串 */
+ for(i=0;i<n;i++)
+ gets(str[i]); // 输入字符串
+ for(i=0;i<n-1;i++) // 用选择法对字符串排序
+ {k=i;
+ for(j=i+1;j<n;j++)
+ if(strcmp(str[k],str[j])>0) k=j;
+ if(k!=i)
+ {strcpy(temp,str[i]);
+ strcpy(str[i],str[k]);
+ strcpy(str[k],temp);
+ if((fp=fopen("D:\\CC\\string.dat","w"))==NULL) // 打开磁盘文件
+ printf("can't open file!\n");
+ printf("\nThe new sequence:\n");
+ {fputs(str[i],fp);fputs("\n",fp); // 撤号
+ printf("%s\n",str[i]); // 在屏幕上显示字符串
@@ -0,0 +1,17 @@
+ char str[3][10];
+ int i=0;
+ if((fp=fopen("D:\\CC\\string.dat","r"))==NULL) // 注意文件名必须与前相同
+ {printf("can't open file!\n");
+ while(fgets(str[i],10,fp)!=NULL)
+ {printf("%s",str[i]);
+ i++;
+ fclose(fp);
@@ -0,0 +1,31 @@
+#define SIZE 10
+struct student_type
+ {char name[10];
+ int num;
+ int age;
+ char addr[15];
+ }stud[SIZE]; // 定义全局结构体数组stud,包含10个学生数据
+void save( ) // 定义函数save,向文件输出SIZE个学生的数据
+ int i;
+ if((fp=fopen ("stu.dat","wb"))==NULL) // 打开输出文件atu_list
+ {printf("cannot open file\n");
+ return;
+ for(i=0;i<SIZE;i++)
+ if(fwrite (&stud[i],sizeof (struct student_type),1,fp)!=1)
+ printf ("file write error\n");
+ {int i;
+ printf("Please enter data of students:\n");
+ for(i=0;i<SIZE;i++) // 输入SIZE个学生的数据,存放在数组stud中
+ scanf("%s%d%d%s",stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr);
+ save( );
+ }stud[SIZE];
+ FILE *fp;
+ if((fp=fopen ("stu.dat","rb"))==NULL) // 打开输入文件atu.dat
+ exit(0) ;
+ {fread (&stud[i],sizeof(struct student_type),1,fp); // 从fp指向的文件读入一组数据
+ printf ("%-10s %4d %4d %-15s\n",stud[i].name,stud[i].num,stud[i]. age,stud[i].addr);
+ // 在屏幕上输出这组数据
+ fclose (fp); // 关闭文件"stu.dat"
@@ -0,0 +1,47 @@
+void load( )
+ if((fp=fopen("stu_list","rb"))==NULL) // 打开输入文件stu_list
+ {printf("cannot open infile\n");
+ if(fread(&stud[i],sizeof(struct student_type),1,fp)!=1) // 从stu_ list文件中读数据
+ {if(feof(fp))
+ {fclose(fp);
+ printf("file read error\n");
+ fclose (fp);
+ load();
+#include<stdio.h>
+ {FILE *fp1,*fp2;
+ fp1=fopen("file1.dat","r"); // 打开输入文件
+ fp2=fopen("file2.dat","w"); // 打开输出文件
+ while(!feof(fp1)) putchar(getc(fp1)); // 逐个读入字符并输出到屏幕
+ putchar(10); // 输出一个换行
+ rewind(fp1); // 使文件位置指示器返回文件头
+ while(!feof(fp1)) putc(getc(fp1),fp2); // 从文件头重新逐个读字符,输出到file2文件
+ fclose(fp1);fclose(fp2);
@@ -0,0 +1,25 @@
+struct student_type // 学生数据类型
+ { char name[10];
+ }stud[10];
+ { int i;
+ if((fp=fopen("stu.dat","rb"))==NULL) // 以只读方式打开二进制文件
+ {printf("can not open file\n");
+ for(i=0;i<10;i+=2)
+ {fseek(fp,i*sizeof(struct student_type),0); // 移动位置指针
+ fread(&stud[i], sizeof(struct student_type),1,fp); // 读一个数据块到结构体变量
+ printf("%-10s %4d %4d %-15s\n",stud[i].name,stud[i].num,stud[i].age,stud[i].addr); // 在屏幕输出
@@ -0,0 +1,15 @@
+ int i,t;
+ t=1;
+ i=2;
+ while(i<=5)
+ t=t*i;
+ i=i+1;
+ printf("%d\n",t);
+ int sign=1;
+ double deno=2.0,sum=1.0,term; // ¶¨Òådeno,sum,termΪ˫¾«¶È±äÁ¿
+ while (deno<=100)
+ sign=-sign;
+ term=sign/deno;
+ sum=sum+term;
+ deno=deno+1;
+ printf("%f\n",sum);
@@ -0,0 +1,9 @@
+int main ( )
+ float f,c; // 定义f和c为单精度浮点型变量
+ f=64.; // 指定f的值
+ c=(5.0/9)*(f-32); // 利用公式计算c的值
+ printf("f=%f\nc=%f\n",f,c); // 输出c的值
+ char c1,c2;
+ c1=getchar(); // 从键盘读入一个大写字符,赋给字符变量c1
+ c2=c1+32; // 得到对应的小写字符的ASCII代码,放在字符变量c2中
+ printf("大写字母:%c\n小写字母:%c\n",c1,c2); // 输出c1,c2的值---大小写字符
@@ -0,0 +1,16 @@
+ c1=getchar(); // 从键盘读入一个字符,赋给字符变量c1
+ c2=c1+32; // 得到字符'a'的ASCII代码,放在字符变量c2中
+ putchar(c2); // 输出c2的值,是一个字符
+ putchar('\n');
@@ -0,0 +1,10 @@
+ float p0=1000,r1=0.0036,r2=0.0225,r3=0.0198,p1,p2,p3;
+ p1 = p0 * (1 + r1);
+ p2 = p0 * (1 + r2);
+ p3 = p0 * (1 + r3/2) * (1 + r3/2);
+ printf("p1=%f\np2=%f\np3=%f\n",p1,p2,p3);
+ c1='A'; // 将字符'A'的ASCII代码放到c1变量中
+ c2=c1+32; // 得到字符'a'的ASCII代码,放在c2变量中
+ printf("%c\n",c2); // 输出c2的值,是一个字符
+ printf("%d\n",c2); // 输出c2的值,是字符'a'的ASCII代码
+#include <math.h>
+ double a,b,c,s,area; // 定义各变量,均为double型
+ a=3.67; // 对边长a赋值
+ b=5.43; // 对边长b赋值
+ c=6.21; // 对边长c赋值
+ s=(a+b+c)/2; // 计算s
+ area=sqrt(s*(s-a)*(s-b)*(s-c)); // 计算area
+ printf("a=%f\tb=%f\t%f\n",a,b,c); // 输出三边a,b,c的值
+ printf("area=%f\n",area); // 输出面积area的值
@@ -0,0 +1,14 @@
+#include <math.h> // 程序中要调用求平方根函数sqrt
+ {double a,b,c,disc,x1,x2,p,q; // disc是判别式sqrt(b*b-4ac)
+ scanf("%lf%lf%lf",&a,&b,&c); // 输入实型变量的值要用格式声明"%f"
+ disc=b*b-4*a*c;
+ p=-b/(2.0*a);
+ q=sqrt(disc)/(2.0*a);
+ x1=p+q;x2=p-q; // 求出方程的两个根
+ printf("x1=%7.2f\nx2=%7.2f\n",x1,x2); // 输出方程的两个根
@@ -0,0 +1,8 @@
+{double a=1.0;
+ printf("%20.15f\n",a/3);
+ printf("%f\n",a/3);
+{float a;
+ a=10000/3.0;
+ printf("%f\n",a);
+ int a=66,b=79,c=89; // 定义3个字符变量,并初始化
+ putchar(a); // 向显示器输出字符B
+ putchar(b); // 向显示器输出字符O
+ putchar(c); // 向显示器输出字符Y
+ putchar ('\n'); // 向显示器输出一个换行符
+ char a,b,c; // 定义3个字符变量
+ a='B';b='O';c='Y'; // 给3个字符变量赋值
@@ -0,0 +1,12 @@
+{ putchar(getchar()); // 将接收到的字符输出
+ putchar(getchar()); // 将接收到的字符输出
+{ char a,b,c; // 定义字符变量a,b,c
+ a=getchar(); // 从键盘输入一个字符,送给字符变量a
+ b=getchar(); // 从键盘输入一个字符,送给字符变量b
+ c=getchar(); // 从键盘输入一个字符,送给字符变量c
+ putchar(a); // 将变量a的值输出
+ putchar(b); // 将变量a的值输出
+ putchar(c); // 将变量a的值输出
+ putchar('\n'); // 换行
+ char ch;
+ scanf("%c",&ch);
+ ch=(ch>='A' && ch<='Z') ? (ch+32) : ch;
+ printf("%c\n",ch);
+ scanf("%lf%lf%lf",&a,&b,&c); // 输入双精度浮点型变量的值要用格式声明"%lf"
+ if (disc<0)
+ printf("This equation hav't real roots\n");
+ else
+ { p=-b/(2.0*a);
+ printf("real roots:\nx1=%10.6f\nx2=%10.6f\n",x1,x2); // 输出方程的两个根
+ int c,s;
+ float p,w,d,f;
+ printf("please enter price,weight,discount:"); // 提示输入的数据
+ scanf("%f,%f,%d",&p,&w,&s); // 输入单价、重量、距离
+ if(s>=3000)
+ c=12; // 3000km以上为同一折扣
+ c=s/250; // 3000km以下各段折扣不同,c的值不相同
+ switch(c)
+ case 0: d=0; break; // c=0,代表250km以下,折扣d=0
+ case 1: d=2; break; // c=1,代表250到500km以下,折扣d=2%
+ case 2:
+ case 3: d=5; break; // c=2和3,代表500到1000km以下,折扣d=5%
+ case 4:
+ case 5:
+ case 6:
+ case 7: d=8; break; // c=4-7,代表1000到2000km以下,折扣d=8%
+ case 8:
+ case 9:
+ case 10:
+ case 11: d=10; break; // c=8-11,代表2000KM到3000km以下,折扣d=10%
+ case 12: d=15; break; // c12,代表3000km以上,折扣d=15%
+ f = p * w * s * (1 - d / 100); // 计算总运费
+ printf("freight=%10.2f\n",f); // 输出总运费,取两位小数
+ float a,b,t;
+ scanf("%f,%f",&a,&b);
+ if(a>b)
+ t=a;
+ a=b;
+ b=t;
+ printf("%5.2f,%5.2f\n",a,b);
@@ -0,0 +1,30 @@
+ float a,b,c,t;
+ scanf("%f,%f,%f",&a,&b,&c);
+ } // 实现a和b的互换
+ if(a>c)
+ a=c;
+ c=t;
+ } // 实现a和c的互换
+ if(b>c)
+ t=b;
+ b=c;
+ } // 实现b和c的互换
+ printf("%5.2f,%5.2f,%5.2f\n",a,b,c);
+ int x,y;
+ scanf("%d",&x);
+ if(x<0)
+ y=-1;
+ if(x==0) y=0;
+ else y=1;
+ printf("x=%d,y=%d\n",x,y);
+ if (x>=0)
+ if (x>0) y=1;
+ else y=0;
+ else y=-1;
+ char grade;
+ scanf("%c",&grade);
+ printf("Your score:");
+ switch(grade)
+ case 'A': printf("85ĄŤ100\n");break;
+ case 'B': printf("70ĄŤ84\n");break;
+ case 'C': printf("60ĄŤ69\n");break;
+ case 'D': printf("<60\n");break;
+ default: printf("data error!\n");
+ void action1(int,int),action2(int,int);
+ int a=15,b=23;
+ ch=getchar();
+ switch(ch)
+ case 'a':
+ case 'A': action1(a,b);break;
+ case 'b':
+ case 'B': action2(a,b);break;
+ default: putchar('\a');
+void action1(int x,int y)
+ printf("x+y=%d\n",x+y);
+void action2(int x,int y)
+ printf("x*y=%d\n",x*y);
+ int year,leap;
+ scanf("%d",&year);
+ if (year%4==0)
+ if(year%100==0)
+ if(year%400==0)
+ leap=1;
+ leap=0;
+ if (leap)
+ printf("%d is ",year);
+ printf("%d is not ",year);
+ printf("a leap year.\n");
@@ -0,0 +1,21 @@
+ if(year%4!=0)
+ else if (year%100!=0)
+ else if(year%400!=0)
+ printf("enter year:");
+ if((year%4==0 && year%100!=0) || (year%400==0))
@@ -0,0 +1,32 @@
+ double a,b,c,disc,x1,x2,realpart,imagpart;
+ scanf("%lf,%lf,%lf",&a,&b,&c);
+ printf("The equation ");
+ if(fabs(a)<=1e-6)
+ printf("is not a quadratic\n");
+ if(fabs(disc)<=1e-6)
+ printf("has two equal roots:%8.4f\n",-b/(2*a));
+ if(disc>1e-6)
+ x1=(-b+sqrt(disc))/(2*a);
+ x2=(-b-sqrt(disc))/(2*a);
+ printf("has distinct real roots:%8.4f and %8.4f\n",x1,x2);
+ realpart=-b/(2*a);
+ imagpart=sqrt(-disc)/(2*a);
+ printf(" has complex roots:\n");
+ printf("%8.4f+%8.4fi\n",realpart,imagpart);
+ printf("%8.4f-%8.4fi\n",realpart,imagpart);
+ {char c;
+ c=getchar(); // 输入一个字符给字符变量c
+ while(c!='\n') // 检查c的值是否换行符'\n'
+ {if((c>='a' && c<='z') || (c>='A' && c<='Z')) // c如果是字母
+ { if(c>='W' && c<='Z' || c>='w' && c<='z') c=c-22; // 如果是26个字母中最后4个字母之一
+ else c=c+4; // 如果是前面22个字母之一,就使c加4,即变成其后第4个字母
+ printf("%c",c); // 输出己改变的字符
+ c=getchar(); // 再输入下一个字符给字符变量c
+ printf("\n");
+ while((c=getchar())!='\n') // 输入一个字符给字符变量c并检查它c的值是否换行符
+ {if((c>='A' && c<='Z') || (c>='a' && c<='z')) // c如果是字母
+ { c=c+4; // 只要是字母,都先加4
+ if(c>='Z' && c<='Z'+4 || c>'z') // 如果是26个字母中最后4个字母之一
+ c=c-26; // c的值改变为26个字母中最前面的4个字母中对应的字母
+ c=getchar();
+ while(c!='\n')
+ {if((c>='a' && c<='z') || (c>='A' && c<='Z'))
+ { if(c>='W' && c<='Z' || c>='w' && c<='z') c=c-22;
+ else c=c+4;
+ printf("%c",c);
+#define SUM 100000
+ float amount,aver,total;
+ for (i=1,total=0;i<=1000;i++)
+ printf("please enter amount:");
+ scanf("%f",&amount);
+ total= total+amount;
+ if (total>=SUM) break;
+ aver=total/i;
+ printf("num=%d\naver=%10.2f\n",i,aver);
+ int i=1,sum=0; // 定义变量i的初值为1,sum的初值为0
+ while (i<=100) // 当i>100,条件表达式i<=100的值为假,不执行循环体
+ { // 循环体开始
+ sum=sum+i; // 第一次累加后,sum的值为1
+ i++; // 加完后,i的值加1,为下次累加作准备
+ } // 循环体结束
+ printf("sum=%d\n",sum); // 输出1+2+3…+100的累加和
+# include <stdio.h>
+# include <math.h>
+ {int n,k,i,m=0;
+ for(n=101;n<=200;n=n+2) // n从100变化到200,对每个n进行判定
+ { k=sqrt(n);
+ for (i=2;i<=k;i++)
+ if (n%i==0) break; // 如果n被i整除,终止内循环,此时i<k+1
+ if (i>=k+1) // 若j>=k+1,表示n未被整除
+ {printf("%d ",n); // 应确定n是素数
+ m=m+1; // m用来控制换行,一行内输出10个录素数
+ if(m%10==0) printf("\n"); // m累计到10的倍数,换行
+ printf ("\n");
+ int i=1,sum=0;
+ do
+ sum=sum+i;
+ }while(i<=100);
+ printf("%d\n",sum);
+ int i,sum=0;
+ printf("please enter i,i=?");
+ scanf("%d",&i);
+ while(i<=10)
+ };
+ printf("sum=%d\n",sum);
+ }while(i<=10);
@@ -0,0 +1,11 @@
+{int n;
+ for (n=100;n<=200;n++)
+ {if (n%3==0)
+ continue;
+ printf("%d ",n);
+ int i,j,n=0;
+ for (i=1;i<=4;i++)
+ for (j=1;j<=5;j++,n++)
+ { if(n%5==0)printf("\n"); //控制在输出5个数据后换行
+ printf("%d\t",i*j);
+ { if(n%5==0) printf("\n"); //控制在输出5个数据后换行
+ if (i==3 && j==1) break; //遇到第3行第1列,终止内循环
+ if (i==3 && j==1) continue; //遇到第3行第1列,提前结束执行本次内循环体
+#include<math.h>
+ int sign=1; // sign用来表示数值的符号
+ double pi=0.0,n=1.0,term=1.0; // pi代表π,n代表分母,term代表当前项的值
+ while(fabs(term)>=1e-6) // 检查当前项term的绝对值是否大于或等于10的(-6)次方
+ pi=pi+term; // 把当前项term累加到pi中
+ n=n+2; // n+2是下一项的分母
+ sign=-sign; // sign代表符号,下一项的符号与上一项符号相反
+ term=sign/n; // 求出下一项的值term
+ pi=pi*4; // 多项式的和pi乘以4,才是π的近似值
+ printf("pi=%10.8f\n",pi); // 输出π的近似值
+ int t=0; // t 代表当前执行循环体的次数
+ {t=t+1; // 每进入一次循环体,t的值加1
+ printf("pi=%10.6f\n",pi); // 输出π的近似值
+ int f1=1,f2=1,f3;
+ printf("%12d\n%12d\n",f1,f2);
+ for(i=1; i<=38; i++)
+ f3=f1+f2;
+ printf("%12d\n",f3);
+ f1=f2;
+ f2=f3;
+ int f1=1,f2=1;
+ for(i=1; i<=20; i++) // 每个循环中输出2个月的数据,故循环20次即可
+ printf("%12d %12d ",f1,f2); // 输出己知的两个月的兔子数
+ if(i%2==0) printf("\n");
+ f1=f1+f2; // 计算出下一个月的兔子数,并存放在f1中
+ f2=f2+f1; // 计算出下两个月的兔子数,并存放在f2中
+ {int n,i;
+ printf("please enter a integer number,n=?");
+ scanf("%d",&n);
+ for (i=2;i<=n-1;i++)
+ if(n%i==0) break;
+ if(i<n) printf("%d is not a prime number.\n",n);
+ else printf("%d is a prime number.\n",n);
+ {int n,i,k;
+ printf("please enter a integer number:n=?");
+ k=sqrt(n);
+ if(i<=k)
+ printf("%d is not a prime number.\n",n);
+ int i,a[10];
+ for (i=0; i<=9;i++)
+ a[i]=i;
+ for(i=9;i>=0; i--)
+ printf("%d ",a[i]);
+ int f[20]={1,1};
+ for(i=2;i<20;i++)
+ f[i]=f[i-2]+f[i-1];
+ for(i=0;i<20;i++)
+ if(i%5==0) printf("\n");
+ printf("%12d",f[i]);
@@ -0,0 +1,19 @@
+ int a[10];
+ int i,j,t;
+ printf("input 10 numbers :\n");
+ for (i=0;i<10;i++)
+ scanf("%d",&a[i]);
+ for(j=0;j<9;j++) // 进行9次循环,实现9趟比较
+ for(i=0;i<9-j;i++) // 在每一趟中进行9-j次比较
+ if (a[i]>a[i+1]) // 相邻两个数比较
+ {t=a[i];a[i]=a[i+1];a[i+1]=t;}
+ printf("the sorted numbers :\n");
+ for(i=0;i<10;i++)
@@ -0,0 +1,24 @@
+ int a[2][3]={{1,2,3},{4,5,6}};
+ int b[3][2],i,j;
+ printf("array a:\n");
+ for (i=0;i<=1;i++)
+ for (j=0;j<=2;j++)
+ printf("%5d",a[i][j]);
+ b[j][i]=a[i][j];
+ printf("array b:\n");
+ for (i=0;i<=2;i++)
+ for(j=0;j<=1;j++)
+ printf("%5d",b[i][j]);
+ {int i,j,row=0,colum=0,max;
+ int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; // 定义数组并赋初值
+ max=a[0][0]; // 先认为a[0][0]最大
+ for (j=0;j<=3;j++)
+ if (a[i][j]>max) // 如果某元素大于max,就取代max的原值
+ {max=a[i][j];
+ row=i; // 记下此元素的行号
+ colum=j; // 记下此元素的列号
+ printf("max=%d\nrow=%d\ncolum=%d\n",max,row,colum);
+ {char c[15]={'I',' ','a','m',' ','a',' ','s','t','u','d','e','n','t','.'};
+ for(i=0;i<15;i++)
+ printf("%c",c[i]);
+ {char diamond[][5]={{' ',' ','*'},{' ','*',' ','*'},{'*',' ',' ',' ','*'},{' ','*',' ','*'},{' ',' ','*'}};
+ int i,j;
+ for (i=0;i<5;i++)
+ {for (j=0;j<5;j++)
+ printf("%c",diamond[i][j]);
+ char string[81];
+ int i,num=0,word=0;
+ char c;
+ gets(string); // 输入一个字符串给字符数组string
+ for (i=0;(c=string[i])!='\0';i++) // 只要字符不是'\0'就继续执行循环
+ if(c==' ') word=0; // 如果是空格字符,使word置0
+ else if(word==0) // 如果不是空格字符且word原值为0
+ {word=1; // 使word置1
+ num++; // num累加1,表示增加一个单词
+ printf("There are %d words in this line.\n",num); //输出结果
+#include<string.h>
+ char str[3][20]; // 定义二维字符数组
+ char string[20]; // 定义一维字符数组,作为交换字符串时的临时字符数组
+ for (i=0;i<3;i++)
+ gets (str[i]); // 读入3个字符串,分别给str[0],str[1],str[2]
+ if (strcmp(str[0],str[1])>0) // 若str[0]大于str[1]
+ strcpy(string,str[0]); // 把str[0]的字符串赋给字符数组string
+ else // 若str[0]小于等于str[1]
+ strcpy(string,str[1]); // 把str[1]的字符串赋给字符数组string
+ if (strcmp(str[2],string)>0) // 若str[2]大于string
+ strcpy(string,str[2]); // 把str[2]的字符串赋给字符数组string
+ printf("\nthe largest string is:\n%s\n",string); // 输出string
+{void printstar();
+ void print_message();
+ printstar();
+ print_message();
+void printstar()
+ printf("******************\n");
+void print_message()
+{printf(" How do you do!\n");
@@ -0,0 +1,22 @@
+{ float average(float array[10]); // 函数声明
+ float score[10],aver;
+ printf("input 10 scores:\n");
+ scanf("%f",&score[i]);
+ aver=average(score); // 调用average函数
+ printf("average score is %5.2f\n",aver);
+float average(float array[10]) // 定义average函数
+ float aver,sum=array[0];
+ for(i=1;i<10;i++)
+ sum=sum+array[i]; // 累加学生成绩
+ aver=sum/10;
+ return(aver);
+{float average(float array[ ],int n);
+ float score1[5]={98.5,97,91.5,60,55};
+ float score2[10]={67.5,89.5,99,69.5,77,89.5,76.5,54,60,99.5};
+ printf("The average of class A is %6.2f\n",average(score1,5));
+ printf("The average of class B is %6.2f\n",average(score2,10));
+float average(float array[ ],int n)
+ for(i=1;i<n;i++)
+ sum=sum+array[i];
+ aver=sum/n;
+{void sort(int array[],int n);
+ int a[10],i;
+ printf("enter array:\n");
+ sort(a,10);
+ printf("The sorted array:\n");
+void sort(int array[],int n)
+ {int i,j,k,t;
+ for(i=0;i<n-1;i++)
+ if(array[j]<array[k])
+ k=j;
+ t=array[k];array[k]=array[i];array[i]=t;
+{ int max_value(int array[][4]);
+ int a[3][4]={{1,3,5,7},{2,4,6,8},{15,17,34,12}};
+ printf("Max value is %d\n",max_value(a));
+int max_value(int array[][4])
+{ int i,j,max;
+ max=array[0][0];
+ for(i=0;i<3;i++)
+ for(j=0;j<4;j++)
+ if(array[i][j]>max)max=array[i][j];
+ return (max);
+float Max=0,Min=0; // 定义全局变量Max,Min
+{ float average(float array[ ],int n);
+ float ave,score[10];
+ printf("Please enter 10 scores:");
+ ave=average(score,10);
+ printf("max=%6.2f\nmin=%6.2f\naverage=%6.2f\n",Max,Min,ave);
+float average(float array[ ],int n) // 定义函数,有一形参是数组
+{ int i;
+ Max=Min=array[0];
+ {if(array[i]>Max)Max=array[i];
+ else if(array[i]<Min)Min=array[i];
+int a=3,b=5; // a,b是全局变量
+ int max(int a,int b); // 函数声明。a,b是形参
+ int a=8; // a是局局部变量
+ printf("max=%d\n",max(a,b)); // 变量a是函数中定义的局部变量a
+int max(int a,int b) // a,b是函数形参
+ int c;
+ c=a>b?a:b; // 把a和b中的大者存放在c中
+ return(c);
+{ int f(int);
+ int a=2,i;
+ printf("%d\n",f(a));
+int f(int a)
+{ auto int b=0;
+ static c=3;
+ b=b+1;
+ c=c+1;
+ return(a+b+c);
+{ int fac(int n);
+ for(i=1;i<=5;i++)
+ printf("%d!=%d\n",i,fac(i));
+int fac(int n)
+{ static int f=1;
+ f=f*n;
+ return(f);
+{ int max( );
+ extern int A,B,C; // 把外部变量A,B,C的作用域扩展到从此处开始
+ printf("Please enter three integer numbers:");
+ scanf("%d %d %d",&A,&B,&C);
+ printf("max is %d\n",max());
+int A ,B ,C; // 定义外部变量A,B,C
+int max( )
+{ int m;
+ m=A>B?A:B;
+ if (C>m) m=C;
+ return(m);
+//file1.c
+int A;
+ {int power(int);
+ int b=3,c,d,m;
+ printf("enter the number a and its power m:\n");
+ scanf("%d,%d",&A,&m);
+ c=A*b;
+ printf("%d*%d=%d\n",A,b,c);
+ d=power(m);
+ printf("%d**%d=%d\n",A,m,d);
+//file2.c
+extern A;
+int power(int n)
+ {int i,y=1;
+ for(i=1;i<=n;i++)
+ y*=A;
+ return(y);
+{ int max(int x,int y);
+ int a,b,c;
+ printf("please enter two integer numbers:");
+ scanf("%d,%d",&a,&b);
+ c=max(a,b);
+ printf("max is %d\n",c);
+int max(int x,int y) // 定义max函数
+ int z; // 定义临时变量
+ z=x>y?x:y; // 把x和y中大者赋给z
+ return(z); // 把z作为max函数的伦值带回main函数
+{ extern void enter_string(char str[]);
+ extern void delete_string(char str[],char ch);
+ extern void print_string(char str[]);
+ // 以上3行声明在本函数中将要调用的已在其他文件中定义的3个函数
+ char c,str[80];
+ enter_string(str); // 调用在其他文件中定义的enter_string函数
+ scanf("%c",&c);
+ delete_string(str,c); // 调用在其他文件中定义的delete_string函数
+ print_string(str); // 调用在其他文件中定义的print_string函数
@@ -0,0 +1,5 @@
+void enter_string(char str[80])
+ gets(str);
+//file3.c
+void delete_string(char str[],char ch)
+{int i,j;
+ for(i=j=0;str[i]!='\0';i++)
+ if(str[i]!=ch)
+ str[j++]=str[i];
+ str[j]='\0';
+//file4.c
+void print_string(char str[])
+ printf("%s\n",str);
+ {int max(float x,float y);
+ float a,b;
+ scanf("%f,%f,",&a,&b);
+int max(float x,float y)
+ {float z;
+ z=x>y?x:y;
+ return(z);
+{float add(float x, float y);
+ float a,b,c;
+ printf("Please enter a and b:");
+ c=add(a,b);
+ printf("sum is %f\n",c);
+float add(float x,float y)
+ z=x+y;
+{ int max4(int a,int b,int c,int d); // 对max4的函数声明
+ int a,b,c,d,max;
+ printf("Please enter 4 interger numbers:"); // 提示输入4个数
+ scanf("%d %d %d %d",&a,&b,&c,&d); // 输入4个数
+ max=max4(a,b,c,d); // 调用max4函数,得到4个数中的最大者
+ printf("max=%d \n",max); // 输出4个数中的最大者
+int max4(int a,int b,int c,int d) // 定义max4函数
+{int max2(int a,int b); // 对max2的函数声明
+ int m;
+ m=max2(a,b); // 调用max2函数,得到a和b两个数中的大者,放在m中
+ m=max2(m,c); // 调用max2函数,得到a,b,c三个数中的大者,放在m中
+ m=max2(m,d); // 调用max2函数,得到a,b,c,d四个数中的大者,放在m中
+ return(m); // 把m作为函数值带回main函数
+int max2(int a,int b) // 定义max2函数
+{if(a>=b)
+ return a; // 若a>=b,将a为函数返回值
+ return b; // 若a<b,将b为函数返回值
+{ int max4(int a,int b,int c,int d);
+ printf("Please enter 4 interger numbers:");
+ scanf("%d %d %d %d",&a,&b,&c,&d);
+ max=max4(a,b,c,d);
+ printf("max=%d \n",max);
+int max4(int a,int b,int c,int d)
+{int max2(int a,int b);
+ m=max2(a,b);
+ m=max2(m,c);
+ m=max2(m,d);
+int max2(int a,int b)
+ return(a>b?a:b);
+void main()
+{ int max2(int a,int b);
+ m=max2(max2(max2(a,b),c),d); /* ×Ðϸ·ÖÎö´ËÐÐ */
+ return max2(max2(max2(a,b),c),d);
+{ int age(int n);
+ printf("NO.5,age:%d\n",age(5)); //输出第5人的年龄
+int age(int n) //定义递归函数
+ {int c;
+ if(n==1) // 如果n等于1
+ c=10; // 年龄为10
+ else // 如果n不等于1
+ c=age(n-1)+2; // 年龄是前一人的年龄加2(如第4人年龄是第3人年龄加2)
+ return(c); // 返回年龄
@@ -0,0 +1,23 @@
+ int n;
+ int y;
+ printf("input an integer number:");
+ y=fac(n);
+ printf("%lld!=%d\n",n,y);
+ int fac(int n)
+ int f;
+ if(n<0)
+ printf("n<0,data error!");
+ else if(n==0||n==1)
+ f=1;
+ else f=fac(n-1)*n;
@@ -0,0 +1,20 @@
+ return max2(max2(max2(a,b),c),d); /* ×Ðϸ·ÖÎö´ËÐÐ */
+ void hanoi(int n,char one,char two,char three); // 对hanoi函数的声明
+ printf("input the number of diskes:");
+ scanf("%d",&m);
+ printf("The step to move %d diskes:\n",m);
+ hanoi(m,'A','B','C');
+void hanoi(int n,char one,char two,char three) // 定义hanoi函数
+ // 将n个盘从one座借助two座,移到three座
+ void move(char x,char y); // 对move函数的声明
+ if(n==1)
+ move(one,three);
+ hanoi(n-1,one,three,two);
+ hanoi(n-1,two,one,three);
+ void move(char x,char y) // 定义move函数
+ printf("%c-->%c\n",x,y);