#include 
{ 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 
{ 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 A  2 D 3 D 4 B 5 A 6 D 7 C 8 D 9 B 10  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  三 程序分析题  1.   a=48 2.   8,17 3.   2721 4.  BASIC     C      COBOL      FORTRAN     PASCAL     Smalltalk 5.  6      1  2  3     6  5  4    四、编程题  1.写一个判断素数的函数,在主函数输入一个整数,输出是否素数的信息。  #include    printf(\  scanf(\  if (prime(n))      printf(\  else      printf(\ }    int prime(int n)   {int flag=1,i;     for (i=2; i 2.写一个函数,用于实现函数strcmp()的功能,能将两个字符串进行比较,将两个字符串中第一个不相同字符的ASCII码值之差作为函数的返回值。  #include  int MyStrcmp(char s[], char t[]);  main() {  char  str1[20],str2[20]; printf(\gets(str1);  printf(\gets(str2);   if (MyStrcmp(str1,str2)>0) printf(\ else if (MyStrcmp(str1,str2)<0)     printf(\       else    printf(\}   int MyStrcmp(char s[], char t[])  {  int i;  for (i=0;s[i]==t[i]; i++)             if (s[i]=='\\0')  return 0 ;     return (s[i]-t[i]); }     3. 写一个函数,用于实现函数strcat()的功能, 能将两个字符串连接。 #include  {void concatenate(char string1[],char string2[],char string[]);  char s1[100],s2[100],s[100];  printf(\ scanf(\  printf(\ scanf(\  concatenate(s1,s2,s);   printf(\ }   void concatenate(char string1[],char string2[],char string[]) {int i,j;   for (i=0;string1[i]!='\\0';i++)    string[i]=string1[i];   for(j=0;string2[j]!='\\0';j++)    string[i+j]=string2[j];  string[i+j]='\\0'; }   4. 从键盘任意输入10个整数,用函数编程实现将其中最大数与最小数的位置对换后,再输出调整后的数组。  #include   void  MaxMinExchang(int a[], int n) {