3 4 5 18
8 12 16 54
43 34 18 7
#include
main()
{ int i,j,a[3][4]={{3,4,5,18}, {8,12,16,54}, {43,34,18,7}};
for(i=0;i<3;i++)
{ for(j=0;j<4;j++)
if(a[i][j]==18) break;
if(j<4)break; }
printf(\数值18第一次出现的位置在%d行,第%d列\\n\ }
9.设有4行4列的数组a,其元素a[i][j]=3*i+2*j-6。编写程序,实现如下功能:
(1)求第二行4元素的累加和;
(2)求第四列4元素的平均值;
(3)求主对角线4元素中负数的个数。
#include
void main()
{ int a[4][4],i,j,s=0,m=0;
float n=0;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
a[i][j]=3*i+2*j-6;
printf(\原始数组为:\\n\
for(i=0;i<4;i++)
{ for(j=0;j<4;j++)
printf(\
printf(\ }
for(j=0;j<4;j++)
s+=a[1][j];
printf(\第二行4元素累加和为:%d\\n\
for(j=0;j<4;j++)
n+=a[j][3];
printf(\第四列4元素平均值为:%.2f\\n\
for(i=0;i<4;i++)
if(a[i][i]<0)
m++;
printf(\主对角线4元素中负数的个数为:%d\\n\ }
10.约瑟夫环问题:编号为1,2,3,...,n的n个人按顺时针方向围坐一圈,每人持有一个正整数密码。一开始任选一个正整数m作为报数上限值,从第一个人开始按顺时针报数,报到m时停止,报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。设计程序求出出列顺序。
分析:设整型数组a中保存n个人的密码,对应的人出列后,数组元素置0作为标志。顺时针确定下一个人的方法,可将下标加1,再对n求余。
#include
#define N 100
main()
{ int a[100];
int i,j,m,n,k=0;
printf(\输入人数n和任选的一个正整数m:\
scanf(\
printf(\输入n个人的密码: \
for (i=0;i scanf(\ printf(\出列顺序为: \ for(i=0;i { j=1; while(j { while(a[k]==0) /*跳过已出列的人*/ k=(k+1)%n; j++; k=(k+1)%n; } while(a[k]==0) /*跳过已出列的人*/ k=(k+1)%n; printf(\ m=a[k]; a[k]=0; } } 第7章习题 一、选择题 1 2 3 4 5 6 7 8 9 10 A D D B A D C D B A 二填空题 1. main() 2. main() 3.函数首部 4. 解决函数必须“定义在前,使用在后”的原则问题 5. int 6. 定义调用 7. 地址传递值传递 8. return void 9. void f(float a,float b) float f(float a,float b) 10. static