资源描述:
《C语言第四次上机编程讲评.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、求20+21+22+...+263之和。解法1:#includemain(){floats;inti;s=0;for(i=0;i<=63;i++) s=s+pow(2,i); /*2的i次幂*/printf("s=%f",s);}#includemain(){intI,s=0,t=1;for(i=0;i<=63;i++) {s=s+t; t=t*2; }printf("s=%u",s);}解法2:%d有正负(负数用补码表示)%u正整数从键盘输入两
2、个整数,求其最大公约数和最小公倍数。解法1:辗转相除法。⑴以其中一个数作被除数,另一个数作除数,相除求余数。⑵若余数不为0,则以上一次的除数作为新的被除数,以上一次的余数作为新的除数,继续求余数。⑶直至余数为0时,对应的除数就是最大公约数。#includemain(){intm,n,r,g,h,p;scanf("%d%d",&m,&n);p=m*n;while((r=m%n)!=0) /*余数不为0时循环*/{m=n; /*以上一次的除数作为新的被除数*/ n=r; /*以上一
3、次的余数作为新的除数*/}g=n; /*余数为0时的除数即最大公约数*/h=p/g; /*两数之积除以最大公约数就是最小公倍数*/printf("g=%d,h=%d",g,h);}解法2:辗转相除法。#includemain(){intm,n,r,g,h,p;scanf("%d%d",&m,&n);p=m*n;while(1) /*循环条件总为真*/{r=m%n;if(r==0) break; /*余数为0时终止循环*/m=n; /*以上一次的除数作为新的被除数
4、*/ n=r; }/*以上一次的余数作为新的除数*/g=n; /*余数为0时的除数即最大公约数*/h=p/g; /*最小公倍数*/printf("g=%d,h=%d",g,h);}解法3:#includemain(){intm,n,g,h,i;scanf("%d%d",&m,&n);for(g=m;g>=1;g--){if((m%g==0)&&(n%g==0)) /*此时g是最大公约数*/ break;}for(i=1;i<=n;i++){h=i*m; /*h
5、是m的倍数*/if(h%n==0) /*此时h是最小公倍数*/ break;}printf("g=%d,h=%d",g,h);}从键盘输入一个正整数,将该数前后倒置后输出(用循环完成)。解法1:#includemain(){inta,d;scanf("%d",&a);while(a!=0){d=a%10; /*求得个位*/ printf("%1d",d); /*输出宽度为1*/ a=a/10; /*去掉原来的个位*/}}解法2:#includem
6、ain(){inta,b,d;scanf("%d",&a);b=0;/*b用于存放倒置之后的数*/while(a!=0){d=a%10; /*求得个位*/b=b*10+d; a=a/10; /*去掉原来的个位*/}printf("%d",b);}从键盘输入一行字符,若为小写字母,则转化为大写字母;若为大写字母,则转化为小写字母;否则转化为ASCII码表中的下一个字符。解法1:#include main(){charch;ch=getchar();while(ch!='
7、'){if(ch>='a'&&ch<='z')ch=ch-32; elseif(ch>='A'&&ch<='Z') /*此处else不能缺省*/ch=ch+32; elsech=ch+1;putchar(ch);ch=getchar();}}解法2:#include main(){charch;while((ch=getchar())!=''){if(ch>='a'&&ch<='z')ch=ch-32; elseif(ch>='A'&&ch<='Z')ch=ch+
8、32; elsech=ch+1;putchar(ch);}}同构数.又称为自守数。M的n次方的尾部是M则称M是n阶同构数(或n阶自守数)若M的2次方的尾部是M则称M是2阶同构数(或2阶自守数)如5^2=25,6^2=36等二阶同构数只有两族.即个位是5和个位是6的两族!方法1#include