这个为什么会PA真是搞不懂(语言-c语言)

img

int main(void){
    int t,a,b,c,i;
    scanf("%d",&t);
    for(i=0;i<t;i++){
        scanf("%d %d %d",&a,&b,&c);
        if(a+b>c)
          printf("Case #%d: true\n",i+1);
        else printf("Case #%d: false\n",i+1);
    }
    return 0;
}

这个为什么会PA真是搞不懂,int范围也够了;

a+b 就不一定是 int 范围了。

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7590028
  • 这篇博客也不错, 你可以看下一元多项式运算器【数据结构/C语言】(加减乘法以及升降幂排序)
  • 除此之外, 这篇博客: 快速排序(分而治之策略及C语言实现)中的 如何实现连接两个数组(int类型数组) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  •                         方法一:据说linux kernel中有一个flex_array的实现
                            方法二:新建一个数组,将需要连接的数组内元素的值放到新数组中
                                #include <bits/stdc++.h>
                                #include <stdlib.h>
                                using namespace std;
                                int* ss(int *b,int size_n)
                                {
                                    int num = 0;
                                    int num_2=0;
                                    //printf("%d\n",*b);
                                    //cout<<"(sizeof(b)/sizeof(b[0]))"<<(sizeof(b)/sizeof(b[0]))<<endl;
                                    for(int j=0; j<size_n; j++)
                                    {
                                        b[j]=b[j]+100;
                                        cout<<b[j]<<endl;
                                    }
                                    int a[size_n];
                                    int x[size_n];
                                    for(int k =0; k<size_n; k++)
                                    {
                                        if(b[k]%2==0)
                                        {
                                            a[num]=b[k];
                                            num++;
                                        }
                                    }
                                    cout<<"num:"<<num<<endl;
                                    for(int nn=0; nn<num; nn++)
                                    {
    
                                        cout<<"a[num]:"<<a[nn]<<endl;
                                    }
                                    for(int k =0; k<size_n; k++)
                                    {
                                        if(b[k]%5==0)
                                        {
                                            x[num_2]=b[k];
                                            num_2++;
                                        }
                                    }
                                    cout<<"num_2:"<<num_2<<endl;
                                    for(int nn=0; nn<num_2; nn++)
                                    {
    
                                        cout<<"x[num_2]:"<<x[nn]<<endl;
                                    }
    
                                    int f = num+num_2;
                                    int z[f];
    
                                    ///连接两个数组
                                    for(int d =0;d<f;d++)
                                    {
                                        if(d<num)
                                        {
                                            z[d]=a[d];
                                        }
                                        if(d>=num)
                                        {
                                            z[d] = x[d-num];
                                        }
                                    }
                                    for(int nn=0; nn<f; nn++)
                                    {
    
                                        cout<<"z[nn]:"<<z[nn]<<endl;
                                    }
                                    return z;
                                }
                                int main()
                                {
                                    int a[9];
                                    int num =0;
                                    for(int i =11; i<20; i++)
                                    {
                                        a[num++] = i;
                                    }
                                    for(int l=0; l<num; l++)
                                    {
                                        cout<<"a[]"<<a[l]<<endl;
                                    }
                                    int *y;
                                    y = ss(a,9);
                                    int yy =0;
                                    while(*y)
                                    {
                                        cout<<"y:"<<y[yy++]<<endl;
                                        y+=sizeof(int);
    
                                    }
    
                                    return 0;
                                }
    
  • 您还可以看一下 朱有鹏老师的C语言复杂表达式与指针应用视频精讲-C语言专题第4部分课程中的 4.4.3.函数指针实战1小节, 巩固相关知识点