第九周学习总结

第九周学习总结

一、前缀和

前缀和是什么?

前缀和是能快速求出某段区间的元素和的一种方法

注意:前缀和的下标要从1开始,避免下标的转换

一般方法代码实现(只针对一维数组)

for(i=1;i<=b;i++)scanf("%d",&a[i]);  //输入各个值,b是长度
for(i=1;i<=b;i+=)s[i]=s[i-1]+a[i];  //计算各区间值

例题

例题链接:问题 F: jz学长的机器 - OJ (jsuacm.cn)

第九周学习总结_第1张图片

 代码实现:

#include
int main()
{

long long int a,b,c,d,i,sum; /*如果不是长整形就会导致输出超限,a代表长度,b代表输入组数,c代表左区间,d代表右区间;*/
scanf("%lld%lld",&a,&b);
long long int x[a+2],y[a+2]; //如果自己输入长度会导致输出超限
x[0]=0,y[0]=0;
for(i=1;i<=a;i++)scanf("%lld",&x[i]);
for(i=1;i<=a;i++)y[i]=y[i-1]+x[i];
while(b--)
{
    scanf("%lld%lld",&c,&d);
    sum=y[d]-y[c-1];   //计算区间值
    sum=-sum;
    printf("%lld\n",sum);
}
     return 0;
}

二、unsigned long long

unsigned long long类型是目前C语言中精度最高的数据类型,可以用来表示20以内的阶乘数据,20以外的自测。

输出的时候可以用“%llu”或者“%116u”

经典例题:问题 A: a*b - OJ (jsuacm.cn)第九周学习总结_第2张图片

 三、scanf和gets的区别

1.gets的输入分割符只有回车,因此gets是能够读入空格的。如果输入为"hello world"时,上面程序的运行结果是"hello world"。而如果用scanf则只能输出hello

2.此外,scanf和gets对待缓冲区里的回车符也是完全不同的。scanf在读取非空白符之前会忽略回车,读取之后如果遇到空白字符会停止输入,将其留着缓冲区里;gets只要一遇到回车就输入结束,并把这个回车从缓冲区里移走。

3.gets可以读取空回车,但是scanf不能。

例如输入为"\nhello\n",也就是说,先输入一个空行,然后在第二行输入"hello"并回车。scanf按照它的读取原理,把第一个’\n’作为空白符忽略掉,然后读取字符串"hello",遇到第二个’\n’时输入结束,但是第二个’\n’会被scanf残留在缓冲区里。scanf的输入结果是读入字符串"hello"。当用gets进行读取时,它遇到第一个’\n’,就找到了它的输入分隔符,停止继续输入,第一个’\n’被从缓冲区中读走了,缓冲区里剩下
(原文链接:https://blog.csdn.net/qq_42820594/article/details/82714251}

四、结构体

1.结构体是什么

结构体是一个自己定义的类型,其中可以包含多种类型的数据,必须使用struct定义。

2.构成

结构体由:(1)结构体标签 (2)结构体成员  (3)结构体变量组成。

struct s //s为结构体标签(相当套一个模板进去)
{
    char name;  //name,age,sore为结构体的成员
    int age;
    float sore;
}s1={"阿雨",18,60.5}; //结构体变量赋值

/*也可以是这样赋值*/

struct s //s为结构体标签
{
    char name;  //name,age,sore为结构体的成员
    int age;
    float sore;
}s1;
    s s1;
    s1.name="阿雨";
    s1.age=18;
    s1.sore=60.5;  //注意这样赋值的时候一定要有'.'这个号

/*当是数组赋值时*/

struct s //s为结构体标签(相当套一个模板进去)
{
    char name;  //name,age,sore为结构体的成员
    int age;
    float sore;
}s1[3}={
    {"阿雨",18,60.5},
    {"阿甘",20,70},
    {"阿瑶",19,85},
        };

输出的时候为:

struct s 
{
    char name;  
    int age;
    float sore;
}s1={"阿雨",18,60.5};
printf("%d",s1.age);

五、素数判断

素数是一个数只能被自身和1整除的数,例如2,3,5,7

代码实现

#include 
#include
#include
int main()
{
    int a,s=0;
    scanf("%d",&a);
    for(int j=1;j<=a;j++)if(a%j==0)s++; //如果一个数能被多个3个数以上整除的数就不是素数
        if(s>2)printf("不是素数");
        else printf("是");
    return 0;
}

你可能感兴趣的:(学习)