载入中…

您现在的位置: 四联自学考试网 >> 自考资讯 >> 复习指导 >> 理工医学 >> 计算机及应用 >> 试卷习题 >> 文章正文
相 关 文 章
2007年5月18日上午C语言上机
精 彩 推 荐
最 新 热 门
最 新 推 荐
欢迎光临四联自学,现在是:  祝您自考成功!
2007年5月16日考的C语言试题
原文作者:佚名  文章录入:admin  发布时间:2007-5-25 9:25:46    

2007年5月16日考的C语言试题

以下是5月16号下午在北大考的C语言上机题,题目和程序都已经给出,供大家参考:

1,编一C程序,使得它可以读入一个正整数n,n>0且n<=26,然后输出如下的图形:
      A                           文字A
    BBB                       BBB
    CCCCC                       CCCCC
    BBB                       DDDDDDD
    A                       ………………
  当n为3时                     .
                          .
                        ZZZZZZZZZZZZZZZ……
                          .
                          .
                          .
                          BBB
                          A
                        当n为26时
-------------------------------------------------------------------------------------------
#include <stdio.h>
#define MAX 26
void print(int n,int x,int y,char c1,char c[])
{
  int i,j,k;
  for(i=0;i<y;i++)
    printf("%c ",c1);
  for(j=i,k=n-1;j<=i+x-1;j++)
    printf("%c ",c[k]);
  printf("\n");
}
void main()
{
  int n,i,x,y;
  char c[MAX]={"ABCDEFGHIJKLMNOPQRSTUVWXYZ"},c1=' ';
  printf("please input the n:\n");
  scanf("%d",&n);
  if(n<=0||n>26)
  {
    printf("Error:n must be >0 and <=26.\n");
    return;
  }
  for(i=1,x=2*i-1,y=n-i;i<=n;i++,x+=2,y--)
    print(i,x,y,c1,c);
  for(i-=2,x-=4,y=1;i>=1;i--,x-=2,y++)
    print(i,x,y,c1,c);
}
===========================================================================================
2,编一C程序,它可以读入若干名(不超过200名)学生的信息(包括学号,姓名,3门课程的成绩),

当输入学号为-1时结束输入,然后按平均成绩由低到高排列输出学生的姓名和总成绩。
-------------------------------------------------------------------------------------------
#include <stdio.h>
#define M 200
typedef struct{
  char name[20];
  long no;
  int score[3];
}stu;
void sort(stu a[],int n)
{
  int i,j,flag;
  stu t;
  for(i=1;i<n;i++)
  {
    flag=1;
    for(j=0;j<n-i;j++)
    {
        if((a[j].score[0]+a[j].score[1]+a[j].score[2])>(a[j+1].score[0]+
          a[j+1].score[1]+a[j+1].score[2]))
        {
          t=a[j];
          a[j]=a[j+1];
          a[j+1]=t;
          flag=0;
        }
    }
    if(flag) break;
  }
}
void main()
{
  stu a[M];
  int i=0,n=0;
  while(1)
  {
    printf("please input the student's no:\n");
    scanf("%ld",&a.no);
    if(a.no==-1) break;
    printf("please input the student's name:\n");
    scanf("%s",&a.name);
    printf("please input the student's grade(total 3):\n");
    scanf("%d%d%d",&a.score[0],&a.score[1],&a.score[2]);
    i++;
    n++;
  }
  sort(a,n);
  printf("The student's information as follows:(name + total grade)\n");
  for(i=0;i<n;i++)
    printf("%s   %d\n",a.name,a.score[0]+a.score[1]+a.score[2]);
}
===========================================================================================
3,编一C程序,使得它可以读入一个正整数n,并且转换为该数的18进制形式表示,18进制的10

、11、12、13、14、15、16、17分别用A、B、C、D、E、F、G、H表示。
-------------------------------------------------------------------------------------------
#include <stdio.h>
void main()
{
  int n,i=0,j,a[18];
  char c[18]={"0123456789ABCDEFGH"};
  printf("please input the n:\n");
  scanf("%d",&n);
  if(n<0)
  {
    printf("Error:n must be >=0.\n");
    return;
  }
  while(n!=0)
  {
    j=n%18;
    a[i++]=j;
    n=n/18;
  }
  printf("转换为18进制数表示为:\n");
  for(i--;i>=0;i--)
  {
    j=a;
    printf("%c",c[j]);
  }
  printf("\n");
}

上面的也是我在考试时的答案,估计要得个及格应该是没有问题的吧,感觉难度一般,也许是我运气好,碰到了比较容易的题目^_^
要考上机编程,练习一定不能少,而且要勤加练习,常用的算法一定要牢牢掌握,这样解题时才能大大提高效率,像第一题,输出图形这种类型的题目,只要方法掌握了很快就能解出来的
在这里我还要推荐一篇好帖,是Buta的《C语言上机必过版》,是论坛上的精华帖,大家搜一下应该就可以搜到,上机考试的第一和第三题都可以在该帖上找到原题(只不过有了一点点小变化)
最后,如果大家做完题目还有多余时间,可以在程序的一些关键地方加上注释,这样对你通过考试也是有帮助的,要知道注释也是评分标准中的一项
好了,不多说了,祝大家好运!

更多资料尽在四联自考论坛http://bbs.4lzx.com),转贴请保留此信息。

凡本站注明版权的文章,版权归本站所有,任何媒体、网站或个人未经本站协议授权不得转载、链接、转贴或以其他方式复制,否则本站将依法追究责任。本站转载的信息,尽量保证版权信息的完整性,用户在网站上所发布、转载的文章所引起的版权问题以及其他纠纷,后果由用户自行承担,本网概不负责。如转载文章涉及版权等问题,请与我们联系。版权声明:/Copyright.asp
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 论坛交流】【发表评论】【打印本文】【关闭窗口