资源预览内容
第1页 / 共16页
第2页 / 共16页
第3页 / 共16页
第4页 / 共16页
第5页 / 共16页
第6页 / 共16页
第7页 / 共16页
第8页 / 共16页
第9页 / 共16页
第10页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1编程题集由易到难例 1两数互换。main()int a,b,c;printf(Please input a,b:);scanf(%d,%d,&a,&b);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,&a);printf(Please input b:);for(n=0;n32767 */printf(%d!=%lun,i-1,t); /* %lu 无符号长整型格式符 */例 4求两个正整数 m 和 n 的最大公约数的流程图。main()int m,n,r;scanf (%d,%d,&m,&n);r=m % n;while (r!=0)m=n;n=r;r=m % n;printf (max common divisor is:%dn,n);例 5绘制余弦曲线:在屏幕上用“*”显示 0360的余弦函数 cos(x)曲线。#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 对应的弧度值 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;pi2=pi2*term;printf(n=%f pi=%fn,n,2*pi2);程序 2:# includemain()float l,t,n=1,an=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()4 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*n)/(2.0*n+1);pi2=pi2*term;printf(n=%d pi=%fn,n-1,2*pi2);例 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),float 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,&a1,&b1);printf(Input a2,b2:);scanf(%f,%f,&a2,&b2);printf(Input a3,b3:);scanf(%f,%f,&a3,&b3);p=fsin;c=integral(p,a1,b1,n);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;10sinxd1cosxd20dxe函数声明输入所求各函数定积分的上下限6float x,h,s;h=(b-a)/n;x=a;s=0;for(i=1;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;7else 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; for(k=0;kend)a10=number;elsefor(i=0;inumber)place=i;break;for(j=9;j=place;j-) /*注意 j=place 中的运算符不应该是 end)a10=number;elsefor(i=0;inumber) temp1=ai;ai=number;for(j=i+1;j=0 & xchar a100,ch;int i,big,f,t;testword(int i) /* testword() */ int j,k,b26;char c,ch1;for(j=0,j=a) & (aik)k=bc-97;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!=# */12getchar();i=0;big=0;while(i=a) &( ai=f;i-) /* i=f ; iy?x:y;return(z);133)用下面的 scanf 函数输入数据,使 a=3,b=7,x=8.5,y=71.82,c1=A,c2=a。问在键盘上如何输入?main() int a,b;float x,y;char c1,c2;scanf(“a=%d b=%d”,&a,&b);scanf(“%f %e”,&x,&y);scanf(“ %c %c”,&c1,&c2);printf(“a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%cn”,a,b,x,y,c1,c2);解:可按如下方式在键盘上输入:a=3 b=78.5 71.82A a输出为:a=3,b=7,x=8.500000,y=71.820000,c1=A,c2=a请注意:在第三个 scanf 函数双引号中第一个字符为空格字符。如果没有这个空格字符,而写成:scanf(“%c %c”,&c1,&c2);按以上的输入,输出就会变成以下两行:a=3,b=7,x=8.500000,y=71.820000,c1=,c2=A注意:第二、三行的 scanf 函数就相当于一行 scanf 函数,即scanf(“%f %e%c %c”,&x,&y,&c1,&c2);如果第一个%c 前无空格的话,则相当于scanf(“%f %e%c %c”,&x,&y,&c1,&c2);则在输入数据时,%e 数据读完后,其后的任何一个字符都会被读入 c1 中。这是因为在输入完第二行后按的回车键被作为一个字符送到内存输入缓冲区中,因此第三个 scanf 函数中的第一个变量 c1 读入了回车符(实际上是回车符的 ASCII 码) 。第三行输入的第一个字符 A 被 c2 读取,所以在执行 printf 函数输出 c1 时,就输出一个回车符,输出 c2 时就输出字符 A。在程序第三个 scanf 函数双引号中第一个字符处放了一个空格符,这样第二行末尾输入的回车符就不会输入给 c1,而是与该空格字符对应,第三行输入的第一个字符 A 就被 c1 读取。也可以不在 scanf 函数中加空格,而在第三个函数前加一个getchar 函数: getchar();(注意加#include )将前面的回车符 “吃掉” 。在一个函数中如果有几个 scanf 函数,在输入数据时往往会也出现一些意想不到的情况,其中一个很重要的原因就是由回车符引起的。4)求一个 33 矩阵对角线元素之和。main() int a33,sum=0;int i,j;printf(“enter data:n”);14for(i=0;i3;i+)for(j=0;j3;j+)scanf(“%d”,&aij);for(i=0;i3;i+)sum=sum+aii;printf(“sum=%5dn”,sum);main() float a33,sum=0;int i,j;printf(enter data:n);for(i=0;i3;i+)for(j=0;j3;j+)scanf( %f,&aij); /* 在%f 前有一空格,否则无法输入数据 */for(i=0;i3;i+)sum=sum+aii;printf(sum=%6.2fn,sum);在 Tubo C 2.0 环境下运行此程序时,出现运行错误,在输入数据后系统显示出错信息:scanf:floating point formats not
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号