c程序(6)



題目:通過編程實現,統計1~n有多少個9

提示:n通過參數傳入

 

#include <stdio.h>

 

int main()

{

int n;

int num=0;

int t,i,a;

 

printf("PLease input a number:\n");

scanf("%d",&n);

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

{

a=i;

if(i<10)

{

t=i%10;

if(t==9)

num++;

}

else

{

while(i!=0)

    {

        t=i%10;

        i=i/10;

    if(t==9)

    num++;

    }

    }

i=a;

}

printf("the number of nine is %d.\n",num);

    return 0;

}

 

題目:n個人圍成一圈,順序排號,從第一個開始報數(13報數),凡報到3的人退出圈子,問最後最後留下的是原來第幾號的那位.

提示:用數組完成

#include <stdio.h>

 

int main()

{

int a[100];

int i,n,q;

int p=0;

printf("Input number:\n");

scanf("%d",&n);

q=n;

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

a[i]=i+1;

for(i=0;;i++)

{

if(i==n)

i=0;

if(a[i]!=0)

p++;

if(p%3==0)

{

a[i]=0;

q--;

}

if(q==1)

break;

 

}

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

if(a[i]!=0)

printf("spare:%d\n",a[i]);

 

    return 0;

}

 

 

題目:輸入5個數(含負數、小數)將它們按由小到大的順序排列起來

提示:需要排數的數字通過參數傳遞進來,

例如:輸入:./a.out  -1  2.1  -3  5  7輸出: -3 -1 2.1 5 7

#include <stdio.h>

 

int main()

{

float a[5];

float t;

int i,n;

printf("Please input five number:\n");

for(n=0;n<5;n++)

scanf("%f",&a[n]);

for(n=0;n<5;n++)

{

for(i=0;i+n<4;i++)

{

if(a[i]>a[i+1])

{

t=a[i];

a[i]=a[i+1];

a[i+1]=t;

}

}

}

for(n=0;n<5;n++)

printf("%8.2f ",a[n]);

printf("\n");

 

    return 0;

}

 

 

題目:100以內的素數,全部打印出來

#include <stdio.h>

int main()

{

int i,n;

i=2;

printf("the prime from one to hundread are:\n");

for(n=0;n<=100;n++)

{

while(n>i)

{

if(n%i==0)

break;

else

i+=1;

}

if(n==i||n==1)

    printf("%4d",n);

i=2;

}

printf("\n");

 

    return 0;

}

 

題目:一個數如果恰好等於它的因子之和,這個數被成爲完數,例如:6=1+2+3.請編程找出1000以內的完數

#include <stdio.h>

 

int main()

{

int n,r,t;

r=0;

printf("the wanshu of 1 to 1000 are:\n ");

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

{

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

{

if(n%t==0)

r+=t;

}

if(r==n)

printf("%5d",n);

r=0;

}

printf("\n");

 

    return 0;

}

 

題目六:打印菱形星號組合

        *

       ***

      *****

     *******

      *****

       ***

        *

        *

       * *

      *   *

     *     *

      *   *

       * *

        *

i行:

空格數?

星號數?

#include <stdio.h>

 

int main()

{

char a='*';

char b=' ';

    int n,i;

 

for(n=0;n<7;n++)

{

if(n<4)

{

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

{

printf("%c",b);

}

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

{

printf("%c",a);

}

printf("\n");

}

else

{

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

printf("%c",b);

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

printf("%c",a);

printf("\n");

 

}

}

for(n=7;n<14;n++)

{

if(n<11)

{

for(i=1;i<10-n+8;i++)

printf("%c",b);

printf("%c",a);

if(n==7)

printf("\n");

            else

{

for(i=0;i<2*(n-7)-1;i++)

printf("%c",b);

printf("%c",a);

printf("\n");

}

}

        else

{

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

printf("%c",b);

printf("%c",a);

if(n==13)

printf("\n");

else

{

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

printf("%c",b);

printf("%c\n",a);

}

}

}

 

    

    return 0;

}

 

 

 

題目七:ab的最大公約數

   gcd(a  ,b)= gcd(b,  a%b)

   例:gcd(36,24) =gcd(24, 12 ) =gcd(12,0 )

 

#include <stdio.h>

void gcd (int,int);

 

int main()

{

int a,b;

printf("Please input two number:\n");

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

gcd(a,b);

 

    return 0;

}

 

void gcd (int a, int b)

{

int t,m;

    if(a<b)

{

t=a;

a=b;

b=t;

}

while(a>b&&b>0)

{

m=a;

a=b;

b=m%b;

}

printf("the commoniser is %d.\n",a);

return;

}

 

題目八:已知,求π?

 

#include <stdio.h>

 

int main()

{

int n,m;

float t,pi;

t=0;

for(n=1;n<1e+9;n++)

{

if(n%2==0)

m=-1;

else

m=1;

t+=1.0/((-1)*m*(2*n-1));

}

pi=4.0*t;

printf("pi = %.6f\n",pi);

 

    return 0;

}

 

題目九:計算20的和?

 

#include <stdio.h>

 

int main()

{

float a[21];

float t;

int n;

for(n=0;n<21;n++)

{

if(n==0)

a[n]=1;

else if(n==1)

a[n]=2;

else

a[n]=a[n-1]+a[n-2];

}

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

{

t+=a[n]/a[n-1];

}

printf("2/1+3/2+5/3+8/5+13/8`````=%.6f\n",t);

 

 

    return 0;

}

 

 

題目十:100200間的所有素數,每行打印5個素數

 

#include <stdio.h>

 

int main()

{

int i,n,num;

i=2;

num=0;

printf("the prime from one to hundread are:\n");

for(n=100;n<=200;n++)

{

while(n>i)

{

if(n%i==0)

break;

else

i+=1;

}

if(n==i||n==1)

{

printf("%4d",n);

num++;

}

if(num==5)

{

printf("\n");

    num=0;

}

i=2;

}

printf("\n");

return 0;

}

 

 

題目十一:計算字符串中的單詞數。

     單詞:由空格分開的連續字母數字串。

#include <stdio.h>

char *my_gets(char *a);

int main()

{

char a[50];

int num=0;

int n;

printf("輸入一串字符串:\n");

my_gets(a);

for(n=0;n<50;n++)

{

if(a[n]==' ')

num++;

}

printf("字符串中的字符數爲%d.\n",num);

 

    return 0;

}

 

char *my_gets(char *a)

{

    int i = 0;

while((a[i]=getchar())!='\n')

{

i++;

}

a[i]='\0';

}

 

 

題目十二:將整數轉換爲10進制、2進制、16進制的數字串

#include <stdio.h>

 

void decimalism (int);

void binary (int);

void hex (int);

 

int main()

{

int n;

printf("Please input a number:\n");

scanf("%d",&n);

    decimalism(n);

    printf("  ");

binary(n);

printf("  ");

hex(n);

printf("\n");

 

    return 0;

}

 

void decimalism (int n)

{

int t;

t=n%10;

if(n>=10)

decimalism(n/10);

    putchar('0'+t);

    return;

 

}

 

void binary (int n)

{

    int t;

t=n%2;

if(n>=2)

binary(n/2);

putchar('0'+t);

return;

 

}

 

void hex (int n)

{

int t;

t=n%16;

if(n>=16)

hex(n/16);

/*switch(t)

{

case 10:

t='A';

break;

case 11:

t='B';

break;

case 12:

t='C';

break;

case 13:

t='D';

break;

case 14:

t='E';

break;

case 15:

t='F';

break;

defalt:break;

} */

if(t>=10)

        putchar('7'+t);

else

putchar('0'+t);

/*if(t<10)

putchar('0'+t);

else

    putchar(t);*/

}

 

題目十三:打印字符串、複製字符串、連接字符串

#include <stdio.h>

#include <string.h>

//void printing ( char *,  char *);

 

int main()

{

char put1[100]="Welcome to nanjing!";

char put2[100]="Nice to meet you!";

char put3[100];

printf("打印字符串:\n");

//  printing(put1,put2);

    puts(put1);

    puts(put2);

printf("複製字符串:\n");

strcat(put3,put1);

puts(put3);

printf("連接字符串:\n");

strcat(put1,put2);

puts(put1);

 

    return 0;

}

/*

void printing( char *put1, char *put2)

{

int t=1;

while(*put1)

{

putchar(*put1);

*put1=*(put1+t);

t+=1;

}

printf("\n");

t=1;

while(*put2)

{

putchar(*put2);

*put2=*(put2+t);

t+=1;

}

printf("\n");

return;

}*/

/*

void copy (char *put1,char *put2)

void connect (char *put1, char *put2)

*/

 

 

題目十四:整數數組的冒泡排序(從小到大)

 

#include <stdio.h>

#define MAX 10

int main()

{

int n,m,temp;

int a[MAX];

for(n=0;n<MAX;n++)

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

for(n=0;n<MAX;n++)

{

    for(m=0;m+n<MAX-1;m++)

    {

    if(a[m]>a[m+1])

    {

    temp=a[m];

    a[m]=a[m+1];

    a[m+1]=temp;

 

    }

    }

}

for(n=0;n<MAX;n++)

{

printf("%5d",a[n]);

}

printf("\n");

 

    return 0;

}

 

 

題目十五:對於任意正整數都可以找出至少一串連續奇數,它們的和等於該整數的立方。以下程序驗證[2,20]之間的數滿足這一性質。

#include <stdio.h>

 

int main()

{

int n,m,i,j,sum = 0;

int flag=0;

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

    {

sum=0;

n=1;

while(n<i*i*i)

{

j=n;

    while(j<i*i*i)

    {

sum+=j;

    if(sum==i*i*i)

    {

                    printf("%d*%d*%d=",i,i,i) ;

             for(m=n;m<=j-2;m+=2)   

                        printf("%d+",m);

        printf("%d",m);

printf("\n");

flag=1;

    break;

}

j +=2;

    }

if(flag==1)

{

flag=0;  

 break;

}

sum=0;

            n+=2;

}

}

    return 0;

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章