c语言练习

1.一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数

#include <stdio.h>

int main()
{
    int i,s,j;
    for (i = 1;i <= 1000;i++)
    {
        j = 1;
        s = 0;
        while (j < i)
        {
            if (i%j == 0)
            {
                s = s + j;

            }
             j++;
        }
        if (s == i)
        {
            printf("%4d\n",s);
        }
    }

    return 0;
}

在这里插入图片描述
2.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。

#include <stdio.h>

int main()
{
    float a[21];
    int i;
    float sum = 0;
    a[0] = 1,a[1] = 2;
    for (i = 2;i <= 20;i++)
    {
        a[i]= a[i-1] + a[i-2];
    }
    for (i = 0;i <= 20;i++)
    {
        sum = sum + a[i+1]/a[i];
    }
    printf("%f\n",sum);

    return 0;
}

在这里插入图片描述
3.求1+2!+3!+…+10!的和

#include <stdio.h>
int OrderSum(int n)
{
    int i;
    int fac = 1;
    for (i = 1;i <= n;i++)
    {
        fac = fac *i;
    }
    return fac;
}
int main()
{
    int i,sum = 0;
    for(i = 1;i <=10;i++)
    {
        sum = sum + OrderSum(i);
    }
    printf("%d\n",sum);

    return 0;
}

在这里插入图片描述
4.打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。

#include <stdio.h>

int main()
{
    int i,s,a,b,c;
    printf("水仙花数有:");
    for (i = 100;i < 1000;i++)
    {
        s = 0;
        a = i%10;
        b = (i -a)/100;
        c = (i - b * 100)/10;
        s = a*a*a + b*b*b + c*c*c;
        if (s == i)
        {
            printf("%4d",i);
        }
    }
    printf("\n");

    return 0;
}

在这里插入图片描述
5.求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制

#include <stdio.h>

int main()
{
    int n,i,a;
    long sum,m;
    printf("几个数相加:");
    scanf("%d",&n);
    printf("输入a的值:");
    scanf("%d",&a);
    m = 0,sum = 0;
    for(i = 1;i <= n;i++)
    {
        m = m * 10 + a;
        sum = m + sum;
    }
    printf("%d\n",sum);

    return 0;
}

在这里插入图片描述
6.编程实现输入5个学生的学号、计算他们的期中和期末成绩,然后计算其平均成绩,并输出成绩表。(结构体)

#include <stdio.h>
typedef struct student
{
    long studentid;
    int midresoult;
    int finresoult;
}STU;
int main()
{
    float ave[5];
    int i;
    STU stu[20]={{1000011,89,78},{1000012,79,98},{1000013,67,86},
                {1000014,67,96},{1000015,85,77}};
    for(i = 0;i < 5;i++)
    {
        ave[i] =(float) (stu[i].midresoult + stu[i].finresoult)/2;

    }
    printf("学号     期中成绩 期末成绩 平均成绩\n");
    for(i = 0;i < 5;i++)
    {
        printf("%8d%6d%10d%10.2f\n",stu[i].studentid,stu[i].midresoult,
                stu[i].finresoult,ave[i]);
    }
  
    return 0;
}

在这里插入图片描述
7.将字符串“We Are Family!”,去除空格后打印出来。(WeAreFamily!)

#include <stdio.h>

int main()
{
    char ch1[20]="We Are Famdily!";
    char ch2[15];
    char *p=NULL;
    int i=0;
    p=ch1;
    while(*p != '\0')
    {
        if(*p != ' ')
        {
            ch2[i] = *p;
            i++;
            p++;
        }
        else
        {
            p++;
        }
    }
    puts(ch2);

    return 0;
}

在这里插入图片描述
8.输入一个字符串,判断其是否是回文。(回文:即正读和反读都一样,如abcba, abccba)

#include <stdio.h>
char   *MyGets(char *c)
{
    char *p = c;
    while((*c = getchar()) != '\n')
    {
        c++;
    }
    *c = '\0';
    return p;
}
int main()
{
    char ch[20];
    MyGets(ch);
    char *p = NULL,*q = NULL;
    p = ch, q = ch;
    int n = 0,i,count = 0;
    while(*p != '\0')
    {
        p++;
        n++;
    }
    p--;
    while(n > 1)
    {
        if(*(--p) != *(++q))
        {
            count++;
        }
        n--;

    }
    if(count <= 0)
    {
        printf("是回文\n");
    }
    else
    {
        printf("不是回文\n");
    }
    return 0;
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值