程序功能:求1-3+5-7+...-99+101的值。 注意:请勿改动主函数main中的任何内容,仅在函数花括号中填入你编写的若干语句

程序功能:求1-3+5-7+...-99+101的值。
注意:请勿改动主函数main中的任何内容,仅在函数花括号中填入你编写的若干语句

img

参考如下:

#include<stdio.h>

int main() 
{
    int i, flag, j, sum;
    flag = 1;
    j = 1;
    sum = 0;
    for (i = 1; i <= 101; i+=2)
    {
        sum += i * flag;
        flag = -flag;
    }
    printf("%d", sum);

    return 0;
}

for(i=1;i<102;i+=2)
{
sum+=i*flag;
flag=!flag;
}

供参考:

#include <stdio.h>
void main()
{
    int i, flag, j, sum;
    flag = 1;
    j = 1;
    sum = 0;
    /************Program**************/
    while (j <= 101) {
        sum += flag * j;
        j += 2;
        flag = -flag;
    }
    printf("%d", sum);
    /***********   End  *************/
}

i = -1;
for(; j <= 101; j+=2)
{
  sum += j * flag;
  flag = i * flag;
}

此方法用到了所有题目中给的变量,如果有用麻烦给个采纳,谢谢~

  • 这篇博客: 【万字总结,花几分钟让你进一步了解指针】(学习笔记11--指针中)中的 1️⃣数组名亦是指针 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 数组名所对应的就是第一个数组元素的内存地址即可以把数组名看为指向数组元素的指针。我们可以对该指针进行解引用,从而对数组首元素进行访问

    int a[5] = {10,20,30,40,50};
    printf("The first element value: %d\n", *a);//后面的元素指针表示*(a+1)、*(a+2)、*(a+3)、*(a+4)
    

    数组名a指向首地址
    在这里插入图片描述

    结果

    The first element value: 10
    

    通过该指针来修改首元素的值

    int a[5] = {10,20,30,40,50};
    *a = 100;
    printf("The first element value: %d\n", *a);
    

    结果

    The first element value: 100
    

    通过对数组名进行解引用,就可以对数组首元素进行访问和修改,与使用数组下标访问和修改数组元素的效果相同。因此,认为*a等价于a[0]。*a=100等价于a[0]=100

    也可以通过取地址符来获得数组首元素的内存地址,并将其存储到一个指针变量

    int a[5] = {10,20,30,40,50};
    int *pi = &a[0];
    printf("The first element value: %d\n",*pi);
    

    由于数组名即是数组首元素的内存地址,因此,可以将第二条语句修改为

    int*pi = a;//等价于int *pi = &a[0];
    

    ⁉️数组名a是否等同于指针变量pi呢?
    ❗❗❗答案是否定的,原因是指针变量的值可以改变,即储不同的内存地址值;而数组名永远就只能表示数组首元素的内存地址不能被改变

    pi = &a[1];//将数组第二个元素的内存地址赋值给指针变量pi
    a = &a[1];//错误,数组名只能表示为首元素的内存地址,不允许被改变
    

    数组名更像是一个指针常量,我们可以通过它来访问或修改它所指向的对象,但他自身的值不允许被修改,即永远只能指向数组中的第一个元素