精华内容
下载资源
问答
  • 有一个正整数数组,包含N个元素,要求编程出其中素数之以及所有素数平均值 #include <stdio.h> /** * 题目要求:有一个正整数数组,包含N个元素,要求编程出其中素数之以及所有素数平均值 ...

    题目如下:
    有一个正整数数组,包含N个元素,要求编程求出其中的素数之和以及所有素数的平均值

    #include <stdio.h>
    
    /**
     * 题目要求:有一个正整数数组,包含N个元素,要求编程求出其中的素数之和以及所有素数的平均值
     *
     * 素数:即在正整数中,除了1与本身之外没有其他约数的数(1除外)
     *
     **/
    int main(int argc,char *argv[])
    {
    	int a[100],i,j,s,count=0;
    	
    	float sum=0;
    	
    	for(i=0;i<100;i++)
    	{
    		a[i]=i+1;
    	}
    	
    	for(i=0;i<5;i++)
    	{
    		// s 等于零就代表是素数
    		s=0;
    		
    		for(j=2;j<=a[i];j++)
    		{
    			
    			if(a[i]==j)
    			{
    				// 等于本身跳出此次循环
    				continue;
    			}
    			else
    			{
    				if((a[i]%j)==0)
    				{
    					// i能被任何一个数(不是1或者本身)整除,就是不是素数
    					s=1;
    					break;
    				}
    			}
    		}
    		
    		if(s==0)
    		{
    			printf("素数%d\n",a[i]);
    			count++;
    			sum+=a[i];
    		}
    	}
    	
    	
    	printf("count = %d \n",count);
    	printf("sum = %.2f \n",sum);
    	printf("avreage = %-10.2f \n",(float)(sum/count));
    	
    	return 0;
    }
    
    展开全文
  • 之后将数组p内元素排序并出每个切割后子串长度)。但是如下代码我在实际运行中却出现了p[1]j同时变化境况。举例,我输入 “CCCGGG  GGGCCC" 即将执行p[n++]=j+3后ÿ...
  • 数组使用:素数 埃拉托色尼筛法: ... 这个程序展示了数组应用,快速访问数组内的元素 用数组值作为标志位, 而使用了下表来保存素数, 这样设计很奇妙 *****************************************...

    数组的使用:求素数 埃拉托色尼筛法:

    /***************************************************************
    
      这个程序展示了数组的应用,快速的访问数组内的元素
      用数组的值作为标志位, 而使用了下表来保存素数, 这样的设计很奇妙
      
    ****************************************************************/
    
    #include <stdio.h>
    #include <stdlib.h>
    
    #define N 100
    
    int main()
    {
        int i,j;
        int *f = (int *)malloc(N*sizeof(int));
    
        for(i = 0; i < N; i ++) f[i] = 1;
    
        for (i = 2; i < N; i++)
            if (f[i])
                for (j = i; j*i < N; j++)
                    f[i*j] = 0;
    
        for (i = 1; i < N; i++)
            if (f[i])
                printf("%4d\n", i);
    
        return 0;
    }

     

     

    链表的使用:约瑟夫环:

    /*******************************************************************************************************
        约瑟夫环问题(Josephus)
        用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。(约瑟夫环问题 Josephus)
        建立一个有N个元素的循环链表,然后从链表头开始遍历并记数,如果计数i==m(i初始为1)踢出元素,继续循环,
        当当前元素与下一元素相同时退出循环。
    ********************************************************************************************************/
    
    #include <stdlib.h>
    #include <stdio.h>
    
    typedef struct node *link;
    struct node
    {
        int item;
        link next;
    };
    
    int main(char argc, char* argv[])
    {
        link t = (link) malloc(sizeof(*t)), p = t;
        t->item =1;    t->next = t;
        int i , N = atoi(argv[1]), M = atoi(argv[2]);
    
        for (i = 2; i <= N; i++)
        {
            p = (p->next=(link)malloc(sizeof(*p)));
            p->item = i;
            p->next = t;
        }
    
        while (p != p->next)
        {
            for (i = 1; i < M; i++)
                p = p->next;        
            printf("这次被杀掉的人是:%4d\n", p->next->item);
            p->next = p->next->next;
        }
        
        printf(" %4d\n",p->item);
    
        return 0;
    }

     

    转载于:https://www.cnblogs.com/dLong/p/3388443.html

    展开全文
  • C语言----区域检索 - 数组不可变

    千次阅读 2021-03-01 19:20:48
    给定一个整数数组 nums,数组从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点。 实现 NumArray 类: NumArray(int[] nums) 使用数组 nums 初始化对象 int sumRange(int i, int j) 返回数组 nums 从...
    给定一个整数数组  nums,求出数组从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点。
    
    实现 NumArray 类:
    
    NumArray(int[] nums) 使用数组 nums 初始化对象
    int sumRange(int i, int j) 返回数组 nums 从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点(也就是 sum(nums[i], nums[i + 1], ... , nums[j]))
     
    
    示例:
    
    输入:
    ["NumArray", "sumRange", "sumRange", "sumRange"]
    [[[-2, 0, 3, -5, 2, -1]], [0, 2], [2, 5], [0, 5]]
    输出:
    [null, 1, -1, -3]
    
    解释:
    NumArray numArray = new NumArray([-2, 0, 3, -5, 2, -1]);
    numArray.sumRange(0, 2); // return 1 ((-2) + 0 + 3)
    numArray.sumRange(2, 5); // return -1 (3 + (-5) + 2 + (-1)) 
    numArray.sumRange(0, 5); // return -3 ((-2) + 0 + 3 + (-5) + 2 + (-1))
     
    
    提示:
    
    0 <= nums.length <= 104
    -105 <= nums[i] <= 105
    0 <= i <= j < nums.length
    最多调用 104 次 sumRange 方法
    
    

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/range-sum-query-immutable
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    题解:本题按照常规做法(不考虑时间复杂度),就是循环创建数组,然后根据给出的i和j,循环相加就可以。但是本题的官方解法更加简洁,复杂度也只需要一次遍历,不过就是很难想到。下面给出两种接法。第一种笨方法是我能想到的…

    常规做题代码如下

    typedef struct 
    {
        int *arr;
    } NumArray;
    
    
    NumArray* numArrayCreate(int* nums, int numsSize) 
    {
        int i=0;
        NumArray *arrayCreate = (NumArray *)malloc(sizeof(NumArray));
        arrayCreate->arr = (int*)malloc(numsSize*sizeof(int));
        memset(arrayCreate->arr,0,numsSize);
    
        for(i=0;i<numsSize;i++)
        {
            arrayCreate->arr[i] = nums[i];
        }
        return arrayCreate;
    }
    
    int numArraySumRange(NumArray* obj, int i, int j) 
    {
        int k=0,sum=0;
        for(k=i;k<=j;k++)
        {
            sum += (obj->arr[k]);
        }
        return sum;
    }
    
    void numArrayFree(NumArray* obj) 
    {
        free(obj->arr);
    }
    

    官方解法就涉及到归纳的方法,我们最终的目的是要输出从索引i到j的总和,那么如果我们只要数组到j的总和减去到i的总和,也是i到j的总和。所以我们在第一次创建数组的时候直接算出i的前缀和,后面直接数组j的数值减去i的数值即可。

    typedef struct {
        int* sums;
    } NumArray;
    
    NumArray* numArrayCreate(int* nums, int numsSize) {
        NumArray* ret = malloc(sizeof(NumArray));
        ret->sums = malloc(sizeof(int) * (numsSize + 1));
        ret->sums[0] = 0;
        for (int i = 0; i < numsSize; i++) {
            ret->sums[i + 1] = ret->sums[i] + nums[i];
        }
        return ret;
    }
    
    int numArraySumRange(NumArray* obj, int i, int j) {
        return obj->sums[j + 1] - obj->sums[i];
    }
    
    void numArrayFree(NumArray* obj) {
        free(obj->sums);
    }
    
    展开全文
  • 给定一个整数数组 nums,数组从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点。 实现 NumArray 类: NumArray(int[] nums) 使用数组 nums 初始化对象 int sumRange(int i, int j) 返回数组 nums 从...

    所有题目源代码:Git地址

    题目

    给定一个整数数组  nums,求出数组从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点。
    
    实现 NumArray 类:
    
    NumArray(int[] nums) 使用数组 nums 初始化对象
    int sumRange(int i, int j) 返回数组 nums 从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点(也就是 sum(nums[i], nums[i + 1], ... , nums[j]))
     
    
    示例:
    
    输入:
    ["NumArray", "sumRange", "sumRange", "sumRange"]
    [[[-2, 0, 3, -5, 2, -1]], [0, 2], [2, 5], [0, 5]]
    输出:
    [null, 1, -1, -3]
    
    解释:
    NumArray numArray = new NumArray([-2, 0, 3, -5, 2, -1]);
    numArray.sumRange(0, 2); // return 1 ((-2) + 0 + 3)
    numArray.sumRange(2, 5); // return -1 (3 + (-5) + 2 + (-1)) 
    numArray.sumRange(0, 5); // return -3 ((-2) + 0 + 3 + (-5) + 2 + (-1))
     
    
    提示:
    
    0 <= nums.length <= 104
    -105 <= nums[i] <= 105
    0 <= i <= j < nums.length
    最多调用 104 次 sumRange 方法
    

    方案:

    class NumArray
    {
    public:
        vector<int> f;
    
    public:
        NumArray(vector<int> &nums)
        {
            //用一个数组记录前N个总和即可
            int len = nums.size();
            if (len > 0)
            {
                f.push_back(nums[0]);
                for (int i = 1; i < len; i++)
                {
                    f.push_back(nums[i] + f[i - 1]);
                }
            }
        }
    
        int sumRange(int i, int j)
        {
            if (f.size() == 0)
                return 0;
            return i == 0 ? f[j] : f[j] - f[i - 1];
        }
    };
    
    /**
     * Your NumArray object will be instantiated and called as such:
     * NumArray* obj = new NumArray(nums);
     * int param_1 = obj->sumRange(i,j);
     */
    
    复杂度计算
    • 时间复杂度:O(n),这个是构造时候的复杂度
    • 空间复杂度:O(n)
    展开全文
  • 给定一个整数数组 nums,数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。update(i, val) 函数可以通过将下标为 i 的数值更新为 val,从而对数列进行修改。例: 输入:[“NumArray”,“sumRange”...
  • 给定一个整数数组 nums,数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点(可假设数组不可变。多次调用 sumRange 方法)。例: 输入:["NumArray","sumRange","sumRange","sumRange"] [[[-2,...
  • 在 [left, right] 区间搜索目标数字, 首先出区间中间位置, 然后用中间位置数字目标数字作比较 1.如果这个数大于目标数字, 说明要查找目标在整个区间左半部分, 修改右侧区间为mid - 1, 在[l...
  • 对角线为: 然后,我们设定ij分别作为行与列: 我们把这个二维数组所有元素都取出来代码为两个循环,外层是i,层是j://首先先定义一些变量,比如sum用于累积总和int sum=0;//再定义一个3x3整形数组int a[3][3...
  • 【素数】:又称质数,有无限个,质数定义为在大于1自然数中除了1它本身以外不在有其他因数数。源码参考(有注释详解):#include &lt;stdio.h&gt;int main(){ int i,j,n,a[101]; //初始化操作,给...
  • 题目:用筛选法100之内的素数。 以下是本篇文章正文内容,欢迎朋友们进行指正,一起探讨,共同进步。——来自考研路上lwj 一、解题思路 思路: //1.素数是什么:素数就是除了1本身没有其他因子数。 //2....
  • C语言的科学艺术.pdf

    热门讨论 2012-01-19 14:09:05
    本资源包含《C语言的科学艺术(英文版)》.pdfC语言的科学艺术(中文版)》.pdf两本书,有兴趣朋友可以进行对照阅读。 《C语言的科学艺术》,原名《The Art and Science of C: A Library-Based Introduction...
  • 一个3 X 3整形矩阵对角线元素4. 有一个已经排好序的数组,要求输入一个数后,按原来顺序规律将它插入数组中5. 将一个数组值按逆序重新存放。例如:原来顺序为8,6,5,4,1。要求改为1,4,5,6,8。6. 输出...
  • 1、题目翻译:题目意思是一个二维数组内的一个矩形的和res(1 ×1,1×2,2×2…),且res 是小于等于k的最大值。如果里面某一个元素或者一个求和等于k的话,那么res直接就是k。 2、解题思路:采用暴力破解法,...
  • 解题思路:将n个学生数据表示为结构体数组(有n个元素)。按照功能函数化思想,分别用3个函数来实现不同功能: (1)用input函数来输入数据和求各学生平均成绩。 (2)用max函数来找平均数成绩最高学生...
  • 你必须知道495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    2.9 为什么不能用==!=操作符比较结构? 2.10结构传递返回是如何实现? 2.11 如何向接受结构参数函数传入常量值?怎样创建无名中间常量结构值? 2.12 怎样从/向数据文件读/写结构? 结构...
  • 编写函数fun,出a到b之能被7或者11整除,但不能同时被711整除所有正数,并将他们放在数组中,函数返回这些数个数。 编写main函数,定义一个整型数组,可容纳1000个元素,定义整型变量a,b,输入a,b值(输入...
  • 作者在网络版CFAQ列表基础上进行了大幅度扩充丰富,结合代码示例,权威而且详细深入地解答了实际学习工作中最常遇到495个C语言问题,涵盖了初始化、数组、指针、字符串、内存分配、库函数、C预处理器等...
  • 2、设计C程序,根据分段函数关系,输入X,计算并输出Y 的值。 3.计算器程序,用户输入运算数...编写C程序,随机产生0~100随整数,存放在一个3*4的矩阵中,编程序出值最大的那个元素的值,以及其所在的行号列号。
  • 《你必须知道495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    2.9 为什么不能用==!=操作符比较结构? 26 2.10 结构传递返回是如何实现? 26 2.11 如何向接受结构参数函数传入常量值?怎样创建无名中间常量结构值? 26 2.12 怎样从/向数据文件读/写结构...
  • 2.9 为什么不能用==!=操作符比较结构?  2.10结构传递返回是如何实现? 2.11 如何向接受结构参数函数传入常量值?怎样创建无名中间常量结构值?  2.12 怎样从/向数据文件读/写结构? 结构...
  •  2.9 为什么不能用==!=操作符比较结构?  2.10 结构传递返回是如何实现?  2.11 如何向接受结构参数函数传入常量值?怎样创建无名中间常量结构值?  2.12 怎样从/向数据文件读/写结构?  ...
  • c语言经典案例

    2014-10-30 08:06:57
    实例125 求数组元素最小值 165 实例126 打印1~5阶乘 166 实例127 求最大公约数最小公倍数 167 实例128 求直角三角形斜边 168 实例129 相对最小整数 169 实例130 当前时间转换 170 实例131 显示程序运行...
  •  2.9 为什么不能用==!=操作符比较结构? 2.10结构传递返回是如何实现? 2.11 如何向接受结构参数函数传入常量值?怎样创建无名中间常量结构值? 2.12 怎样从/向数据文件读/写结构? 结构...
  • 因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。  本章介绍数值数组和字符数组,其余的在以后各章陆续介绍。数组类型说明 在C语言中使用数组必须先进行类型说明。 ...
  • 2.9 为什么不能用==!=操作符比较结构? 26 2.10 结构传递返回是如何实现? 26 2.11 如何向接受结构参数函数传入常量值?怎样创建无名中间常量结构值? 26 2.12 怎样从/向数据文件读/写结构...
  • 作者在网络版CFAQ列表基础上进行了大幅度扩充丰富,结合代码示例,权威而且详细深入地解答了实际学习工作中最常遇到495个C语言问题,涵盖了初始化、数组、指针、字符串、内存分配、库函数、C预处理器等...

空空如也

空空如也

1 2 3 4 5 6
收藏数 105
精华内容 42
关键字:

c语言求数组内元素的和

c语言 订阅