C 一次性更改数组不同索引处的值

C 一次性更改数组不同索引处的值,c,arrays,C,Arrays,假设我有一个100个学生分数的数组。假设在某个索引之后,比如说9,我想给每个学生添加一个特定的值,比如说初始值的2,也就是说,假设最初我有 student_mark[0]=5 student_mark[1]=6... .... .... student_mark[9]=2 student_mark[10]=5 .... .... student_mark[99]=8 然后根据我的要求在索引9之后添加2,我应该得到这样的结果 student_mark[0]=5 student_mark[1]=

假设我有一个100个学生分数的数组。假设在某个索引之后,比如说9,我想给每个学生添加一个特定的值,比如说初始值的2,也就是说,假设最初我有

student_mark[0]=5
student_mark[1]=6...
.... 
....
student_mark[9]=2
student_mark[10]=5
....
....
student_mark[99]=8
然后根据我的要求在索引9之后添加2,我应该得到这样的结果

student_mark[0]=5
student_mark[1]=6...
.... 
....
student_mark[9]=2
student_mark[10]=7
....
....
student_mark[99]=10

有没有一种方法可以一次完成这项工作,而不必从索引10迭代到100,每次单独添加2个。

没有好方法。您描述的循环的
有什么问题


如果这真的是你程序中的瓶颈,我猜你是在重复调用这段代码。在这种情况下,可能有更好的算法来实现您真正的最终目标(我们不知道),但要完成您在原始帖子中描述的特定任务(在数组的每个元素中添加两个),您不会找到比C
for
循环更好的解决方案。

没有好的方法。您描述的
循环的
有什么问题

如果这真的是你程序中的瓶颈,我猜你是在重复调用这段代码。在这种情况下,可能会有更好的算法来实现您真正的最终目标(我们不知道),但要完成您在原始帖子中描述的特定任务(在数组的每个元素中添加两个),您不会找到比C
for
循环更好的解决方案。

不是不使用一些。如果你需要问这个问题,那不是你的问题。只需迭代一下,在现代硬件上,C语言的速度非常快。

不是不使用一些。如果你需要问这个问题,那不是你的问题。只要迭代一下,在现代硬件上,C语言的速度非常快。

inti;
int i;
for (i = 10; i < 100; i++){
    student_mark[i] +=2;
}
对于(i=10;i<100;i++){ 学生成绩[i]+=2; }
inti;
对于(i=10;i<100;i++){
学生成绩[i]+=2;
}

我必须使用更大的数组和许多值来执行此操作,这反过来会降低我的程序的速度。如果您仔细想想,就没有办法让它更快。CPU必须去内存中的每个位置,并在那里更改数据,无论发生什么。这是用C语言编写的,并用任何现代编译器编译,它将以最少的额外工作量以尽可能快的速度工作。许多编译器甚至会为您将其矢量化。是的,时间是有限制的。。除此之外,我的程序还必须做其他事情。@AnoopKanyan但您是否尝试过一个循环,看看它是否比您分配给整个程序执行的时间要少?在不知道它是否实际工作的情况下抛出
for
循环是没有用的。它需要更多的时间。。。所以我必须想出一个更好的算法。我必须用更大的数组和许多值来实现这一点,这反过来会减慢我的程序。如果你仔细想想,就没有办法让它更快。CPU必须去内存中的每个位置,并在那里更改数据,无论发生什么。这是用C语言编写的,并用任何现代编译器编译,它将以最少的额外工作量以尽可能快的速度工作。许多编译器甚至会为您将其矢量化。是的,时间是有限制的。。除此之外,我的程序还必须做其他事情。@AnoopKanyan但您是否尝试过一个循环,看看它是否比您分配给整个程序执行的时间要少?在不知道它是否实际工作的情况下抛出
for
循环是没有用的。它需要更多的时间。。。所以我必须想出一个更好的算法,这是
循环的一种用例。它大约有3行易于阅读的代码,而且速度会非常快,因为它是C。如果有一种更明显(甚至不是那么明显)的方法来加快速度,编译器可能会根据该方法优化代码,因此您可以选择源代码可读性最好的代码。这就是
for
循环的用例。它大约有3行易读的代码,而且速度会非常快,因为它是C。如果有一种更明显(甚至不那么明显)的方法来加快速度,编译器可能会将代码优化到该方法,因此,您可以为源代码选择最具可读性的内容。是否有一种方法可以一次性完成此操作,而无需从索引10迭代到100,每次单独添加2。是否有一种方法可以一次性完成此操作,而无需从索引10迭代到100,每次单独添加2。