三、编程题
m个人的成绩存放在score数组中,请编写函数 fun,它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。例如:当score数组中的数据为10、20、30、40、50、60、70、80、90时,函数返回的人数应该是4,below中的数据应为10、20、30、40。
#include <stdio.h>
#include <string.h>
int fun(int score[], int m, int below[])
{int i,j=0,aver,sum=0;
for(i=0;i<m;i++)
sum=sum+score[i];
aver=sum/m;
for(i=0;i<m;i++)
if(score[i]<aver)
{below[j]=score[i];j++;}
return j;
}
main( )
{ int i, n, below[9] ;
int score[9] = {10, 20, 30, 40, 50, 60, 70, 80, 90} ;
n = fun(score, 9, below) ;
printf( "\nBelow the average score are: " ) ;
for (i = 0 ; i < n ; i++) printf("%d ", below[i]) ;
}
先谢谢你了,不过还想问一问,请您看一下,下面这道题为什么两次输出循环结构呢
他们是否可以去掉??感激不尽
main()
{int a[3][3],i,j;
for(i=0;i<=2;i++)
for(j=0;j<=2;j++)
a[i][j]=rand()%10;
for(i=0;i<=2;i++)
for(j=0;j<=2;j++)
printf("%d%d",a[i][j]);
printf("\n");
}
你这个程序的输出结果太难看了,我给你改了一下输出格式,这样看着舒服点,你运行一下看看就容易理解我下面说的了。
main(){
int a[3][3],i,j;
for(i=0;i<=2;i++)
for(j=0;j<=2;j++)
a[i][j]=rand()%10;
for(i=0;i<=2;i++){
for(j=0;j<=2;j++)
printf("%5d",a[i][j]);
printf("\n");
}
}
程序目的:利用随机数生成一个3*3的矩阵,并输出结果,由于矩阵保存在一个二维数组里,所以要用一次循环嵌套,也叫多重循环,不是两个循环。
最外层的循环(变量为i)控制行,内层的j控制列,这下明白了吧
嘿嘿,我依然很感谢你,不过我想问的是可不可以这样写呢
main(){
int a[3][3],i,j;
for(i=0;i<=2;i++)
{for(j=0;j<=2;j++)
a[i][j]=rand()%10;
printf("%5d",a[i][j]);
printf("\n")}
谢谢
可以写在一个循环中,不过你得{}似乎没有匹配
#include
#include
main(){
int a[3][3],i,j;
for(i=0;i
#include
main(){
int i,j;
for(i=0;i<=2;i++){
for(j=0;j<=2;j++)
printf("%5d",rand()%10);
printf("\n");
}
}
还是那个问题,下面这道题可不可以改成如下呢
原题
main(){ int a[3][3],i,j;
for(i=0;i<=2;i++)
for(j=0;j<=2;j++)
a[i][j]=rand()%10;
for(i=0;i<=2;i++){
for(j=0;j<=2;j++)
printf("%5d",a[i][j]);
printf("\n");
}
}
改后
main(){
int a[3][3],i,j;
for(i=0;i<=2;i++)
{for(j=0;j<=2;j++)
a[i][j]=rand()%10;
printf("%5d",a[i][j]);
printf("\n")}
谢谢
可以
关于C语言,本题为什么for循环用了两次呢,求详解 都是什么情况下for循环...
我们来分析一下:首先,要做到这些是就必须遍历数组中的每一个元素,因此循环是必须的,而且对于这种循环次数已知的问题(数组元素数为9),我们一般会用for循环 其次,在设计程序的时候我们应遵守一项原则,尽量少地使用for循环的个数,尤其最好能避免for循环的嵌套问题(这道题显然不需要)。因此,我们...
for的用法详解,C语言for循环完全攻略
for 循环语句的基本格式为:for 循环的正确使用应避免在循环体后加分号,因为分号会将循环控制到空语句。执行过程包括“表达式1”执行一次、“表达式2”与“表达式3”和“内嵌语句”循环执行。一个简单的求和程序如下:求1到100的和。输出结果为:sum = 5050 此程序利用循环简化了求和过程,无论求和范围...
C语言程序设计求详解过程
首先,你要先明白,这个程序有两部分组成:函数fun(..)和主函数main();main()调用fun(..)函数实现算法运算。首先介绍主函数main():主要负责打印输出结果,for循环由k控制,连着调用fun(..)函数两次,并打印。fun(..)函数:实现算法运算。第一次调用:x == 1(参数a的值), z == 4(在z++...
c语言题求详解
第一层for循环时i=j=0,p+i指向c,条件c!=\\0成立,而且c比d小所以执行*(p+j)=’\\0’,而这时j等于0所以字符串str的第0个位置被替换成\\0,所以str变为\\0dalb\\0,然后i++,i变为1 。第二层for循环时i=1,j=0,p+i指向,d,条件d!=\\0成立,而且d等于d所以执行*(p+j)=*(p+...
如下程序 求详解 第一次for后 是先执行下面的for 还是先m++?主要是...
C的for语句()中有两个分号";"。第一个";"前的代码段在进入for前执行一次就不再执行;第一个";"后第二个";"前的语句在每次进入for循环时执行;第二个";"后的语句在for循环体执行到最后的}处时执行。所以for的()中的三段代码只是提供了一种写法,并不表示执行顺序。break只跳出它所在的循环...
c语言求详解
按循环次数来 一步步看就可以了 第一次循环、m=1 n=2 第二次 m=2 n=4 第三次是不同的 因为 n%3=1了 这里会执行break也就是退出循环 所以就没有打印了 也就没必要管mn的值了
c语言求详解
for(i=2;i<5;i++) \/\/ 1)i=2 { do { if(i%3)continue; \/\/i!=3时退出循环 n++; \/\/i=3时n++ 一次 } while(!i); \/\/i=2、3、4时都退出循环 否则进入死循环了,很危险 n++; \/\/i=2、3、4时n++ 三次 } printf("n=%d\\n",n); \/\/所以n++共四...
C语言求详解
if条件为真,执行之后的continue语句;continue的意思是:跳过当次循环continue之后的语句,也就是跳过if语句之后的m++,直接转去下一次循环条件测试语句,对于for循环直接转到第3表达式。因此执行第3表达式k++,执行之后k的值为2,再执行k<2;测试结果为假,跳出循环。最后m的值为3。k的值为2。
C语言问题,求详解
2、D,因为不能对浮点数直接进行判等的比较,浮点数只是一个近似的值,要比较只能用比较大小的办法来比较,而不能用 == 和 != 来判断,所以for(float x=0,s=0; x!=60; x=x+0.3) s=s+x;有可能会出现死循环,结果x当然就远大于60 ...
【学C的第N天】C语言循环详解!循环类型,无限循环,循环控制语句!
循环控制语句则能改变程序的执行流程,比如通过break和continue来控制循环的执行流程。在C语言中,当条件表达式不再满足,循环就会结束。无限循环则是一种特殊情况,如果条件始终为真,会导致程序陷入无限循环。这时,程序员通常会使用for(;;)结构来表示,但需谨慎使用,因为可以通过Ctrl + C来中断。学习C\/...