C practice(一)

今天开始学习C语言算法,留存纪念一下,并记录下写代码过程中遇见得问题

PAT B1001 (3n+1)猜想

#include <stdio.h>

void FUNC(int *data);//声明

int main()

{

        int i;

        printf("Please input your num: \n");

        scanf("%d",&i);

        FUNC(&i);

        return 0;

}

/* 调用函数*/

void FUNC(int *data)

{

        int step=0;

        int n= *data;

        while(n!=1)

        {

                if(n % 2 == 0)

                {

                        n/=2;

                }else

                {

                        n = (3*n +1)/2;

                }

                step++;

        }

        printf("%d\n",step);

}

输入样例3

输出样例5

Pass

PAT B1032

这题遇见一个问题,本地使用

int school[max] = {0} ;//编译会报错

error: variable-sized object may not be initialized

原因是使用变量定义数组容量时,不能同时进行初始化!!!

解决方法有动态内存分配,但是题目要求了固定长度,所以我使用memset 去赋值

#include <stdio.h>

#include <string.h>//memset 依赖

int main()

{

        int Max = 10010;

        int Num,SchoolId,Score;

        int SchoolScore[Max];

        memset(SchoolScore,0,sizeof(SchoolScore));

        printf("please input school num:\n");

        scanf("%d",Num);

/*    计算总分*/

        for(int i= 0; i< Num;i++)

        {

                printf("Please input schoolId: Score : \n");

                scanf("%d %d",&SchoolId,&Score);

                SchoolScore[SchoolId] += Score;

        }

/* 遍历找最高分学校*/

        int  k =1,temp = -1;

        for(int i =0; i< = Num; i++)

        {

               if(SchoolScore[i] > temp)

                {

                        temp=SchoolScore[i];

                        k=i;

                }        

        }

printf("%d %d\n",k,temp);

        return 0;

}

输入样例

6

3 65

2 80

1 100

2 70

3 40

3 0

输出样例

2 150

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值