C语言.docx
- 文档编号:3087056
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:16
- 大小:17.76KB
C语言.docx
《C语言.docx》由会员分享,可在线阅读,更多相关《C语言.docx(16页珍藏版)》请在冰点文库上搜索。
C语言
1.求a,b的最小公倍数和最大公约数(辗转相除法)
#include
intgcd(intn,intm);
intmul(intn,intm);
main()
{
inta,b;
scanf("%d%d",&a,&b);
printf("%d%d",gcd(a,b),mul(a,b));
}
intgcd(intn,intm)
{
intt;
while(n%m!
=0)
{
t=n%m;
n=m;
m=t;
}
returnm;
}
intmul(intn,intm)
{
returnn*m/gcd(n,m);
}
1.1"根据下面的函数关系,对输入的每个x值,计算出相应的y值并输出结果。
(1)当x小于1时,y等于2+cos(x)
(2)当x大于等于1且x小于2时,y等于x的平方加上sin(x)
(3)当x大于等于2时,y等于(x-2)的平方根;
要求:
按格式输出x和y的值,要求小数点后保留3位。
"
#include
#include
main()
{
doublex,y;
scanf("%lf",&x);
if(x<1)
y=2+cos(x);
elseif(x<2)
y=x*x+sin(x);
else
y=sqrt(x-2);
printf("%.3lf",y);
}
从键盘读入一个实数,对其进行四舍五入处理,要求精确到到小数点后两位。
例如输入12.345,其结果为12.35;输入12.341,其结果为12.34。
因为y%10必须是整数,所以y的范围是int
#include
main()
{
doublex;
inty;
scanf("%lf",&x);
y=x*1000;
if(y%10<=4)
y=y-y%10;
else
y=y+10-y%10;
x=(double)y/1000;
printf("%.2lf",x);
}
从键盘输入三个整数a、b、c,输出其中最大的数和最小的数。
#include
voidmain()
{
intx,y,z,max,min;
scanf("%d%d%d",&x,&y,&z);
if(x>y)
{
max=x;
min=y;
}
else
{max=y;
min=x;
}
if(z min=z; if(z>max) max=z; printf("max: %d\nmin: %d",max,min); } 1.3从键盘输入三个整数a、b、c,输出其中最小的数。 必须要借助min,否则写的程序很麻烦! #include main() { inta,b,c,min; scanf("%d%d%d",&a,&b,&c); if(a>b) min=b; else min=a; if(c>min) printf("%d",min); else printf("%d",c); } 输入一个3位的正整数,判定该正整数是否为一个回文数。 (所谓回文数是指正读和反读都相同的数,例如131)。 #include main() { intn,a,b,c; scanf("%d",&n); a=n/100; b=n/10-a*10; c=n%10; if(100*c+10*b+a==n) printf("是回文数"); else printf("不是回文数"); } 从键盘输入一个字母表示的成绩,将其转换为分数。 规则是'A'对应95、'B'对应85、'C'对应75、'D'对应65、'E'对应55。 要求输入字母后,输出对应的成绩 #include main() { charx; scanf("%c",&x); if(x=='A') printf("95"); if(x=='B') printf("85"); if(x=='C') printf("75"); if(x=='D') printf("65"); if(x=='E') printf("55"); else printf("cuowu"); } 输入一个整数,将其数值按小于10,10~99,100~999,1000以上分类并显示 (例如: 输入358时,显示358is100to999)。 #include main() { intn; printf("请输入一个小于一千的整数: "); scanf("%d",&n); if(n<10) printf("小于10"); elseif(n<=99) printf("10to99"); elseif(n<=999) printf("100to999"); else printf("大于1000"); } 1.9从键盘输入一个三位整数,计算其上下边界,例如123,其下边界为100,上边界为199,依此类推 #include main() { intx,a,b; printf("请输入一个三位数: "); scanf("%d",&x); a=x/100*100; b=a+99; printf("a=%d,b=%d",a,b); } 1.10从键盘输入一个三位纯小数,计算其上下边界,例如0.123,其下边界为0.100,上边界为0.199,依此类推 #include main() { floatx,b,c; inta; printf("请输入一个三位纯小数: "); scanf("%f",&x); a=x*10; b=(float)a/10; c=b+0.099; printf("b=%.3lf,c=%.3lf",b,c); } 从键盘输入任意一个字母,如果其为大写字母,则转为小写字母;如果其为小写字母,请转换为大写字母;其他情况保持不变,计算并输出。 #include intmain() { charch; scanf("%c",&ch); if(ch>='a'&&ch<='z') ch=ch-32; elseif(ch>='A'&&ch<='Z') ch=ch+32; printf("%c\n",ch); } 2.1计算1-1/2+1/3-1/4+…+1/n的和,在主函数输入n,计算输出结果。 #include voidmain() { inti,n; doublesum=0,j=1; scanf("%d",&n); for(i=1;i<=n;i++) { sum=sum+j/i; j=-j; } printf("%lf",sum); } 2.2计算1-1000之间所有完数的和。 完数是指一个整数的所有因子之和等于其自身的数,(if中的等于要用双等号)for(i=1;i #include main() { intn,i,sum,a=0; for(n=2;n<=1000;n++) { sum=0; for(i=1;i if(n%i==0) sum=sum+i; if(sum==n) a=a+n; } printf("%d",a); return0; } 2.3计算1/2,2/3,3/5,5/8,8/13,13/21,……的前n项和,在主函数输入n,计算并输出结果。 (涉及到互换的要借助中间量T) #include main() { doublem,i=1,j=2,n,sum=0,t; scanf("%lf",&n); for(m=1;m<=n;m++) { sum=sum+i/j; t=j; j=i+j; i=t; } printf("%lf",sum); } 输出1000以内的所有素数。 自己的做法 #include #include main() { inti,j,n; for(i=2;i<=1000;i++) { n=(int)sqrt(i+1); for(j=2;j<=n;j++) { if(i%j==0) break; if(j==n&&i%j! =0) printf("%d",i); } } } 按照自己的做法,缺少2; 正确的做法,引入变量j #include #include main() { inti,j,n,t=1; for(i=2;i<=1000;i++) { t=1; n=(int)sqrt(i); for(j=2;j<=n;j++) { if(i%j==0) t=0; } if(t==1) printf("%d",i); } } 2.5输出1000以内的全部素数的和。 (死记吧,然后遇到不同的定义必须要强制转换) #include #include main() { inti,n,sum=0,t; for(n=3;n<=1000;n++) {t=(int)sqrt(n+1); for(i=2;i<=t;i++) { if((n%i)==0) break; if((n%i)! =0&&i==t) sum=sum+n; } } printf("%d",sum+2); } 2.6由x,y,z三个数字组成三位数xyz和yzz,且xyz+yzz=532。 求x,y,z的值 #include main() { intx,y,z; for(x=1;x<10;x++) for(y=1;y<10;y++) for(z=0;z<10;z++) { if(100*x+10*y+z+100*y+11*z==532) printf("%d%d%d",x,y,z); } } 2.7计算Fibonacci数列中前n项的和。 提示: Fibonacci数列F(n)的定义为: F(0)=0,F (1)=1,F(n)=F(n-1)+F(n-2)。 (先用函数输出值,再在主函数中循环求值) #include intFib(intj); main() { inti,n,sum=0; scanf("%d",&n); for(i=1;i<=n;i++) { Fib(i); sum=sum+Fib(i); } printf("%d",sum); } intFib(intj) { if(j==1||j==2) return1; else returnFib(j-1)+Fib(j-2); } 2.8计算全部水仙花数的和(提示: “水仙花”数是指一个三位数,其各位数字的立方和等于该数本身,例如: 153),在主函数调用fun函数,计算全部水仙花数的和。 #include intfun(intn); main() { inti,sum=0; for(i=100;i<=999;i++) { sum=sum+fun(i); } printf("%d",sum); } intfun(intn) { intx,y,z; x=n/100; y=n/10-10*x; z=n%10; if(x*x*x+y*y*y+z*z*z==n) returnn; else return0; } 2.10计算e=1/1! +1/2! +1/3! +…+1/20! ,并输入,要求小数点后保留6位 #include intpro(intn); main() { inti; doublex,sum=0; for(i=1;i<=20;i++) { x=(double)1/pro(i); sum=sum+x; } printf("%.6lf",sum); } intpro(intn) { intm,t=1; for(m=2;m<=n;m++) { t=t*m; }returnt; } 2.11由a,b,c三个数字组成三位数abc和cba,且abc+cba=1333。 求a,b,c的值 #include main() { inta,b,c; for(a=1;a<=9;a++) for(c=1;c<=9;c++) for(b=0;b<=9;b++) { if(100*a+10*b+c+100*c+10*b+a==1333) printf("%d%d%d",a,b,c); } } 2.12输出公元元年至今的所有闰年的数量和数字和(润年的判断(i%4==0&&i%100! =0)||i%400==0) #include main() { inti,sum=0; for(i=1;i<=2015;i++) { if((i%4==0&&i%100! =0)||i%400==0) sum=sum+i; } printf("%d",sum); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言
![提示](https://static.bingdoc.com/images/bang_tan.gif)