政治学与国际关系论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1277|回复: 0
打印 上一主题 下一主题

产经2001~2003专业课试题

[复制链接]
跳转到指定楼层
1#
发表于 2005-12-14 02:14:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
2003年
《应用软件基础》试题        
c语言程序设计部分:
一.        选择题
1.        设a=2,b=3,执行表达式c=b*=a-1;变量c的值是()
a.2     b.3     c.4     d.5
2.若a是int型变量,则表达式(a=4*5,a*2),a+6的值为()
   a.20   b.26    c.40     d.46
3.语言程序中使用以下的二维数组定义语句并赋以部分初值,其中不正确的定义只有()
   a.int a[2][3]={{4},{5,6}}        b. int a[2][3]={{4},{5},{6}}
   c. int a[2][3]={4,5,6 }             d.  int a[2][3]={{4},5,6}
4.设有以下洪定义
  #define N 3
  #define Y(n) ((N+1)*n)
  则执行语句:z=2*(N+Y(5+1));后z的值为()
  a.出错   b. 42    c.48    d.54
5.已设有如下定义:
int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
int (*ptr)[3]=a,*p=a[0];
则下列能够正确表示数组元素a[1][2]的选项是()
a.*((*ptr+1)[2])b.*(*(p+5)) c.(*ptr+1)+2)  d.*(*(a+1)+2)
6.以下程序运行后,输出结果是()
  fut(int**s,int p[2][3])
  {**s=p[1][1];}
  main()
  {int a[2][3]={1,3,5,7,9,11},*p;
   p=(int *)malloc(sizeof(int));
   fut(&p,a);
   printf(“%d\n”,*p);}
   a. 1       b. 7      c.  9       d.  11
7.若有以下定义和语句,则输出结果是()
   char  s[12]=”a book!”;
   printf(“%d”,strlen(s));
   a. 12      b.8       c.7         d.6
8.以下程序执行后,a的值是()
  main()
  { int a,k=4,m=6,*p1=&k,*p2=&m;
    a=p1=&m;
   printf(“%d\n”,a);
  }
a.4   b.1   c.0    d.运行时出错,无定值
9.执行以下程序段后,m的值为()
  int a[2][3]={{1,2,3},{4,5,6}};
int m,*p;
p=&a[0][0];
m=(*p)*(*(p+2))*(*(p+4));
a. 15      b.  14      c.  13     d. 12
10.以下程序运行后,如果从键盘上输入:
                book<回车>
                book<空格><回车>
  则输出结果是()
#include<string.h>
main()
{char a1[80],a2[80],*s1=a1,*s2=a2;
gets(s1);gets(s2);
if(!strcmp(s1,s2))  printf(“*”);
else printf(“#”);
printf(“%d\n”,strlen(strcat(s1,s2)));
}
a.*8     b.*9      c.#8      d.#9
11.以下程序运行后,输出结果是()
main()
{char ch[2][5]={“693”,”825”},*p[2];
int i,j;
long s=0;
for(i=0;i<2;i++)
   p=ch;
for(i=0;i<2;i++)
   for(j=0;p[j]>=’0’&&p[j]<=’9’;j++)
      s=10*s+(p[j]-‘0’);
printf(“%d\n”,s);
}
a.22      b.33       c.6385       d.693825
12.以下程序的输出结果是()
struct stu
{int num;
char name[10];
int age;
};
fun(struct stu *p)
{printf(“%s\n”,(*p).name);}
main()
{struct stu student[3]={{9801,”Zhang”,20},{9802,”Wang”,19}{9803,”Zhao”,18}};
fun(students+2);
}
a.Zhang     b.Zhao       c.Wang       d.18
13.设有以下说明和定义:
typedef union
{long i;int k[5];char c;
}DATE,max;
struct date
{int cat;DATE cow;double dog;
}too;
则下列语句的执行结果是:()
printf(“%d”,sizeof(too)+sizeof(max));
a.30     b.26      c.18       d.8
14.执行以下程序的输出是()
main()
{int x,a=1,b=2,c=0;
x=--a||b&&++c;
printf(“%d\n”,x);
}
a.1       b.0        c.-1        d.非零值
15.以下可作为函数fopen中第一个参数的正确格式是()
a.c:user\text.txt              b.c:\user\text.txt
c.”c:\user\text.txt”            d.”c:\\user\\text.txt”
二.        阅读程序,回答问题
  1.#include<stdio.h>
main()
{char a[]=”abcde”,b[]=”cd”;
printf(“%d\n”,fun(a,b));
}
fun(char s[],char t[])
{ int i,j,k,pos;
pos=-1;
for(i=0;s!=’\0’;i++){
    for(j=i,k=0;t[k]!=’\0’&&s[j]==t[k];j++,k++)
        ;
if(k>0&&t[k]==’\0’)
    pos=I;
}
return pos;
}
1.        程序的输出结果是:
2.        函数fun(char s[],char t[])的功能是:
  2.#include<stdio.h>
main()
{int a,b[]={4,13,2,4,6};
fun(b,5);
for(a=0;a<5;a++) printf(“%5d”,*(b+a));
printf(“\n”);
}
fun(int a[],int n)
{int x,y,t;
for(x=0;x<n;x++){
    for(t=*(a+x),y=x-1;y>=0&&t>*(a+y);y--)
       *(a+y+1)=*(a+y);
    *(a+y+1)=t;
  }
}
3.        程序的输出结果是:
4.        函数fun(int a[],int n)的功能是:
三.        程序选择填空
函数inode *mergedes(inode *a,inode *b)的功能是将两个降序的链表合并成一个降序的链表
设链表结点的类型是:
typedef struct s
{ int val;
struct s *next;
}inode;
inode *merge (inode *a,inode *b)
{inode *h=a,*p,*q;
while(b){
   for(p=h;(1);q=p,p=p->next)
        ;
   if((p==h)
(2);
   else
(3);
   q=b;
   b=b->next;
(4);
}
return h;
}
1.  a.  p->val>b->val       b.  p->val<b->val
   c.   p&&p->val>b->val      d.  p&&p->val<b->val
2.  a.  h=b   b.  b=h    c.  h=h->next    d.  b=b->next
3.  a.  h->next=p   b.  q->next=b   c.  q->next=p   d.  h->next=b
4.  a.  h->next=p   b.  q->next=b  c.  q->next=p    d.  h->next=b
四.程序填空
  程序功能:主函数从命令行读入一个文件名,统计该文件的行树和字符个数,并且找出最长的行,输出该行。请填空完成程序。
#define MAX 100
#include <stdio.h>
main(【1】)
{FILE *fp;
int lno=0,llen=0,lmax=0,lc=0;
char s[MAX],line[MAX];
  if(argc==1){
printf(“file name?\n”);
exit(0);}
  if((fp=fopen(【2】))==NULL)
  { printf(“File open error!\n”);
exit(0);}
  if(feof(fp))  printf(“EOF!\n);
  while(【3】){
fgets(s,MAX,fp);
lno++;
llen=strlen(s);
lc+=llen;
if(llen>lmax)
{【4】;
  l.max=llen;
}
}
printf(“\n行数:%d, 字符数:%d,最长行是:\n %s”,lno,lc,line);
fclose(fp);
}
五.编写程序
  编写函数char *fun (char *s,char c),函数的功能是将字符串变量s中的字符变量c过滤掉,并返回过滤后字符串的地址。例如fun(“abcedaba”,’a’)返回的字符串为“bcdeb”.


数据库部分
一.选择填空
1.        数据库系统是在(1)的基础上发展起来的。由于减少数据冗余,提高数据独立性,并集中检查(2),使数据库系统获得广泛应用。
2.        数据库系统的用户接口是(3),它具有数据定义,操纵和(4)的功能。关系数据库的国际标准语言是(5);
3.        关系代数中的选择运算和SQL中的SELECT相比,它们的功能是(6);
4.        关系数据库的3NF是对(7)之间的函数依赖作出的限制。
5.        数据库的参照完整性是针对(8)的取值限制,它可以取(9);
6.        封锁机制是(10)系统对数据库的一种保护措施。
各空可选的答案如下:
1.A.数据库管理系统   B.编译系统  C.文件系统   D.操作系统
2.A.数据兼容性    B 数据完整性  C 数据的结构  D 数据层次性
3.A 高级语言   B 开发工具  C 数据库语言
4.A 数据修改 B 数据控制 C 数据恢复  D 数据查询
5.A.QUEL   B.C    C.ORACLE   D.SQL
6.A.相同   B.比select功能强   C select比功能强   D 不同
7.A.主属性与主码  B.非主属性与主码  C.所有属性与主码  D 主码与外部码
8.A.主码   B.候选码  C.外部玛   D.全连串码
9.A.常数  B.任何值   C 零    D 空
10.A.数据库出故障时  B.数据库关闭时   C.多用户并发操作时  D数据库运行时
二.简要回答下列问题
1.        什么是数据库数据的逻辑独立性和物理独立性?
2.        什么是关系?什么是关系模式?
3.        什么是串行调度?它与可串行化调度的区别?
4.        解释事物的ACID特性
5.        下面结论是否正确?若不正确,请举出反例。
A  主属性一定是候选码
B  一个关系只有两个属性,它一定属于2NF
三.设计题
  图书馆为管理学生借书建数据库,有如下信息:
◆        有关学生的信息:学号,姓名,系级
◆        有关图书的信息:书号,书名,作者,出版社,价格
◆        有关借书的信息:某学生借某书,借期,应还日期,还否
根据以上信息画出E-R图,并把它转化为关系模型,标出每个关系的主码。
四.        解答题
  汽车保险公司数据库中有若干个表,其中加下画线的为主码
◆        车主(身份证号,姓名,住址,电话)
◆        车辆(牌照,型号,颜色,出厂年份,车况)
◆        事故(日期,牌照,事故简述,事故损失,赔付金额)
考虑到一个人可以拥有多辆车,还有表
◆        人_车(身份证号,牌照)
用SQL语句完成下列操作:
1.        找出在2001年共出过多少次事故?涉及多少辆车?
2.        查出张国强(他的身份证号为‘aaaaaa’)的车的事故次数
3.        查询在2001年5月20日的事故中,牌照为‘bbbbbb’的车的出厂年份,车况和赔付金额。
4.        一个新客户来为其车投保,在数据库中加入信息。提示:要在哪些表中加入?可以自己设计一组数据。
5.        为了教育司机,公司要公布事故情况,但又不愿公布赔付金额。怎么办?
6.        统计在2001年内,各种型号的车出事故次数和平均赔付金额。




2002年
数据库部分
一.        简答题
1.        什么是关系?
2.        举例说明实体间一对多(1:n)的联系。
3.        什么是数据与程序的逻辑独立性:
4.        什么是视图?它与基本表的区别是什么?
5.        什么样的关系属于3NF?
6.        举例说明参照完整性(又称引用完整性)规则。
7.        封锁是实现并发控制的技术,基本的封锁类型是什么?
8.        日志文件主要记录的内容是什么?
二.        应用题
某企业管理数据库中有三个表:
顾客信息表:顾客(顾客号,顾客姓名,地址,电话,传真)
产品信息表:产品(产品号,产品名称,型号,单价,折扣,库存量)
顾客订购产品信息表:订购(定单号,顾客号,产品号,数量,单价,交货日期,付款方式)
要求:
1.        用SQL命令建立顾客信息表,其中‘顾客号’,为主码,‘顾客姓名’非空。
2.        分别用关系代数和SQL命令完成下列查询:
1)        产品名称为‘冰箱’,型号为‘A2’的库存量。
2)        订购了产品名称为‘冰箱’的顾客姓名,地址,电话。
3.        为方便普通客户查询,建立一个名为‘产品目录’的视图,它只包括产品名称,型号,单价。


C语言程序设计
一.选择题
1.        在C语言中,如果下面的变量都是int类型,则输出的结果是()
sum=pad=5;
pad=sum++,pad++,++pad;
printf(“%d\n”,pad);
a.7       b.6      c.5     d.4
2.以下程序的输出结果是()
   main()
   {int i=010,j=10;
printf(“%d,%d\n”,++i,j--);}
a.11,10     b.9,10     c.010,9      d.10,9
3.已知在ASCII代码中,字母A的序号为65,以下程序的输出结果是()
   main()
   { char c1=’A’,c2=’Y’;
printf(“%d,%d\n”,c1,c2);}
a.输出错误信息    b.65,90    c.A,Y     d..65,89
4.        执行以下语句,则c的二进制值是()
char a=3,b=6,,c;
c=a^b<<2;
a.00011011    b.00010100    c.00011100   d.00011000
5.已知:int a=5;执行下列语句后输出结果是()
if (a=0)  printf(“%d”,a)
else   printf(“%d”,2*a);
a.10      b.5        c.0       d.语法错误
6.语句while(!E) 中的条件!E等价于()
a.E==0    b.E!=1     c.E!=0     d.~E
7.执行语句for(X=0,Y=0;(Y!=123)&&(X<4);X++);()
a.无限循环  b.循环次数不变   c.执行4次     d.执行3次
8.sizeof(double)是()
a.        一种函数调用  b一个双精度型表达式  c.一个整形表达式  d.一个不合法的表达式
9.以下程序的输出结果是()
  main()
  { char str[12]={‘s’,’t’,’r’,’i’,’n’,’g’,’\0’}
printf(“%d\n”,strlen(str));
}
a.12     b.11     c.7    d.6
10. 以下程序的输出结果是()
  main()
  { int a,b,d=241;
    a=d/100%9;
    b=(-1)&&(-1);
    printf(“%d,%d\n”,a,b);
   }
  a.6,1    b.2,1     c.6,0    d.2,0
11.C语言的运算符以运算对象的数目可以分为()
  a.单目算符    b.单目算符和双目算符   
c.单目,双目和三目算符       d. 单目,双目,三目和四目运算符
12.使用以下对二维数组的定义语句中,不正确的定义是()
  a. int m[2][3]={{1},{2,3}};   b.int m[2][3]={1,2,3};
  c. int m[2][3]={{1},{2},{3}};   d. int m[2][3]={1,{2,3}};
13.若定义a,b为整型变量,用scanf{“%d%d”,&a,&b};语句输入a,b的值时,不可以()作为输入的分割符。
  a.,        b.空格      c. 回车键      d.TAB键
14.若定义char *s=”car”; 则以下表达式的值不等于’a’的是()
  a.*++s;    b.*(s+1)     c.*s+1      d.s[1]
15.C语言程序中,若对函数的类型没有说明,则函数的默认类型是()
  a.void    b.int    c.char   d.single
16设有以下语句,则()不是对a数组元素的正确引用,其中0<=i<10
    int *p,a[10]={0,1,2,3,4,5,6,7,8,9};
    *p=a;
a.a[p-a]    b.*(&a)    c.p    d.*(*(a+i))
17. 以下程序的输出结果是()
    union  pw
      { int ji;
        char ch[2];
      }a;
    main()
     {  a.ch[0]=13;
a.ch[1]=0;
printf(“%d\n”,a.i);
         }
a.13     b.14      c.208      d.209
18.以下程序执行时,从第一列开始输入2374<CR>,<CR>代表一个回车符。程序的输出结果是()
  main()
{    int c;
     while((c=getchar())!=’\n’){
                      switch(c-‘2’){
                                case 0:
                                case 1:putchar(c+4);
                                  case 2: putchar(c+4);break;
                                case 3: putchar(c+3);
                                default: putchar(c+2);break;
                        }
           printf(“\n”);
}
a.668977    b.668966     c.66778777    d.6688766
19.以下程序的输出结果是()
   #define  FUDGE(y)  2.84+y
   #define  PR(a)   printf(“%d”,(int)(a))
   #define  PRINT1(a)    PR(a); putchar(‘\n’)
     main()
      {   int x=2;   
                   PRINT1(FUDGE(5)*x)
      }
  a.11      b.12       c.13      d.15
20.根据以下语句 ,则()不是对库函数strcpy的正确调用
    char str1[]=”string,str2[8],*str3,*str4=”string”;
  a.strcpy(str1,”HELLO”);            b. strcpy(str2,”HELLO”);
  c. strcpy(str3,”HELLO”)            d. strcpy(str4,”HELLO”)
三.        阅读程序段,填写运行结果
1.        下面程序段的运行结果是()
main()
{ int a=10,b=5,c=5,d=5;
int m=0,n=0,p=0;
for(;a<b;++b)  m++;
while(a>++c)  n++;
do p++;while(a>d++);
printf(“m=%d n=%d p=%d”,m,n,p);
}
2.下面程序段的运行结果是()
  main()
  { int k=4,m=1,p;
    p=func(k,m);
    printf(“%d,”,p);
        p=func(k,m);
        printf(“%d,”,p);
}
  func(a,b)
  int a,b;
  {  static  int m=0,i=2;
     i+=m+1;
     m=i+a+b;
     return(m);
  }
3.以下程序的输出结果是()
  main()
  { int i;
   for(i=1;i<=5;i++){
     if(i%2)   printf(“*”);
     else      continue;
     printf(“#”);
    }
     printf(“$\n”);
   }
4.下面程序的运行结果是()
   main()
   {  int x,a=1,b=2,c=0;
      x=--a||b&&++c;
      printf(“%d\n”,x);
   }
5.下面程序的运行结果是()
#include<stdio.h>
struct s
{ int a;
  int b:
}d[4]={1,20,3,40,5,60,7,80};
main()
{ struct s *p=d;
  printf(“%d\n”,++p->a);
  printf(“%d\n”,++p->b);
}
三.程序选择填空
以下程序名为cat.c,其功能是将命令行中所列的文件依次在屏幕上显示,每显示完一个文件内容后,用户按任意键,则显示下一个文件,如果命令行中所列的文件不能打开或没有给出文件名,则显示相应的信息,命令的格式为:cat filename1 filename2…
1) a.char   b.int   c.file   d.FILE
2) a.fgetc(fptr)    b.getchar(fptr)    c.fgetc(fp)    d.getchar(fp)
3) argc=1   b.argc==1   c.argc<1    d.argc==1
4) a.&pf    b.*fp    c.argv     d.fp
5) a.fclose(argv)    b.rewind(argv)    c.fclose(fp)    d.rewind(fp)
#include  “stdio.h”
void cat (【1】 *fptr)
{  int c;
   while((c=【2】)!=EOF)
   putchar&copy;;
}
main(argc,argv)
int argc;
char *argv[];
{FILE *fp;
int i;
if(【3】)
{  printf(“缺少参数\n”); exit(0);}
for(i=1;i<argc;i++)
{  if((fp=fopen(argv,”r”))==NULL)
      printf(“%s 无法打开 \n”,argv);
    else{
      printf(“/*文件:%s*/\n”,argv);
      cat(【4】);}
      【5】;
    printf(“按任意键显示下一个文件\n”);
    getchar();
  }
}
四.        程序填空
1.        函数fun(char *s,int a)的功能是采用递归的方法将16进制的字符串s转换成10进制整数作为函数的返回值,若字符串s不是16进制的字符串,则函数的返回值是-1,a的初值是0。
fun(char *s,int a)
{ int i;
if(【1】)
i=*s-‘0’;
        else
                        if(*s>=’A’&&*s<=’F’)
                         【2】;
                        else
                          if(*s>=’a’&&*s<=’f’)
                                【3】;
                          else
                                【4】;
                a=a*16+I;
                if(*(s+1)!=’\0’)
fun(【5】);
        else
                        return(a);
}
2.以下程序找出二维数组a中每行的最大值,并按一一对应的顺序放入一维数组s中。即:第零行中最大值,放入s[0]中,第一行中最大值,放入s[1]中……。然后输出每行行号和最大值,请填空。
#define   【6】   10
main()
{
   int a[M][M],s[M],i,j,k;
   for(i=0;i<M;i++)
                for(j=0;j<M;j++)
                        scanf(“%d”,*(a+i)+j);
        for(i=0;i<M;i++)
                { *(s+i)= 【7】;
                  for(j=1;j<M;j++)
                        if(*(s+i) 【8】*(*(a+i)+j))
                                *(s+i)= 【9】;
                }
        for(i=0;i<M;i++)
                { printf(“Row=%2d Max=%5d”, 【10】);
        printf(“\n”);
                }
}
3. 函数htmtotxt的功能是将html文件中的htm标记过滤掉,即过滤掉在<….> 之间的内容,将其他内容形成一个纯文本文件。函数的参数f1为现有的html文件名,参数f2为形成的纯文本文件名。注意,在html文件中出现<br>,<BR>标记时,应向文本文件中添加一个回车符。
void htmtotxt(char *f1,char *f2)
{
        FILE *fin,*fout;
   char sc,*s1,*p1;
        int flag;

   s1=(char *)malloc(MAX);
        p1=s1;
/*打开输入输出文件*/
        if((fin=fopen(f1,”r”))==NULL)
                {
                          printf(“File %s open  error!\n”,f1);
                        return;
                }
        if((fout=fopen(f2, 【11】)==NULL)
                {
                        printf(“File %s open  error!\n”,f2);
                        return;
                }
/*从htm文件中读取内容,过滤htm标记中的内容,然后将其他内容写入文本文件中*/
        flag=0;
        while(!feof(fin))
                {
            sc=【12】;
                        if(sc==’<’)
                        {
                                s1=p1;
                                *s1++=sc;
                                while((sc=fgetc(fin))!=’>’&&!feof(fin))
                                { *s1=【13】; s1++;}
                                flag=1;
                        }
                        if(flag==1)
                        {
                                *s1++=sc;
                                *s1=’\0’;
                                if(【14】)
                                {
                                        fputc(‘\n’,fout);
                                        flag=0;
                                        continue;
                                }
                        }
                        flag=0;
                        fputc(sc,fout);
                }
【15】;
fclose(fout);
}
五.        编写程序
1.        请编写函数huiwen(char *s),它的功能是检查字符串s是否是回文,所谓回文即正向,反向的拼写都一样。如a,eye,ABBA等,当字符串s是回文时,函数的返回值是1,否则返回值是0。
void huiwen(char *s)
{                                    /*答案开始*/
                                         …
/*答案结束*/
}
2.        请编写函数void fun(int *a,int y,int n),它的功能是:把y值插入到a数组中,a数组中的数由主函数按由小到大的次序从键盘读入,y是要插入的数,其值也从键盘读入。n是a中数字的个数(n<S)。要求插入后,数组中的数仍然有序。下面的主函数部分的程序略,不需要编写,考生只需要完成函数fun的编程。
#define S 50
main()
{
        int a[S],b,c;
……
fun(a,b,c)
  ……
}
void fun(int *a,int y,int n)
{                                         /*答案开始*/
                                             ……
                                             ……



                                          /*答案结束*/
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 转播转播 分享分享 分享淘帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|中国海外利益研究网|政治学与国际关系论坛 ( 京ICP备12023743号  

GMT+8, 2025-4-30 02:20 , Processed in 0.109375 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表