1、1编程题集例 1两数互换。main()int a,b,c;printf(“Please input a,b:“);scanf(“%d,%d“,printf(“a,b=%d,%dn“,a,b);c=a;a=b;b=c;printf(“a,b=%d,%dn“,a,b);例 2从十个数中选出最大数。main()int a,b,n;printf(“Please input a:“);scanf(“%d“,printf(“Please input b:“);for(n=0;n32767 */printf(“%d!=%lun“,i-1,t); /* %lu 无符号长整型格式符 */例 4求两个正整数 m
2、和 n 的最大公约数的流程图。main()int m,n,r;scanf (“%d,%d“,r=m % n;while (r!=0)m=n;n=r;r=m % n;printf (“max common divisor is:%dn“,n);例 5绘制余弦曲线:在屏幕上用“*”显示 0360的余弦函数 cos(x)曲线。3#include /* 预处理指令 */#include /* 包含数学函数*/main() double y;int x,n;for (y=1;y=-1;y-=0.1) /*y 为列方向,值从 1 到-1,步长为-0.1*/ m=acos(y)*10; /* 计算出 y 对
3、应的弧度值 m,乘 10 为图形放大倍数*/for (x=1;x# include main() float pi1,pi2=1,term;float n=1;term=(2.0*n)/(2.0*n-1)*(2.0*n)/(2.0*n+1);pi1=pi2;pi2=pi2*term;while(fabs(pi2-pi1)1e-5) n+;term=(2.0*n)/(2.0*n-1)*(2.0*n)/(2.0*n+1);pi1=pi2;4pi2=pi2*term;printf(“n=%f pi=%fn“,n,2*pi2);程序 2:# includemain()float l,t,n=1,an=
4、1.0,an1=1.0;do n+;for(t=1,an=1;t1e-5);printf(“n=%f pi=%fn“,n,2*an1);注意:此算法不好,重复运算次数过多(for 循环每次都从 1 开始循环) ,影响程序效率,浪费运算时间。程序 3:# include # include main() int n=1;float pi1=1.0,pi2,term;pi1=(2.0/1.0)*(2.0/3.0);pi2=pi1*(4.0/3.0)*(4.0/5.0);for(n=3;fabs(pi2-pi1)1e-5;n+) pi1=pi2;term=(2.0*n)/(2.0*n-1)*(2.0
5、*n)/(2.0*n+1);pi2=pi2*term;printf(“n=%d pi=%fn“,n-1,2*pi2);5例 7求能被 3 整除且其中至少有两位数字为 6 的四位数,并求出满足条件的四位数的个数。如 9669,9666 均为满足条件的四位数。程序代码如下:(1999 年春上机试卷(C2) )# include # include main() int i,j,k,m,count=0;for(i=1;imain() int a,b,c,d,t,i=0;for(t=1000;t )#include main() float integral(float (*p)(float),flo
6、at a,float b,int n);float fsin(float);float fcos(float);float fexp(float);float a1,b1,a2,b2,a3,b3,c,(*p)(float); /* (*p)(float)为指向函数的指针*/int n=20; /* 分割成的小矩形数量 */printf(“Input a1,b1:“);scanf(“%f,%f“,printf(“Input a2,b2:“);scanf(“%f,%f“,printf(“Input a3,b3:“);scanf(“%f,%f“,p=fsin;c=integral(p,a1,b1,n
7、);printf(“The integral of sin(x) is:%fn“,c);p=fcos;c=integral(p,a2,b2,n);printf(“The integral of cos(x) is:%fn“,c);p=fexp;c=integral(p,a3,b3,n);printf(“The integral of exp(x) is:%fn“,c);float integral(float (*p)(float),float a,float b,int n) int i;float x,h,s;h=(b-a)/n;x=a;s=0;10sinxd1cosxd20dxe函数声明
8、输入所求各函数定积分的上下限8for(i=1;ichar a100,ch;int i,big,f,t;testword(int i) /* testword() */ int j,k,b26;char c,ch1;for(j=0,j=a) ch1=c;if(kbig)big=k;f=j;t=i-1;ch=ch1; /* big 为最大重复次数,f 为重复次数最 大字母所在单词的起点,t 为终点,ch为最大重复次数的字母 */main() int n=-1;do a+n=getchar();while(an= =#); /* an!=# */getchar();i=0;big=0;while(i
9、=a) i-) /* i=f ; i main() /* n 中为用于当前处理的数字 */ FILE fp; /* k 为处理过程中的中间变量 */int m1,m2,k,flag,n; /* m1,m2 为相邻两数 */int i=0,num6; /* flag 为是否符合要求的标志变量 */fp=fopen(“myf2.out“,“w“);for(i=0;i0) k=n;flag=0;m1=k%10;k=k/10;while(k!=0) m2=k%10;k=k/10;if(m1%2!=0)=(m2%2!=0) flag=1;k=0;else m1=m2;if(flag) fprintf(fp,“%6d“,n);n=num+i;fprintf(fp,“n“);fclose(fp);程序 2:#includeint find(int i) /* 自定义函数,返回值为 1 则把写入文件 */ int r=0,j=0,k,m,num5;int flag=0;m=i;while(m0) /*把主程序中的 ai各位数字写入数组 num 中*/ r=m%10;numj=r;m=m/10;j=j+1;