C语言第四次上机编程讲评.ppt
求求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=%fn,s);#includemain()intI,s=0,t=1;for(i=0;i=63;i+)s=s+t;t=t*2;printf(s=%un,s);解法解法2:%d有正负(有正负(负数负数用补码表示)用补码表示)%u正整数正整数从键盘输入两个整数,求其最大公约数从键盘输入两个整数,求其最大公约数和最小公倍数。和最小公倍数。解法解法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;/*以上一次的余数作为新的除数以上一次的余数作为新的除数*/g=n;/*余数为余数为0时的除数即最大公约数时的除数即最大公约数*/h=p/g;/*两数之积除以最大公约数就是最两数之积除以最大公约数就是最小公倍数小公倍数*/printf(g=%d,h=%dn,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;/*以上一次的除数作为新的被除数以上一次的除数作为新的被除数*/n=r;/*以上一次的余数作为新的除数以上一次的余数作为新的除数*/g=n;/*余数为余数为0时的除数即最大公约数时的除数即最大公约数*/h=p/g;/*最小公倍数最小公倍数*/printf(g=%d,h=%dn,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是是m的倍数的倍数*/if(h%n=0)/*此时此时h是最小公倍数是最小公倍数*/break;printf(g=%d,h=%dn,g,h);从键盘输入一个正整数,将该数前后倒置从键盘输入一个正整数,将该数前后倒置后输出(用循环完成)。后输出(用循环完成)。解法解法1:#includemain()inta,d;scanf(%d,&a);while(a!=0)d=a%10;/*求得个位求得个位*/printf(%1d,d);/*输出宽度为输出宽度为1*/a=a/10;/*去掉原来的个位去掉原来的个位*/解法解法2:#includemain()inta,b,d;scanf(%d,&a);b=0;/*b用于存放倒置之后的数用于存放倒置之后的数*/while(a!=0)d=a%10;/*求得个位求得个位*/b=b*10+d;a=a/10;/*去掉原来的个位去掉原来的个位*/printf(%dn,b);从键盘输入一行字符,若为小写字母,则转化为从键盘输入一行字符,若为小写字母,则转化为大写字母大写字母;若为大写字母,则转化为小写字母若为大写字母,则转化为小写字母;否否则转化为则转化为ASCII码表中的下一个字符。码表中的下一个字符。解法解法1:#includemain()charch;ch=getchar();while(ch!=n)if(ch=a&ch=A&ch=Z)/*此处此处else不能缺省不能缺省*/ch=ch+32;elsech=ch+1;putchar(ch);ch=getchar();解法解法2:#includemain()charch;while(ch=getchar()!=n)if(ch=a&ch=A&ch=Z)ch=ch+32;elsech=ch+1;putchar(ch);同构数同构数.又称为自守数。又称为自守数。M的的n次方的尾部是次方的尾部是M则则称称M是是n阶同构数阶同构数(或或n阶自守数阶自守数)若若M的的2次方的尾部是次方的尾部是M则称则称M是是2阶同构数阶同构数(或或2阶自守数阶自守数)如如52=25,62=36等等二阶同构数只有两族二阶同构数只有两族.即个位是即个位是5和个位是和个位是6的两的两族族!方法方法1#include#includemain()intn;for(n=2;n=100;n+)if(n*n%100=n)printf(%dn,n);system(pause);方法方法2#include#includemain()intn,m,k,j;printf(请输入求同构数的结束值请输入求同构数的结束值1-m:);scanf(%d,&m);k=10;for(n=1;n=m;n+)if(n=k)k=k*10;j=n*n;if(j%k=n)printf(%dt,%dn,n,j);system(pause);system(“cls”)清屏清屏#include#include main()int i;printf(fffff);printf(xxxxx);for(i=0;i100;i+)printf(fffff);printf(xxxxx);system(cls );/清屏清屏.#includevoidmain()inti,x,k;k=x;for(i=1;i=1000;i+)if(x%5=2)&(x%7=3)&(x%3=1)printf(总人数为%dn,k);(这个程序没有结果输出,还是不知道什么原因)(这个程序没有结果输出,还是不知道什么原因)#includevoidmain()intday,x1,x2;day=9;x2=1;while(day0)x1=(x2+1)*2;x2=x1;day-;printf(猴子总共摘了d%个桃子,x2);printf(n);(这个程序不知道(这个程序不知道(这个程序不知道(这个程序不知道哪里错了,就是运哪里错了,就是运哪里错了,就是运哪里错了,就是运行的时候得不到要行的时候得不到要行的时候得不到要行的时候得不到要的结果)的结果)的结果)的结果)