《高级语言程序设计》北大上机试题(2)

时间:2013-11-21 16:48:00   来源:无忧考网     [字体: ]
®无忧考网为大家收集整理了《《高级语言程序设计》北大上机试题(2)》供大家参考,希望对大家有所帮助!!!

 C语言上机试题:2
  1. 题目:编一C程序,它能读入一正整数n,(n;10),并输出如下图形:
  程序设计:
  main()
  {static int a[20][20];
  int n,i,j,k;
  printf("Please inter n=");
  scanf("%d",%26amp;n);
  printf("\n");
  for (i=0;i;n;i++)
  {k=1;
  for (j=0;j;2*n-1;j++)
  {if (j;n-i-2) a[i][j]=i+1;
  if (k;=2*i+1+n-i-2) k++;
  else break;
  }
  }
  for (i=0;i;n;i++)
  for (j=0;j;2*n-1;j++)
  {if (a[i][j]==0) a[i][j]=' ';
  else a[i][j]+=48;
  }
  for (i=0;i;n;i++)
  {printf("\n");
  for (j=0;j;2*n-1;j++)
  printf("%c",a[i][j]);
  }
  for (i=n-2;i;=0;i--)
  {printf("\n");
  for (j=0;j;2*n-1;j++)
  printf("%c",a[i][j]);
  }
  printf("\n");
  }
  2.题目:编一C程序,它能读入矩阵A的行数L,列数M,矩阵B的列数N,矩阵B的行数是M。L,M,N值都小于20), 以及按行读入矩阵A的L*M个元素(整数)及矩阵B的M*N个元素(整数),计算并输出A与B的矩阵乘积(按行,列输出)。(输入时,相邻的两个整数用空格隔开)。(可执行文件名为e2_2.exe)
  程序设计:
  main()
  {int a[20][20],b[20][20],c[20][20],l,m,n,i,j,k;
  printf("Please inter a[l][m] and b[m][n] of l,m,n:");
  scanf("%d,%d,%d",%26amp;l,%26amp;m,%26amp;n);
  printf("\n");
  printf("Please inter a[l][m]:\n");
  for (i=0;i;l;i++)
  for (j=0;j;m;j++)
  scanf("%d",%26amp;a[i][j]);
  printf("Please inter b[m][n]:\n");
  for (i=0;i;m;i++)
  for (j=0;j;n;j++)
  scanf("%d",%26amp;b[i][j]);
  for (i=0;i;l;i++)
  for (j=0;j;n;j++)
  {c[i][j]=0;
  for (k=0;k;m;k++)
  c[i][j]+=a[i][k]*b[k][j];
  }
  printf("c[l][n]=a[l][m]*b[m][n]:");
  for (i=0;i;l;i++)
  {printf("\n");
  for (j=0;j;n;j++)
  printf("%-5d",c[i][j]);
  }
  printf("\n");
  }
  3.题目:编一C程序,它能读入n(n;200)个整数(以-9999为结束标记,-9999不算在内,相邻的两个整数用空格隔开),找出第1到第n-1个数中第一个与第n个数相等的那个数,并输出该数读入时的序号(序号从1开始记)。(可执行文件名为e2_3.exe)
  程序设计:
  main()
  {int a[200],n,i;
  scanf("%d",%26amp;a[0]);
  if (a[0]!=-9999)
  {for (i=1,n=0;a[i-1]!=-9999;i++,n++)
  scanf("%d",%26amp;a[i]);
  }
  printf("%d,%d\n",n,a[n-1]);
  for (i=0;i;n;i++)
  if (a[i]==a[n-1])
  {printf("%d\n",i+1);
  break;
  }
  }