PAT 1001 1002


题目1001:http://www.patest.cn/contests/pat-a-practise/1001

审题,然后对其进行框图书写
 
下面是代码
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define min -1000000
#define max 1000000

/**
输入:A B(空格隔开) -1000 000 <= a, b <= 1000000
输出:100,100,(每三位一个逗号隔开)
by Mr Pan
**/
int main()
{
    int a,b,sum,temp1;
    char s[7];
    int i,j,n;

    scanf("%d %d",&a,&b);
    if(  (a>=min) && (a<=max) && (b>=min) && (b<=max))

    {
        sum = a + b;
        temp1=sum;
        sum=abs(sum);    //正数负数一律处理
        n=0;
        i=0;

        if(sum==0)
            printf("0");  //考虑到等于0的情况
        while(sum!=0)     //不等于0的情况
        {
            s[i]=sum%10;
            n++;
            i++;
            sum=sum/10;

        }
/**输出部分采用字符输出**/
        j=n;
        if(temp1<0)printf("-");
        for(i=n-1;i>=0;i--)
        {
            printf("%d",s[i]);
            j--;
            if((j)%3==0&&j!=0)
                printf(",");
        }
        printf("\n");
    }
    else
      exit(0);

      return 0;

}
</pre><pre name="code" class="cpp">
题目:http://www.patest.cn/contests/pat-a-practise/1002

 
</pre><pre name="code" class="cpp">#include <stdio.h>
#include <stdlib.h>
/**
1.输入存储操作
2.遍历操作并相加
3.整理数据输出


这里应用一个巧妙的思维方式解答
1,题目意思是多项式相加,多项式相加需要相同的项系数相加
2.那我就把这里的项抽象为数组的下标,系数抽象为数组一个项的值,即可对应项相加操作。


1<=k<=10
**/
#define N 1001


void Init_array(double *a,int n)
{
    int i;
    for(i=0;i<n;i++)
        a[i]=0;
}


int main()
{
    /**变量定义**/
    double a[N];
    int k,Ni;
    double aNi;
    int i;
    int cnt;


    Init_array(a,N);//初始化数组
    scanf("%d",&k);
    /**应用该抽象方式对数组进行赋值**/
    for(i=0;i<k;i++)
    {
        scanf("%d",&Ni);
        scanf("%lf",&aNi);
        a[Ni]+=aNi;
    }


    scanf("%d",&k);
    for(i=0;i<k;i++)
    {
        scanf("%d",&Ni);
        scanf("%lf",&aNi);
        a[Ni]+=aNi;
    }
    cnt=0;
    for(i=0;i<N;i++)
    {
        if(a[i]!=0)cnt++;
    }
    printf("%d",cnt);


    for(i=N-1;i>=0;i--)
    {
        if(a[i]==0)continue;
        printf(" %d %.1lf",i,a[i]);
    }
    printf("\n");


    return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值