做好它

来源:互联网 发布:淘宝怎么靠id查找卖家 编辑:程序博客网 时间:2024/04/28 14:31

 1、求1+4+7+……+100之和。

解法1:

main()

{int s,i;

s=0;

for(i=1;i<=100;i+=3)

    s=s+i;

printf("s=%d/n",s);

}

解法2:

main()

{int s,i;

  s=0;

i=1;

while(i<=100)

{s=s+i;

  i+=3;

}

printf("s=%d/n",s);

}

2、求1到100之间的奇数之和与偶数之和。

解法1:

main()

{int s1,s2,i;

s1=s2=0;

for(i=1;i<=100;i++)

{if(i%2==1)

    s1=s1+i;  /*奇数之和*/

    else

    s2=s2+i;  /*偶数之和*/

  }

printf("s1=%d,s2=%d/n",s1,s2);

}

解法2:

main()

{int s1,s2,i;

s1=s2=0;

for(i=1;i<=99;i+=2)

    s1=s1+i;  /*奇数之和*/

for(i=2;i<=100;i+=2)

    s2=s2+i;  /*偶数之和*/

  }

printf("s1=%d,s2=%d/n",s1,s2);

}

解法3:

main()

{int s1,s2,i;

s1=s2=0;

i=1;

while(i<=99)

{s1=s1+i;  /*奇数之和*/

  i++;

  s2=s2+i;  /*偶数之和*/

  i++;

}

printf("s1=%d,s2=%d/n",s1,s2);

}

3、用循环程序求10的阶乘。

main()

{long p;  /*int型取值范围太小*/

int i;

p=1;  /*不能写作p=0;*/

for(i=1;i<=10;i++)

    p=p*i;

printf("p=%ld/n",p);

}

4、求1*3*5*...*19之积。

main()

{float p;

int i;

p=1;

for(i=1;i<=19;i+=2)

    p=p*i;

printf("p=%f/n",p);

}

5、从键盘输入一个正整数n,求1+2+3+...+n之和并输出。

main()

{int i,n;

long s;

s=0;

scanf("%d",&n);

for(i=1;i<=n;i++)

    s=s+i;

printf("s=%ld/n",s);

}

6、从键盘输入一个正整数,求出其阶乘并输出。

解法1:

main()

{float p;

int i,k;

p=1;

scanf("%d",&k);

for(i=1;i<=k;i++)

    p=p*i;

printf("p=%f/n",p);

}

解法2:

main()

{float p;

int k;

p=1;

scanf("%d",&k);

while(k>=1)

{p=p*k;

  k--;

}

printf("p=%f/n",p);

}

6A、求1-1/3+1/5-1/7+...-1/99+1/101之和。

解法1:

main()

{float s1,s2,s;

int i;

s1=s2=0;

for(i=1;i<=101;i+=4)

    s1=s1+1.0/i;  /*正数之和*/

for(i=3;i<=99;i+=4)

      s2=s2+1.0/i;  /*负数之和*/

s=s1-s2;

printf("s=%f/n",s);

}

解法2:

main()

{int i,p;

float s;

s=0;

p=1;

  for(i=1;i<=101;i+=2)

  {s=s+p*1.0/i;    /*p用于控制累加项的正负*/

    p=-p;  /*改变正负号*/

  }

printf("s=%f/n",s);

}

6B、求20+21+22+...+263之和。

解法1:

#include <math.h>

main()

{float s;

int i;

s=0;

for(i=0;i<=63;i++)

    s=s+pow(2,i);    /*2的i次幂*/

printf("s=%f/n",s);

}

解法2:

main()

{float s,t;

int i;

s=0;

t=1;

for(i=0;i<=63;i++)

    {s=s+t;

    t=t*2;

  }

printf("s=%f/n",s);

}

7、求12+32+52+...+992之和。

main()

{long s;

int i;

s=0;

for(i=1;i<=99;i+=2)

    s=s+i*i;

printf("s=%ld/n",s);

}

8、求1+1/3+1/5+...+1/99之和。

main()

{int i;

float s;

s=0;

for(i=1;i<=99;i+=2)

    s=s+1.0/i;  /*不能写作1/i*/

printf("s=%f/n",s);

}

9、求1+1/3+1/5+...的前20项之和。

main()

{int i;

float s;

s=0;

for(i=1;i<=20;i++)

    s=s+1.0/(2*i-1);  /*不能写作1/(2*i-1)*/

printf("s=%f/n",s);

}

10、求1+1/3+1/5+...之和,直到某一项的值小于10-6时停止累加。

main()

{long n;  /*不能写作int n*/

float s;

s=0;

n=1;

while(1.0/n>=1e-6)

{s=s+1.0/n;  /*不能写作1/n*/

    n+=2;

}

printf("s=%f/n",s);

}

11、已知序列1/2,2/3,3/5,5/8,...,求其前20项之和。

解法1:

main()

{float s,a,b,t;

int i;

s=0;

a=1;

b=2;

for(i=1;i<=20;i++)

{s=s+a/b;

  t=a; 

  a=b;    /*分子为前一项分母*/

  b=b+t; /*分母为前一项分子分母之和*/

}

  printf("s=%f/n",s);

}

解法2:

main()

{float s,a,b;

int i;

s=0;

a=1;

b=2;

  for(i=1;i<=20;i++)

  {s=s+a/b;

 b=a+b;  /*分母为前一项分子分母之和*/

    a=b-a; /*分子为前一项分母*/

}

  printf("s=%f/n",s);

}

12、求1!+2!+3!+...+20!之和。

解法1:

main()

{float s,p;

int n,k;

s=0;    /*该语句必须在外循环之前*/

for(n=1;n<=20;n++)

{p=1;    /*该语句必须在外循环体内部*/

  for(k=1;k<=n;k++)    /*求n的阶乘*/

    p=p*k;

  s=s+p; 



  printf("s=%f/n",s);

}

解法2:

main()

{float s,p;

int n;

s=0;

p=1;    /*该语句必须在循环之前*/

for(n=1;n<=20;n++)

  {p=p*n;    /*求n的阶乘*/ 

    s=s+p;

  } 

  printf("s=%f/n",s);

}

13、求1!+5!+9!+...+21!之和。

main()

{float s,p;

int n,k;

s=0;    /*该语句必须在外循环之前*/

for(n=1;n<=21;n+=4)

  {p=1;    /*该语句必须在外循环体内部*/

    for(k=1;k<=n;k++)    /*求n的阶乘*/

      p=p*k;

  s=s+p;



  printf("s=%f/n",s);

}

14、从键盘两个整数,求其最大公约数和最小公倍数。

解法1:辗转相除法。

⑴以其中一个数作被除数,另一个数作除数,相除求余数。

⑵若余数不为0,则以上一次的除数作为新的被除数,以上一次的余数作为新的除数,继续求余数。

⑶直至余数为0时,对应的除数就是最大公约数。

main()

{int m,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=%d/n",g,h);

}

解法2:辗转相除法。

main()

{int m,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=%d/n",g,h);

}

解法3:

main()

{int m,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=%d/n",g,h);

}

15、求a+aa+aaa+...(如2+22+222+2222+22222)前n项之和。

main()

{int a,n,i;

long t,s;

scanf("%d%d",&a,&n);

t=a;

for(i=1;i<=n;i++)

{s=s+t;

  t=t*10+a;    /*求得下一项*/

}

printf("s=%ld/n",s);

}

16、从键盘输入一个正整数,将该数前后倒置后输出。

解法1:

main()

{int a,d;

scanf("%d",&a);

while(a!=0)

{d=a%10;    /*求得个位*/

  printf("%1d",d);    /*输出宽度为1*/

  a=a/10;    /*去掉原来的个位*/

}

}

解法2:

main()

{int a,b,d;

scanf("%d",&a);

b=0;/*b用于存放倒置之后的数*/

while(a!=0)

{d=a%10;    /*求得个位*/

b=b*10+d;

  a=a/10;    /*去掉原来的个位*/

}

printf("%d/n",b);

}

17、求出所有的水仙花数(各位数字立方之和等于数本身的三位整数)并输出。

main()

{int  x,a,b,c;

for(x=100;x<=999;x++)

{a=x/100;  /*x的百位*/

  b=x%100/10;  /*x的十位*/

  c=x%10; /*x的个位*/

  if(a*a*a+b*b*b+c*c*c==x)

      printf("%d/n",x);

  }

}

18、从键盘输入一个正整数,判断是否是完数(真因子之和等于数本身)。

main()

{int  m,s,i;

scanf("%d",&m);

s=0;

for(i=1;i<=m-1;i++)

  {if(m%i==0) /*求出所有真因子*/

      s=s+i;

  }

if(s==m)

    printf("%d is a complete number./n",m);

else

    printf("%d isn't a complete number./n",m);

}

19、用双重循环打印如下图形。

    *

  ***

*****

*******

#define N  4

main()

{int  i,j,k;

for(i=1;i<=N;i++)

{for(j=1;j<=N-i;j++)

    printf(" ");  /*打印N-i个空格*/

for(k=1;k<=2*i-1;k++)

    printf("*");  /*打印2*i-1个星号*/

printf("/n");



}

20、用双重循环打印如下图形。

  *

  ***

*****

*******

*****

  ***

    *

解法1:

main()

{int  i,j,k;

for(i=1;i<=4;i++)    /*输出前4行*/

{for(j=1;j<=4-i;j++)

    printf(" ");

for(k=1;k<=2*i-1;k++)

    printf("*");

printf("/n");

}

for(i=3;i>=1;i--)    /*输出后3行*/

{for(j=1;j<=4-i;j++)

    printf(" ");

for(k=1;k<=2*i-1;k++)

    printf("*");

printf("/n");



}

解法2:

main()

{int  i,j,k;

for(i=1;i<=4;i++)    /*输出前4行*/

{for(j=1;j<=4-i;j++)

    printf(" ");

for(k=1;k<=2*i-1;k++)

    printf("*");

printf("/n");

}

for(i=1;i<=3;i++)    /*输出后3行*/

{for(j=1;j<=i;j++)

    printf(" ");

  for(k=1;k<=2*(4-i)-1;k++)

    printf("*");

printf("/n");



}

21、从键盘输入一个正整数,判断其是否是素数。

解法1:

main()

{int m,i;

scanf("%d",&m);

for(i=2;i<=m-1;i++)

  {if(m%i==0)

      break;

  }

if(i>m-1)

    printf("%d是一个素数./n);

else

    printf("%d不是一个素数./n);

}

解法2:

#include <math.h>

main()

{int m,i,k;

scanf("%d",&m);

k=sqrt(m);

for(i=2;i<=k;i++)

  {if(m%i==0)

      break;

  }

if(i>k)

    printf("%d is a prime number./n);

else

    printf("%d is not a prime number./n);

}

解法3:

#include <math.h>

main()

{int m,i,k;

scanf("%d",&m);

k=sqrt(m);

for(i=2;i<=k;i++)

  {if(m%i==0)

    {printf("%d is not a prime number/n",m);

      return;  /*退出main函数*/

    }   

  }

printf("%d is a prime number/n",m);

}

解法4:

#include <math.h>

main()

{int m,i,k,flag=0;  /*flag是标志变量,flag==0表示不能整除*/

scanf("%d",&m);

k=sqrt(m);

for(i=2;i<=k;i++)

  {if(m%i==0)

    {flag=1;    /*能除尽则不是素数*/

      break;

    }   

  }

if(flag==0)   

    printf("%d是一个素数./n);

else

    printf("%d不是一个素数./n);

}

22、从键盘输入一行字符,若为小写字母,则转化为大写字母;若为大写字母,则转化为小写字母;否则转化为ASCII码表中的下一个字符。

解法1:

#include  <stdio.h>

main()

{char ch;

ch=getchar();

while(ch!='/n')

{if(ch>='a'&&ch<='z')

      ch=ch-32;

    else  if(ch>='A'&&ch<='Z')        /*此处else不能缺省*/

      ch=ch+32;

  else

      ch=ch+1;

  putchar(ch);

ch=getchar();

}

}

解法2:

#include  <stdio.h>

main()

{char ch;

while((ch=getchar())!='/n')        /*先赋值再判断*/

{if(ch>='a'&&ch<='z')

      ch=ch-32;

    else  if(ch>='A'&&ch<='Z')        /*此处else不能缺省*/

      ch=ch+32;

  else

    ch=ch+1;

  putchar(ch);

}

}

23、从键盘输入一批字符(以@结束),按要求加密并输出。

加密规则:

1、所有字母均转换为小写。

2、若是字母'a'到'y',则转化为下一个字母。

3、若是'z',则转化为'a'。

4、其它字符,保持不变。

#include <stdio.h>

main( )

{char ch;

while((ch=getchar())!='@')        /*先赋值再判断*/

{if(ch>='a'&&ch<='y')

    ch=ch+1;

  else if(ch>='A'&&c<='Y')

    ch=ch+32+1;

  else if(ch=='Z'||ch=='z')

    ch='a';

  putchar(ch);

}

putchar('/n');

}

原创粉丝点击