具有缓冲区的中断I/O中,函数void add_char(charachar)A.完成将数据写入I/O数据寄存器B.完成将数据写入I/O状态寄存器C.完成将数据写入缓冲区D.完成将数据写入CPU的寄存器中

题目

具有缓冲区的中断I/O中,函数void add_char(charachar)

A.完成将数据写入I/O数据寄存器

B.完成将数据写入I/O状态寄存器

C.完成将数据写入缓冲区

D.完成将数据写入CPU的寄存器中


相似考题
更多“具有缓冲区的中断I/O中,函数void add_char(charachar)”相关问题
  • 第1题:

    函数Rdata()实现从文件IN.dat中读取一篇英文文章存入字符串数组string中,请编写函数SortCharA(),其功能是:以行为单位对字符按从小到大的顺序进行排序,排序后的结果仍按行重新存入字爷串数组string中。最后调用函数Wdata(),把结果string输出到OUT.dat文件中。

    例如,原文:dAe, BfC.

    CcbbAA

    结果:,. ABCdef

    AACbbc

    原始数据文件存放的格式是:每行的宽度均小于80个字符(含标点符号和空格)。

    注意:部分源程序已经给出。请勿改动主函数main()、读数据函数Rdata()和输出数据函数Wdata()的内容。

    include <stdio.h>

    include <string.h>

    include <conio.h>

    char string [50] [80];

    int maxline = 0; /* 文章的总行数 */

    int Rdata (void);

    void Wdata (void);

    void SortCharA(void)

    {

    }

    void main ()

    { if (Rdata ())

    { printf("数据文件 IN. dat 不能打开! \n\007");

    return;

    }

    SortCharA ();

    Wdata ( );

    }

    int Rdata (void)

    { FILE *fp;

    int i = 0;

    char *p;

    if ((fp = fopen("IN. dat", "r")) == NULL)

    return 1;

    while (fgets(string[i], 80, fp) != NULL)

    { p = strchr(string[i], '\n');

    if (p)

    *p = 0;

    i++;

    }

    maxline = i;

    fclose (fp);

    return 0;

    }

    void Wdata (void)

    { FILE *fp;

    int i;

    fp = fopen("OUT. dat", "w");

    for (i=0; i<maxline; i++)

    { printf("%s\n", string[i]);

    fprintf(fp, "%s\n", string[i]);

    }

    fclose (fp);

    }


    正确答案:void SortCharA (void) { int i j k str1; char ch; for (i=0; imaxline; i++) { str1 = strlen(string[i]); for (j=0; jstr1-1; j++) for (k=j+1; kstr1; k++) if (string[i] [j] > string [i] [k]) { ch = string[i] [j]; string[i] [j] = string[i] [k]; string[i] [k] = ch; } } } [解题思路] 这里采用strlen字符函数获取字符串的长度;对文章中的每一行的字符利用双重循环进行两两比较较小的字符往行前放较大的字符往行后放这样就实现了以行为单位对字符从小到大的排序。在程序中的语句是if(string[i][j]>string[i][k])成立string[i][j]和string[i][k]就交换数据。
    void SortCharA (void) { int i, j, k, str1; char ch; for (i=0; imaxline; i++) { str1 = strlen(string[i]); for (j=0; jstr1-1; j++) for (k=j+1; kstr1; k++) if (string[i] [j] > string [i] [k]) { ch = string[i] [j]; string[i] [j] = string[i] [k]; string[i] [k] = ch; } } } [解题思路] 这里采用strlen字符函数获取字符串的长度;对文章中的每一行的字符利用双重循环进行两两比较,较小的字符往行前放,较大的字符往行后放,这样就实现了以行为单位对字符从小到大的排序。在程序中的语句是if(string[i][j]>string[i][k])成立,string[i][j]和string[i][k]就交换数据。

  • 第2题:

    在程序I/O方式中,对于输出设备,准备就绪是指()。

    A、输出缓冲区已空

    B、输出缓冲区已有数据

    C、输出设备已经开始工作

    D、输出设备已经收到I/O指令


    参考答案:A

  • 第3题:

    函数ReadDat()的功能是实现从文件IN2.DAT中读取一篇英文文章存入到字符串数组xx中:请编制函数 StrOL(),该函数的功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件OUT2.DAT中。

    例如:原文:YOU He Me

    I am a student.

    结果: Me He You

    student a am I

    原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。

    请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。

    include <stdio.h>

    include <string.h>

    include <conio.h>

    include <ctype.h>

    char xx[50] [80];

    int maxline = 0;/* 文章的总行数 */

    int ReadDat (void);

    void WriteDat (void);

    void StrOL(void)

    {

    main ( )

    {

    clrscr ( );

    if (ReadDat ())

    {

    printf("数据文件 IN2.DAT不能打开! \n\007");

    return;

    }

    StrOL ( );

    WriteDat ();

    }

    int ReadDat (void)

    {

    FILE *fp;

    int i = 0;

    char *p;

    if((fp = fopen("IN2.DAT", "r")) == NULL) return 1;

    while(fgets(xx[i], 80, fp) != NULL)

    {

    p = strchr(xx [i], '\n');

    if(p) *p = 0;

    i++;

    }

    maxline = i;

    fclose (rD):

    return 0;

    }

    void WriteDat (void)

    {

    FILE*fp;

    int i;

    clrscr ();

    fp = fopen("OUT2.DAT", "w");

    for(i = 0; i < maxline; i++)

    {

    printf("%s\n", xx[i]);

    fprintf(fp, "%s\n", xx[i]);

    }

    fclose (fp);

    }


    正确答案:void strOL(void) { int ijkstrl1;char c; for (i=0;imaxline;i++) /*把各行中多余的标点符号去掉*/ for(j=0;jstrlen (xx[i]);j++) { c=xx[i] [j]; if( (c='A'&&c='Z')|| (c='a'&&c='z')||c==''||(c>='0'&&c='9')); else xx[i] [j]=' '; for (1=0; lmaxline; l++) { char ch[80]={0}; char pp[80]={0); strl=strlen(xx[l]); i=str1-1; k=1; while (1) { while (((xx[l] [i]>='a' && xx[l] [i]='z') || (xx[l] [i]>='A' && xx[l] [i]='z') || (xx[l] [i]>='0' &&xx[1] [i]='9')) &&i>=0) /* 处理字母和数字*/ { for (j=k; j>=0; j--) /*从当前行的最后一个字符开始取字符直到遇到空格*/ pp[j+1]=pp[j]; pp[O]=xx[l] [i]; k++; i--; } strcat (chpp); /*把该单词存放到数组ch中*/ strcpy(pp "" ); /*清空数组pp*/ k=1; if (i==-l)break; /*如果处理完了一行则退出循环*/ while((xx[1] [i]'0'|| (xx[l] [i]>'9'&&xx[l] [i]'A') || xx[1] [i]>'z') && i>=0) /*处理空格*/ { for (j=k; j>=0; j--) pp[j+1]=pp [j]; pp[0]=xx[l] [i]; k++; i--; } strcat (ch pp); /*把空格加到数组ch中*/ strcpy (pp "" ); /*清空数组* / k=0; if (i==-1) break; /*如果处理完了一行则退出循环* / } strcpy(xx[l] ch); /*把已处理完的字符串仍按行重新存入字符串数组xx中*/ } }
    void strOL(void) { int i,j,k,strl,1;char c; for (i=0;imaxline;i++) /*把各行中多余的标点符号去掉*/ for(j=0;jstrlen (xx[i]);j++) { c=xx[i] [j]; if( (c='A'&&c='Z')|| (c='a'&&c='z')||c==''||(c>='0'&&c='9')); else xx[i] [j]=' '; for (1=0; lmaxline; l++) { char ch[80]={0}; char pp[80]={0); strl=strlen(xx[l]); i=str1-1; k=1; while (1) { while (((xx[l] [i]>='a' && xx[l] [i]='z') || (xx[l] [i]>='A' && xx[l] [i]='z') || (xx[l] [i]>='0' &&xx[1] [i]='9')) &&i>=0) /* 处理字母和数字*/ { for (j=k; j>=0; j--) /*从当前行的最后一个字符开始取字符,直到遇到空格*/ pp[j+1]=pp[j]; pp[O]=xx[l] [i]; k++; i--; } strcat (ch,pp); /*把该单词存放到数组ch中*/ strcpy(pp, "" ); /*清空数组pp*/ k=1; if (i==-l)break; /*如果处理完了一行,则退出循环*/ while((xx[1] [i]'0'|| (xx[l] [i]>'9'&&xx[l] [i]'A') || xx[1] [i]>'z') && i>=0) /*处理空格*/ { for (j=k; j>=0; j--) pp[j+1]=pp [j]; pp[0]=xx[l] [i]; k++; i--; } strcat (ch, pp); /*把空格加到数组ch中*/ strcpy (pp, "" ); /*清空数组* / k=0; if (i==-1) break; /*如果处理完了一行,则退出循环* / } strcpy(xx[l] ,ch); /*把已处理完的字符串仍按行重新存入字符串数组xx中*/ } } 解析:本题是有关字符串的处理问题。首先利用二重循环来按照先行后列的顺序取得xx数组中的各个字符元素,这里用到了strlen()函数,用来求字符串长度。对依次取得的字符做一些处理,即把多余的标点符号去掉,使新的字符数组中只含有字母和空格。准备工作做完后,从当前行的最后一个字符开始取,不断的取每一个字符前面的字符,直到取得一个完整的单词后(即遇到空格分隔时),就把该单词存放到数组ch中(用到了strcatt()函数来连接两个字符串,用strlen()函数来对字符串求取串长度),还要把分隔符也放到ch中去。接着去取该行中其他的字符组成的单词,重复上面的操作,对其他行同样处理。这样最终得到的字符串就是各行中单词出现的顺序的逆序了,但单词本身的字符顺序没有发生变化。

  • 第4题:

    有以下程序inclube class ClassOne{public: ClassOne(int v=O) { i=v;cout<

    有以下程序 #inclube <iostream.h> class ClassOne { public: ClassOne(int v=O) { i=v;cout<<i;} void print(){ cout<<i<<end1;} }; class ClassTwo { public: ClassTwo(int v=O) { i=v;cout<<i;} void print(){ cout<<i<<end1;} private: ClassOne myObj; int i; }; void main() { ClassTwo obj(1); obj.print(); }

    A.11

    B.111

    C.110

    D.101


    正确答案:A
    解析:类ClassTwo中定义了成员对象myObj,所以在构造类ClassTwo的对象obj时会先调用类ClassOne的构造函数输出0,然后调用ClassTwo的构造函数输出1。主函数最后调用obj的成员函数print()输出1。所以最后结果为011。

  • 第5题:

    public class Something {

    public static void main(String[] args) {

    Other o = new Other();

    new Something().addOne(o);

    }

    public void addOne(final Other o) {

    o.i++;

    }

    }

    class Other {

    public int i;

    }

    和上面的很相似,都是关于final 的问题,这有错吗?


    正确答案:

     

    正确。在addOne method 中,参数o 被修饰成final。如果在addOne method 里我们修

    改了o 的reference

    (比如: o = new Other();),那么如同上例这题也是错的。但这里修改的是o 的member vairable

    (成员变量),而o 的reference 并没有改变。

  • 第6题:

    函数ReadDat()实现从文件IN47.DAT中读取1000个十进制整数到数组xx屯。请编制函数Compum()分别计算出xx中偶数的个数even、奇数的平均值ave1、偶数的平均值ave2及所有偶数的方差totfc的值,最后调用函数WilteDat()把结果输出到OUT47.DAT文件中。

    计算方差的公式如下:

    设N为偶数的个数,xx[i]为偶数,ave2为偶数的平均值。

    原始数据的存放格式是:每行存放10个数,并用逗号隔开(每个数均大于0且小于等于2000)。

    注意:部分源程序已给出。

    请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。

    试题程序:

    include<stdio. h>

    include<stdlib. h>

    include<string. h>

    define MAX 1000

    int xx [MAX] , dd=O, even=O;

    double avel=0.0,ave2=0.0,totfc=0.0;

    void WriteDat(void);

    int ReadDat (void)

    { FILE *fp;

    int i,j;

    if ( (fp=fopen ("IN47. DAT", "r") )==NULL)

    return 1;

    for (i=0; i<100;i++)

    {

    for (j=0; j<10; j++)

    fscanf (fp, "%d, ",&xx [i*10+j ] );

    fscanf (fp, "In");

    if(feof(fp)) break;

    }

    fclose (fp);

    }

    void Compute (void)

    {

    }

    void main ( )

    { int i;

    for (i=0; i<MAX; i++)

    xx[i]=0;

    if (ReadDat ())

    {

    printf ("数据文件IN47.DAT 不能打开! \007\n");

    return;

    }

    Compute ( );

    printf ( "EVEN=%d\nAVE1=%f\nAvE2=%f\nTOTFC=%f\n" , even, ave1, ave2,

    totfc);

    WriteDat ();

    }

    void WriteDat(void)

    {

    FILE *fp;

    int i;

    fp=fopen("OUT47.DAT","w");

    fprintf(fp,"%d\n%lf\n%lf\n%lf\n",even,avel,ave2,totfc);

    fclose(fp);

    }


    正确答案:void Compute(void) { int iyy[MAX]; for(i=O;ilO00;i++) if (xx[i]%2 !=0) { odd++; /*统计奇数的个数*/ avel+=xx [i]; /*求奇数的总和*/ } else { even++; /*统计偶数的个数*/ ave2+=xx [i]; /*求偶数的总和*/ yy [even-1 ] =xx [ii; /*将偶数存入数组yy中* / } avel/=odd; /*求奇数的平均数*/ ave2/=even; /*求偶数的平均数*/ for (i=O; ieven; i++) /*求所有偶数的方差* / totfc+= (yy [i] -ave2) * (yy [i] -ave2)/even;
    void Compute(void) { int i,yy[MAX]; for(i=O;ilO00;i++) if (xx[i]%2 !=0) { odd++; /*统计奇数的个数*/ avel+=xx [i]; /*求奇数的总和*/ } else { even++; /*统计偶数的个数*/ ave2+=xx [i]; /*求偶数的总和*/ yy [even-1 ] =xx [ii; /*将偶数存入数组yy中* / } avel/=odd; /*求奇数的平均数*/ ave2/=even; /*求偶数的平均数*/ for (i=O; ieven; i++) /*求所有偶数的方差* / totfc+= (yy [i] -ave2) * (yy [i] -ave2)/even; 解析:本题考查的知识点如下:
    (1)从文件中读取数据。
    (2)奇偶数的判断和方差的求法。
    在C语言中,有一结构体类型FILE,其中包含文件的一些属性信息。可定义指针指向该结构体,这个指针称为文件指针。要从文件中读取数据,首先要判断该:文件是否能以“读”的方式打开。若能打开,使用函数int fscanf(FILE*fp,char*format,args)从fp所指向的文件中依次读取数据。在本题中,数据的存放很有规律,将数据读出存入数组xx时,只要控制数组下标就可以了。若文件结束,则退出读取循环。最后要关闭文件。若…个数除以2取余得0,则该数是偶数,否则为奇数。由方差公式可知,这是求一些连续的数的表达式的值,所以可以使用循环求得方差。

  • 第7题:

    请编制函数ReadDat()实现从文件IN93.DAT中读取1000个十进制整数到数组xx中。请编制函数 Compute()分别计算出xx中奇数的个数odd、偶数的个数even、平均值aver及方差totfc的值,最后调用函数WriteDat()把结果输出到OUT93.DAT文件中。

    计算方差的公式如下:

    原始数据的存放格式是:每行存放10个数,并用逗号隔开(每个数均大于0且小于等于2000)。

    注意:部分源程序已给出。

    请勿改动主函数main()和写函数WriteDat()的内容。

    试题程序:

    include<stdio.h>

    include<stdlib.h>

    include<string.h>

    define MAX 1000

    int xx[MAX],odd=0,even=0;

    double aver=0.0,totfc=0.0;

    void WriteDat(void);

    int ReadDat(void)

    {

    FILE *fp;

    if((fp=fopen("IN93.DAT","r"))==NULL

    return 1;

    fclose(fp);

    return O;

    }

    void Compute(void)

    {

    }

    void main( )

    {

    int i;

    for(i=O;i<MAX;i++)

    xx[i] =0;

    if (ReadDat ( ) )

    {

    print f ("数据文件IN93.DAT不能打开! \007\n");

    return;

    }

    Compute();

    printf( "ODD=%d\nEVEN=%d\nAVER=%lf\nTOTFC=%lf\n",

    odd, even,aver,totfc);

    WriteDat();

    }

    void WriteDat(void)

    {

    FILE *fp;

    int i;

    fp=fopen("OUT93.DAT","w");

    fprintf(fp,"%dln%dln%lf\n%lfkn",odd,even,aver,totfc);

    fclose(fp);

    }


    正确答案:int ReadDat(void) { FILE *fp; int ij; if((fP=fopen("IN93.DAT""r"))==NULL) return 1; for(i=0;i100;i++) { for(j=0;j10;j++) fscanf(fp"%d"&xx[i*10+j]); fscanf(fp"\n"); if(feof(fp)) break; } fclose(fp); return 0; } void Compute(void) { int iyy[MAX]; for (i=0;i1000;i++) { if (xx[i]%2 !=0) odd+ +; /*求出xx中奇数的个数odd*/ else even++; /*求出xx中偶数的个数even*/ aver+=xx [i]; /*求出xx中元素的总和*/ } aver/=MAX; /*求出xx中元素的平均值*/ for (i=0; i1000; i++) totfc+=(xx[i]-aver)*(xx[i]-aver)/MAX; }
    int ReadDat(void) { FILE *fp; int i,j; if((fP=fopen("IN93.DAT","r"))==NULL) return 1; for(i=0;i100;i++) { for(j=0;j10;j++) fscanf(fp,"%d,",&xx[i*10+j]); fscanf(fp,"\n"); if(feof(fp)) break; } fclose(fp); return 0; } void Compute(void) { int i,yy[MAX]; for (i=0;i1000;i++) { if (xx[i]%2 !=0) odd+ +; /*求出xx中奇数的个数odd*/ else even++; /*求出xx中偶数的个数even*/ aver+=xx [i]; /*求出xx中元素的总和*/ } aver/=MAX; /*求出xx中元素的平均值*/ for (i=0; i1000; i++) totfc+=(xx[i]-aver)*(xx[i]-aver)/MAX; } 解析:本题考查的知识点如下:
    (1)从文件中读取数据。
    (2)奇偶数的判断和方差的求法。
    在C语言中,有一结构体类型FILE,其中包含文件的一些属性信息。可定义指针指向该结构体,这个指针称为文件指针。要从文件中读取数据,首先要判断该文件是否能以“读”的方式打开。若能打开,使用函数intfscanf(FILE*fp,char*format,args)从fp所指向的文件中依次读取数据。在本题中,数据的存放很有规律,将数据读出存入数组xx时,只要控制数组下标就可以了。若文件结束,则退出读取循环。最后要关闭文件。若一个数除以2取余得0,则该数是偶数,否则为奇数。由方差公式可知,这是求一些连续的数的表达式的值,所以可以使用循环求得方差。

  • 第8题:

    在UNIX中,把除外中断和I/O中断以外的中断统称为()。


    正确答案:陷入

  • 第9题:

    下列()操作属于文件管理模块。

    • A、确定文件内容所在的物理块号
    • B、分配缓冲区
    • C、释放缓冲区
    • D、修改读写指针
    • E、I/O中断处理

    正确答案:A,D

  • 第10题:

    下列描述中,不是设备管理的功能的是()。

    • A、实现缓冲区管理
    • B、进行设备分配
    • C、实现中断处理
    • D、完成I/O操作

    正确答案:C

  • 第11题:

    CPU与通道可以并行执行,并通过()实现彼此之间的通讯和同步。

    • A、 I/O指令
    • B、 I/O中断
    • C、 I/O指令和I/O中断
    • D、 操作员

    正确答案:C

  • 第12题:

    填空题
    在UNIX中,把除外中断和I/O中断以外的中断统称为()。

    正确答案: 陷入
    解析: 暂无解析

  • 第13题:

    对10个候选人进行选举,现有一个100条记录的选票文件ENG50.IN,其数据存放格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依此类推。每一位候选人的记录内容均为字符0或1,1表示此人被选中,0表示此人未被选中,全选或全不选(空选票)均为无效的选票。给定函数ReadDat()的功能是把选票记录读入到字符串数组xx中。请编制函数CoutRs()来统计每个人的选票数并把得票数依次存入Xyy[O]到yy[9]中,最后调用函数WriteDat()把结果”输出到文件OUT50.DAT中。

    注意:部分源程序已给出。

    请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。

    试题程序:

    include

    char xx[100)[11];

    int yy[10];

    int ReadDat(void);

    void WriteDat(void);

    void CoutRs(void)

    {

    }

    void main()

    {

    int i;

    for(i=0;i<l0;i++)

    YY[i]=0;

    if(ReadDat())

    {

    print f ( "数据文件ENG50. IN 不能打开! \n\007" );

    return;

    }

    CoutRs();

    WriteDat();

    }

    int ReadDat(void)

    {

    FILE *fp;

    int i;

    char tt[13];

    if((fp=fopen("ENG50.IN","r"))==NULL)

    return 1;

    for(i=0;i<100;i++)

    {

    if(fgets(tt,13,fp)==NULL)

    return 1;

    memcpy(xx[i],tt,10);

    xx[i] [10]=0;

    }

    fclose(fp);

    return 0;

    }

    void WriteDat()

    {

    FILE *fp;

    int i;

    fp= fopen("OUT50.DAT","w");

    for(i=0;i<10;i++)

    {

    fprintf(fp,"%d\n",yy[i]);

    printf ( "第%d 个人的票数=%d\n", i+l,yy [i]);

    }

    fclose(fp);

    }


    正确答案:void CoutRs.(void) { int ij=0k=0; char*str; for(i=0;i100;i++) { str=xx[i); /*指针str指向该行首地址*/ j=0; while(*str!=0) if(*str=='l') /*统计'1'的个数*/ { j++; str++; /*取下一个字符*/ } elsestr++; /*如果该字符不是'l'则什么都不做取下一个字符*/ if(j!=0 && j!=10) /*如果既不是全选也不是空票则为有效票*/ { Str=XX[i]; /*指针str指向该行首地址*/ k=0; while(*str) if(*str++=='1') /*将每个人的得票数依次存入yy[0]到yy[9]中*/ yy[k++]+=1; else k++; } } }
    void CoutRs.(void) { int i,j=0,k=0; char*str; for(i=0;i100;i++) { str=xx[i); /*指针str指向该行首地址*/ j=0; while(*str!=0) if(*str=='l') /*统计'1'的个数*/ { j++; str++; /*取下一个字符*/ } elsestr++; /*如果该字符不是'l',则什么都不做,取下一个字符*/ if(j!=0 && j!=10) /*如果既不是全选也不是空票,则为有效票*/ { Str=XX[i]; /*指针str指向该行首地址*/ k=0; while(*str) if(*str++=='1') /*将每个人的得票数依次存入yy[0]到yy[9]中*/ yy[k++]+=1; else k++; } } } 解析:本题考查的知识点如下:
    (1)二维数组的操作。
    (2)指向数组的指针。
    在本题中,要先判断选票是否有效。因为记录存放在一个二位数组中,为了简便我们为数组的一组元素定义一个指向数组的指针,例如,char*p=xx[2]。初始时该指针指向该组的第一个元素,指针地址每加1,则指向下一个元素。这样就可以轻松地统计每一个选票。设一变量标记每一个选票中1的个数,若其不为0和10,则选票有效。若选票有效,则依次查看哪一个元素为1,在数组yy相应的元素上加1。使用循环实现对所有记录的访问。

  • 第14题:

    有以下函数

    void prt(char ch,int n)

    {int i;

    for(i=1,i<=n;i++)

    printf(i%6 !=O?“%c”:“%c\n”,ch);

    }

    执行调用语句prt(’*’,24);后,函数共输出 行*号。


    正确答案:4
    4

  • 第15题:

    以下函数的功能是删除字符串s中的所有数字字符。请填空。

    void dele (char *s)

    {

    int n=O;

    for(i=0;s[i];i++)

    {

    if(【 】)

    s[n++]=s[i];

    }

    s[n]= '\0';

    }


    正确答案:s[i]'0'||s[i]>'9'
    s[i]'0'||s[i]>'9' 解析:从一个字符串中删除某个字符的方法是从字符串的第1个字符开始一一判断该字符是否是要删除的字符,若不是,则把它放到结果字符串中;若是,则不放入结果字符串中。由此可知,本题空白处应判断s[i]是否为数字字符,只有在不是数字字符的情况下才存入结果字符串中,所以应填入:s[i]'0'||s[i]>'9'。最后应在结果字符串的末尾加上字符结束标识符'\0'。

  • 第16题:

    操作系统中利用缓冲技术实现设备的I/O操作的主要目的是( )。

    A.缓解处理机与设备之间速度不匹配的矛盾,减少对CPU的I/O中断次数

    B.使CPU可以从I/0操作中解脱出来,由缓冲区来实现相应操作

    C.由缓冲区中的一段程序来模拟I/O操作,使FO操作可与CPU对数据的处理同时进行

    D.为I/O专门开辟一段内存区,别的程序不能访问该地址空间,提高了I/O访存速度


    正确答案:A
    解析:在数据到达速率和离去速率不一致的地方都可以设置缓冲,使得高速设备可以将数据存放在缓冲区内然后自己去做别的事情,而让低速设备“慢慢”地从缓冲区读取数据。这就解决了高速设备与低速设备速度不匹配的问题。

  • 第17题:

    下列函数原型声明中错误的是______。

    A.void Fun (int x=O,int y=O);

    B.void Fun(int x,int y);

    C.void Fun(int x,int y=0);

    D.void Fun(int x=0,int y);


    正确答案:D
    解析:C++中函数的声明,如果第一个参数有默认值,那么第二个参数也应该有默认值,否则出错。

  • 第18题:

    以下程序中函数f( )的功能是将n个字符串按由大到小的顺序进行排序。 include void f

    以下程序中函数f( )的功能是将n个字符串按由大到小的顺序进行排序。 #include<string.h> void f(char p[ ][10],int n) { char t[20]; int i,j; for(i =O;i <n-1 ;i ++ ) for(j =i + 1 ;j < n;j ++ ) if(strcmp(p [i] ,p[j] ) <0) { strcpy(t,p[i]);strcpy(p[i] ,p[j] );strcpy(p[j] ,t); } } main ( ) { char p [ ] [ 10 ] = { "abc","aabdfg","abbd","dcdbe", "cd" }; int i; f(p,5); printf("%d\n",strlen(p[O] ) ); } 程序运行后的输出结果是

    A.6

    B.4

    C.5

    D.3


    正确答案:C
    解析:对字符串比较的方法是依次对两字符串对应位置上的字符两两比较,当出现第一对不相同的字符时,即由这两个字符(ASCII码值)决定所在串的大小。

  • 第19题:

    1CPU与通道可以并行执行,并通过()实现彼此之间的通讯和同步。

    • A、 I/O指令
    • B、 I/O中断
    • C、 I/O指令和I/O中断
    • D、 操作员

    正确答案:C

  • 第20题:

    下列I/O控制方式中,不使用中断机构是()。

    • A、中断控制方式
    • B、DMA控制方式
    • C、程序控制方式
    • D、I/O通道控制方式

    正确答案:C

  • 第21题:

    可编程序控制器内务处理时间包括处理器的内部检查:()

    • A、用输出映象表数据刷新处理器基本框架上驻留本地I/0输出模块;用存放在远程I/O缓冲区的远程I/O输入状态刷新输入映象表
    • B、用输出映象表的数据刷新远程I/O缓冲区;用处理器基本框架内的I/O输入状态刷新输入映象表;用存放在远程I/O缓冲区的远程I/O输入状态刷新输入映象表
    • C、用输出映象表数据刷新处理器基本框架上驻留本地I/0输出模块;用处理器基本框架内的I/O输入状态刷新输入映象表;用存放在远程I/O缓冲区的远程I/O输入状态刷新输入映象表
    • D、用输出映象表数据刷新处理器基本框架上驻留本地I/0输出模块;用输出映象表的数据刷新远程I/O缓冲区;用处理器基本框架内的I/O输入状态刷新输入映象表;用存放在远程I/O缓冲区的远程I/O输入状态刷新输入映象表

    正确答案:D

  • 第22题:

    CPU与通道可以并行工作,并通过()实现它们之间的联系。

    • A、I/O指令
    • B、I/O中断
    • C、I/O指令和I/O中断
    • D、操作员

    正确答案:A

  • 第23题:

    下列关于I/O设备的叙述中,哪一个是正确的?()

    • A、不同的I/O设备可以并行工作
    • B、只有I/O设备才能产生有效的中断源
    • C、在中断处理过程中,必须屏蔽新中断
    • D、SPOOLing系统是脱机I/O系统

    正确答案:A

  • 第24题:

    单选题
    下列描述中,不是设备管理的功能的是()。
    A

    实现缓冲区管理

    B

    进行设备分配

    C

    实现中断处理

    D

    完成I/O操作


    正确答案: D
    解析: 暂无解析