7月21日学习+部分作业题

数组名作为函数参数
传递方式:地址调用
虚参要求:必须是数组名(不分配数组空间,只分配指针空间)
实参要求:可为另一数组名
哑实结合:哑实数组具有相同的首地址
c编译对形参数组的大小不做检查,只将实参的首地址传递给形参数组(无法知道实参大小)
形参数组和实参数组可同名也可不同名

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

#include <stdio.h>

int main()
{
    int full;
    int i;
    int sum;

    for(full = 1;full < 1000;full++)    //for循环找完数
    {
        sum = 0;                        //给每个数一开始的因子初始化
        
        for(i = 1;i < full;i++)         //找出每个因子
        {
            if(full % i == 0)
            {
                sum = sum + i;
            }
        }

        if(sum == full)
        {
            printf("%4d",full);
        }
    }

    printf("\n");

    return 0;
}

题目2:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。

#include <stdio.h>

int main()
{
    int i;//循环变量
    float a = 2,b = 1;
    float t;//中间变量
    float sum = 0;

    for(i = 0;i < 20;i++)
    {
        sum = sum + (a / b);
        t = a;
        a = t + b;
        b = t;
    }

    printf("输出和:");
    printf("%g\n",sum);

    return 0;
}

题目3:求1+2!+3!+…+10!的和

#include <stdio.h>
#define N 10
int main()
{
    int i,j;
    int sum = 0;
    int mul;

    for(i = 1;i <= N;i++)   //for循环求阶乘的和
    {
        mul = 1;

        for(j = 1;j <= i;j++)//求阶乘
        {
            mul = mul * j;
        }

        sum = sum + mul;
    }

    printf("结果:%d\n",sum);

    return 0;
}

题目4:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。

#include <stdio.h>

int main()
{
    int n;
    int a,b,c;

    for(n = 100;n < 1000;n++)
    {
        a = n / 100;//百位
        b = (n % 100) / 10;//十位
        c = (n % 100) % 10;//个位
        
        if(n == (a*a*a) + (b*b*b) + (c*c*c))
        {
            printf("%4d",n);
        }
    }

    printf("\n");

    return 0;
}


题目5:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制

#include <stdio.h>

void fun(int a,int n)
{
    int i;//循环变量
    int s = a;

    for(i = 1;i < n;i++)
    {
        a = a * 10 + a % 10; //得出每一个数
        s = s + a;
    }

    printf("结果:\n");
    printf("%d\n",s);
}
int main()
{
    int a,n;

    printf("输入数字和个数:\n");
    scanf("%d%d",&a,&n);

    fun(a,n);

    return 0;
}

题目6:编程实现输入5个学生的学号、计算他们的期中和期末成绩,然后计算其平均成绩,并输出成绩表。(结构体)

#include <stdio.h>
int main()
{
    struct student
    {
        int number;                         //学号
        float mid;                            //期中成绩
        float final;                          //期末成绩
    };

    struct student a[5];
    int i;
    float sum1 = 0,sum2 = 0;
    float avgmid,avgfin;

    printf("输入信息:\n");

    for(i = 0;i < 5;i++)
    {
        scanf("%d%f%f",&a[i].number,&a[i].mid,&a[i].final);
        printf("\n");
    }

    for(i = 0;i < 5;i++)
    {
        sum1 = sum1 + a[i].mid;
        sum2 = sum2 + a[i].final;
    }

    printf("期中平均%g,期末平均%g",sum1/5,sum2/5);
    printf("\n");

 /* float avgmid,avgfin;

    struct student n1,n2,n3,n4,n5;

    printf("输入第一个学生信息:\n");
    scanf("%d%f%f",&n1.number,&n1.mid,&n1.final);
    average(n1.number,n1.mid,n1.final);
    printf("\n");

    printf("输入第二个学生信息:\n");
    scanf("%d%f%f",&n2.number,&n2.mid,n2.final);
    average(n2.number,n2.mid,n2.final);
    printf("\n");

    printf("输入第三个学生信息:\n");
    scanf("%d%f%f",&n3.number,&n3.mid,n3.final);
    average(n3.number,n3.mid,n3.final);
    printf("\n");
    
    printf("输入第四个学生信息:\n");
    scanf("%d%f%f",&n4.number,&n4.mid,n4.final);
    average(n4.number,n4.mid,n4.final);
    printf("\n");
    
    printf("输入第五个学生信息:\n");
    scanf("%d%f%f",&n5.number,&n5.mid,n5.final);
    average(n5.number,n5.mid,n5.final);
    printf("\n");

    avgmid = (n1.mid + n2.mid + n3.mid + n4.mid + n5.mid) / 5;
    avgfin = (n1.final + n2.final + n3.final + n4.final + n5.final) / 5;

    printf("期中平均%g,期末平均%g",avgmid,avgfin);
    printf("\n");
 */   
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值