C语言基础

1.输入.123456  输出0.123456

#include <stdio.h>
int main()
{
    char s[7];
    int i,sum=0;
    float x=0,k=0.1;
    gets(s);
    for(i=1;s[i];i++)
    {
        if(s[i]>=48&&s[i]<=57)
        {
            x+=(float)(s[i]-48)*k;
            k/=10;
        }
    }
    printf("%f\n",x);
    return 0;
}


2.
   *
  ***
 *****
*******
 *****
  ***
   *

#include <stdio.h>
int main()
{
    int n,i,j;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=n-i;j++)
            printf(" ");
        for(j=1;j<=2*i-1;j++)
            printf("*");
        puts("");
    }
    for(i=n-1;i>=1;i--)
    {
        for(j=1;j<=n-i;j++)
            printf(" ");
        for(j=1;j<=2*i-1;j++)
            printf("*");
        puts("");
    }
    return 0;
}


3.输入352 输出352
注意:程序中输入数据只能用getchar(),不允许用scanf(),也不允许用数组。

#include <stdio.h>
int main()
{
    int i,x=0;
    char c;
    c=getchar();
    while(c>='0'&&c<='9')
    {
        c-=48;
        x=x*10+c;
        c=getchar();
    }
    printf("%d\n",x);
    return 0;
}


4.判断是否为素数

#include <stdio.h>
#include <math.h>
int main()
{
    int n,i,k;
    scanf("%d",&n);
    if(n==1)
    {
        printf("NO\n");
        return 0;
    }
    k=sqrt(n);
    for(i=2;i<=k;i++)
        if(n%i==0)
          break;
    if(i>k)
        printf("YES\n");
    else
        printf("NO\n");
    return 0;
}


5.G总共有n个台阶,每次可以跨1个台阶,也可以跨2个台阶,问,有多少种上法?
例如, 若有3个台阶可以有3种上法:
(1)1+1+1(跨1个,跨1个,跨1个)
(2)1+2 (跨1个,跨2个)
(2)2+1(跨2个,跨1个)
Input
键盘输入台阶数
Output
给出方案数
Sample Input
3
Sample Output
3
(递归)

#include <stdio.h>
int fun(int n)
{
    int m;
    if(n==1)
        return 1;
    else if(n==2)
        return 2;
       else
        m=fun(n-1)+fun(n-2);
          return m;
}
int main()
{
    int n,m;
    scanf("%d",&n);
    m=fun(n);
    printf("%d",m);
    return 0;
}


6.十进制转换成二进制(多组输入)
#include <stdio.h>

#include <stdio.h>
int fun(int n)
{
    if(n==0)
        return 1;
    fun(n/2);
    printf("%d",n%2);
    return n;
}
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        if(n==0)
            printf("0");
        else
           fun(n);
        puts("");
    }
    return 0;
}


7.指针被调求最大公约数与最小公倍数

#include <stdio.h>
int main()
{
    void sub(int a,int b,int *m,int *n);
    int a,b,m,n;
    scanf("%d,%d",&a,&b);
    sub(a,b,&m,&n);
    printf("%d,%d,a=%d,b=%d\n",m,n,a,b);
    return 0;
}
void sub(int a,int b,int *m,int *n)
{
    int t,i,c;
    if(a<b)
    {
        t=a;a=b;b=t;
    }
    for(i=a;i<=a*b;i+=a)
        if(i%b==0)
        break;
    *m=i;
    c=a%b;
    for(i=1;c!=0;i++)
    {
        a=b;b=c;c=a%b;
    }
    *n=b;
}


8.一个球从一百米高空坠下,每次落地后反弹高度的一半,再落下反弹……第10次落地时,经过了多少路程,第10次反弹多高。

#include <stdio.h>
int main()
{
    int t,i;
    double a=100,s=100;
    for(i=1; i<9; i++)
    {
        a=a/2;
        s+=(a*2);
    }
    printf("%f\n",s);
    for(t=1; t<10; t++)
        a=a/2;
    printf("%f",a);
    return 0;
}


9.局部静态变量
~1!+2!+3!+……+n!

#include <stdio.h>
int super(int i)
{
    static int f=1;
    f*=i;
    return f;
}
int main()
{
    int i,n,f,s=0,super(int);
    scanf("%d",&n);
    for(i=1; i<=n; i++)
    {
        f=super(i);
        s+=f;
    }
    printf("%d\n",s);
    return 0;
}


10  输入1 3 5 7 9 11 13 15 17 19    12   将12插入按顺序输出

#include <stdio.h>
int main()
{
    int i,a[11],n,t;
    for(i=0; i<=9; i++)
        scanf("%d",&a[i]);
    scanf("%d",&n);
    for(i=0; i<=9; i++)
        if(a[i]>n)
        {
            t=a[i];
            a[i]=n;
            n=t;
        }
    a[10]=n;
    for(i=0; i<=9; i++)
        printf("%d ",a[i]);
    printf("%d",a[10]);
    return 0;
}


11 将不重复的数输出

#include <stdio.h>
int main()
{
    int i,a[10],j,k=0,e=0;
    for(i=0; i<=9; i++)
        scanf("%d",&a[i]);
    for(i=0; i<=9; i++)
    {
        for(j=0; j<=9; j++)
        {
            if((a[i]==a[j])&&(i!=j))
            {
                k++;
                break;
            }
            if(j==9)
            {
                if(e==0)
                           printf("%d",a[i]);
                else
                    printf(" %d",a[i]);
                e++;
            }
        }
    }
    if(k==10)
        printf("No");
    return 0;
}


12 输入10个数 统计每次出现的次数

#include <stdio.h>
int main()
{
    int a[10],i,s,j,p;
    for(i=0; i<=9; i++)
        scanf("%d",&a[i]);
    for(i=0; i<=9; i++)
    {
        p=0,s=0;
        for(j=0; j<10; j++)
        {
            if(a[i]==a[j])
                s++;
        }
        for(j=0; j<i; j++)
            if(a[i]==a[j])
                p=1;
        if(p==0)
                printf("%d:%d\n",a[i],s);

    }
    return 0;
}


13 不管键盘输入什么数 数组只接收不重复的数
 

#include <stdio.h>
int main()
{
    int a[20],i,j;
    char c;
    for(i=0; i<=9';i++)
            {
            scanf("%d%c",&a[i],&c);
            for(j=0;j<i;j++)
            if(a[i]==a[j]&&i!=j)
            {
            i--;
            break;
        };
        }
            for(i=0;i<=9;i++)
            printf("%d\n",a[i]);
            return 0;
        }

 

posted @ 2018-03-30 16:56  ~~zcy  阅读(299)  评论(0编辑  收藏  举报