全国青少年机器人技术等级考试四级课件第六课06函数与库

关于函数调用,下面说法错误的是()。

A、被调用函数必须是已经存在的函数、库函数或用户已定义过的函数

B、没有头文件也可以对库函数进行调用

C、如果使用用户自定义的函数,还要在主调用函数中说明用户函数的返回值类型。

D、在主函数main()中可以调用其他函数,其他函数也可以相互调用


参考答案:B


以下关于I/O系统的描述中,正确的是( )

A.文件I/O为应用程序提供所需的内存空间

B.文件I/O通过VFAT虚拟文件表寻找磁盘文件

C.文件I/O通过限制地址空间避免冲突

D.设备I/O负责与键盘、鼠标、串口、打印机对话


正确答案:D


以下正确的说法是

A.用户若需调用标准库函数,调用前必须重新定义

B.用户可以重新定义标准库函数,若如此,该函数将失去原有含义

C.系统根本不允许用户重新定义标准库函数

D.用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动调用


正确答案:B


(24)下列关于I/O系统的描述中,正确的是( )。

A)文件I/O为应用程序提供所需的内存空间

B)设备I/O通过VFAT虚拟文件表寻找磁盘文件

C)文件I/O通过限制地址空间避免冲突

D)设备I/O负责与键盘、鼠标、串口、打印机对话


正确答案:D
(24)D) 【解析】内存管理的目标是给每一个应用程序分配所必需的内存;文件I/O通过VFAT虚拟文件表寻找磁盘文件;内存管理通过把应用程序限制在自己的地址空间来避免冲突;为了能与一个设备对话,设备I/O通过会说该设备能理解的语言,负责与键盘、鼠标、串口、打印机对话。因此本题的正确答案是D)。


请补充函数fun(),该函数的功能是:分类统计一个字符串中元音字母和其他字符的个数(不区分大小写)。

例如,输入aeiouAOUpqn,结果为A∶2 E∶1 1∶1 O∶2 U∶2 Other∶4。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

试题程序:

include<stdiO.h>

include<conio.h>

define N 100

void fun(char *str,int bb[ ])

{

char *p=str;

int i=0;

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

【 】;

while(*p)

{

switch(*p)

{

case 'A':

case 'a':bb[0]++;break;

case 'E':

case 'e':bb[1]++;break;

case 'I':

case 'i':bb[2]++;break;

case 'O':

case 'o':bb[3]++;break;

case 'U':

case 'u':bb[4]++;break;

default:【 】;

}

【 】

}

}

main()

{

char str[N),ss[6]="AEIOU";

int i;

int bb[6];

clrscr();

printf("Input a string:\n");

gets(str);

printf("the string is:\n");

puts(str);

fun(str,bb);

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

printf("\n%c:%d",ss[i],bb[i]);

printf("\nother:%d",bb[i]);

}


正确答案:bb[i]=0 bb[5]++ p++;
bb[i]=0 bb[5]++ p++; 解析:第一空:数组bb[6]用来存放5个元音字母和其他字符的个数,在使用之前需要清零。第二空:数组元素bb[5]用来存放其他字符的个数,当指针p所指的字符不是元音字母时,则认为是其他字符,bb[5]加1。第三空:指针p指向字符串str,通过p自加1来移动指针,访问字符串中的所有字符。


摘要:试考级等人器课机6库第与涵数玩科技学知识 01函数与库玩科技学知识 库函数库函数(Libraryfunction)是把函数放到库里,供别人使用的一种方式。.方法是把一些常用到的函数编完放到一个文件里,供不同的人进行调用。调用的时候把它所在的文件名用#include<>加到里面就可以了。一般是放到lib文件里的。玩科技学知识 函数库函数库是由系统建立的具有一定功能的函数的集合。库中存放函数的名称和对应的目标代码,以及连接过程中所需的重定位信息。用户也可以根据自己的需要建立自己的用户函数库。库函数:存放在函数库中的函数。库函数具有明确的功能、入口调用参数和返回值。玩科技学知识 经典函数(1)I/O函数包括各种控制台I/O、缓冲型文件I/O和UNIX式非缓冲型文件I/O操作。需要的包含文件:stdio.h例如:getchar,putchar,printf,scanf,fopen,fclose,fgetc,fgets,fprintf,fsacnf,fputc,fputs,fseek,fread,fwrite等。玩科技学知识

下列给定函数中,函数fun()的功能是:统计字符串中各元音字母(即A,E,I,O,U)的个数。注意:字母不分大小写。例如,输入THIs is a boot,则应输出是1 0 2 2 0。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

include <conio.h>

include <stdio.h>

/*************found**************/

fun(char *s, int num[5])

{ int k, i=5;

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

/*************found**************/

num [i]=0;

for{;*s;s++)

{ i=-l;

/*************found**************/

switch(s)

{ case 'a': case 'A':{i=0;break;}

case 'e': case 'E':{i=1;break;}

case 'i': case 'I':{i=2;break;}

case 'o': case 'O':{i=3;break;}

case 'u': case 'U':{i=4;break;}

}

if(i>=0)

num[i]++;

}

}

main ( )

{ char s1[81]; int num1[5], i;

clrscr ();

printf("\nPlease enter a string: ");

gets (s1);

fun{s1, num1);

for(i=0;i<5;i++) printf("%d",num1[i]);

printf ("\n");

}


正确答案:(1)错误: fun(char *s int num[5]) 正确: void fun(char *s int hum[5]) (2) 错误: num[i]=0; 正确: num[k]=0; (3) 错误: switch(s) 正确: switch(*s)
(1)错误: fun(char *s, int num[5]) 正确: void fun(char *s, int hum[5]) (2) 错误: num[i]=0; 正确: num[k]=0; (3) 错误: switch(s) 正确: switch(*s) 解析:switch语句说明:
(1)switch后的表达式,可以是整型或字符型,也可以是枚举类型的。在新的ANSIC标准中允许表达式的类型为任何类型。
(2)每个case后的常量表达式只能是常量组成的表达式,当switch后的表达式的值与某一个常量表达式的值一致时,程序就转到此case后的语句开始执行。如果没有一个常量表达式的值与swish后的值一致,就执行default后的语句。
(3)各个case后的常量表达式的值必须互不相同,不然的话程序就不知该跳到何处开始执行。
(4)各个case的次序不影响执行结果,一般情况下,尽量使用出现机率大的case放在前面(为什么,等学到《数据结构》就知道了)。
(5)在执行完一个case后面的语句后,程序流程转到下一个case后的语句开始执行。千万不要理解成行完一个case后程序就转到switch后的语句去执行了。
在本例中,其他错误都比较简单,而且我们在前面已经介绍过了。


以下正确的说法是( )。

A、用户调用标准库函数前,必须重新定义

B、用户可以重新定义标准库函数,若如此,该函数将失去原有含义

C、系统不允许用户重新定义标准库函数

D、用户调用标准库函数前,不必使用预编译命令将该函数所在文件包括到用户源文件中


参考答案B


阅读以下函数说明和C语言函数,将应填入(n)处的语句写在对应栏内。

【函数1.1说明】

本程序可以打印出如下图形(菱形):

*

***

*****

*******

*****

***

*

【函数2.1】

main()

{

int i,j,k;

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

{

for(j=0;j<=2-i;j++)

printf(" ");

for((1))

printf("*");

printf("\n");

}

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

{

for((2))

printf(" ");

for(k=0;k<=4-2*i;k++)

printf("*");

printf("\n");

}

}

【函数2.2说明】

通过本程序,可以从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件“CsaiWgm”中保存,输入的字符串以“!”结束。

【函数2.2】

include "stdio.h"

main()

{

FILE *fp;

char str[100],filename[10];

int i=0;

if((fp=fopen("CsaiWgm","w"))==NULL)

{

printf("cannot open the file\n");

exit(0);

}

printf("please input a string:\n");

gets(str);

while((3))

{

if(str[i]>='a'&&str[i]<='z')

str[i]=(4);

fputc(str[i],fp);

(5);

}

fclose(fp);

fp=fopen("CsaiWgm","r");

fgets(str,stden(str)+1,fp);

printf("%s\n",str);

fclose(fp);

}


正确答案:(1)k=0;k=2*i;k++ (2)j=0;j=i;j++ (3)str[i]!='!' (4)str[i]-32 (5)i++
(1)k=0;k=2*i;k++ (2)j=0;j=i;j++ (3)str[i]!='!' (4)str[i]-32 (5)i++ 解析:本题考查用C语言实现菱形的输出与大小写字母的转换。
在函数2.1中,题目要求实现对菱形的输出,从图中可以看出每行的“*”字符个数为(2×行号-1),最长的一行其长度为8个“*”字符,最短的一行是1个“*”字符,从最短到最长一共是4行。下面来[分析]代码。
第(1)空是第二重循环的循环条件,从程序中可以推断出这个循环的作用是用来输出一行的“*”字符,根据上面的[分析],每行的“*”字符个数为(2×行号-1)可以得到循环的上界,再结合程序可以知道此空用的变量是k,而每行的行号存放在变量i中,因此,此空答案为k=0;k=2*i;k++。
第(2)空在第二个二重循环下面,这个二重循环用来输出图形中下半部分,此空是循环的条件。由于菱形具有对称性,我们可以对照程序上面相应的循环中的条件,很容易就可以得到结果,此空答案为j=0;j=i;j++。
在函数2.2中,题目要求从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件CsaiWgm中保存。此题的关键在于如何将小写字母变成大写字母。
第(3)空是循环的循环条件,从程序中可以推断出这个循环的作用是用来将字符串的小写字母全部转换成大写字母,那么可以知道循环的条件是只要取到的字符不为结束字符“!”,循环就继续,因此,此空答案为str[i]!='!'。
第(4)空是条件判断语句下面的语句,根据程序给出的代码不难发现,如果此条件判断语句结果为真,说明当前取到的字符是小写字母,那么应该将其转换为大写字母,因此,此空答案为str[i]-32。
第(5)空是循环的最后一条语句,从程序中不难发现,循环对字符串的位置没有移动,那么此空应该用来实现对字符串位置的往后移动。而记录当前字符串位置的是变量i,因此,此空答案为i++。


函数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]就交换数据。


已知数据文件IN68.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsVal(),其功能是:如果4位数各位上的数字均是奇数,则统计出满足此条件的个数cnt,并把这些4位数按从大到小的顺序存入数组b中。最后调用函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT68.DAT文件。

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

程序中已定义数组:a[200],b[200],已定义变量:cnt。

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

试题程序:

include<stdio.h>

define MAX 200

int a[MAX],b[MAX],cnt=0;

void jsVal()

{

}

void readDat ( )

{

int i;

FILE *fp;

fp= fopen ("IN68. DAT", "r");

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

fscanf (fp, "%d", &a [i])

fclose (fp);

}

void main ( )

{

int i;

readDat ( );

jsVal ( );

printf ("满足条件的数=%d\n", cnt);

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

printf ("%d",b[i]);

printf ("\n");

writeDat ( );

}

writeDat ( )

{

FILE *fp;

int i;

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

fprintf (fp, "%d\n", cnt);

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

fprintf (fp, "%din", b [i]);

fclose (fp);

}


正确答案:void jsVal() { int ithouhuntendataj; for(i=0;i200;i++) { thou=a[i]/1000; /*求四位数的千位数字*/ hun=a[i]%1000/100; /*求四位数的百位数字*/ ten=a[i]%100/10; /*求四位数的十位数字*/ data=a[i]%10; /*求四位数的个位数字*/ if(thou%2!=0 && hun%2!=0 && ten%2!=0 && data%2!=0) /*如果4位数各位上的数字均是奇数*/ { b[cnt]=a[i]; /*将满足条件的数存入数组b中*/ cnt++; /*统计满足条件的数的个数*/ } } for(i=0;icnt-1;i++) /*将数组b中的数按从大到小的顺序排列*/ for(j=i+1;jcnt;j++) if(b[i]b[j]) { data=b[i]; b[i][b[j]; b[j]=data; } }
void jsVal() { int i,thou,hun,ten,data,j; for(i=0;i200;i++) { thou=a[i]/1000; /*求四位数的千位数字*/ hun=a[i]%1000/100; /*求四位数的百位数字*/ ten=a[i]%100/10; /*求四位数的十位数字*/ data=a[i]%10; /*求四位数的个位数字*/ if(thou%2!=0 && hun%2!=0 && ten%2!=0 && data%2!=0) /*如果4位数各位上的数字均是奇数*/ { b[cnt]=a[i]; /*将满足条件的数存入数组b中*/ cnt++; /*统计满足条件的数的个数*/ } } for(i=0;icnt-1;i++) /*将数组b中的数按从大到小的顺序排列*/ for(j=i+1;jcnt;j++) if(b[i]b[j]) { data=b[i]; b[i][b[j]; b[j]=data; } } 解析:本题考查的知识点如下:
(1)“%”与“/”的使用。
(2)循环结构与判断结构的使用。
(3)数据的排序。
本题中,首先借助“%”与“/”将4位数各位上的数拆成独立的数字:将1个4位数整除1000则可得到其千位上的数字,除以1000取余再整除100则可得百位上的数字,除以100取余再整除10则可得十位上的数字,除以10取余则得个位上的数字。1个数除以2取余所得的数不等于0,则此数是奇数。题中要求将符合条件的4位数按从大到小的顺序存入数组b中,我们可以先将符合条件的4位数存入数组b,然后对b中的数进行排序。排序使用“选择排序法”。

更多 “全国青少年机器人技术等级考试四级课件第六课06函数与库” 相关考题
考题 当需要进行标准I/O操作时,则应在程序文件中包含()头文件,当需要进行文件I/O操作时,则应在程序文件中包含()头文件。正确答案:iostream.h;fstream.h

考题 下列关于i/o系统的描述中,正确的是( )。A.文件I/O为应用程序提供所需的内存空间B.设备I/O通过VFAT虚拟文件表寻找磁盘文件C.文件I/O通过限制地址空间避免冲突D.设备I/O负责与键盘、鼠标、串口、打印机对话正确答案:D

考题 单选题操作系统的()指的是操作系统必须保护用户和系统文件,防止未经授权的用户进行访问。类似地,I/O设备的使用也必须受到保护A 用户认证B 文件和I/O设备的访问控制C 共享的实现D 存储器保护正确答案:D解析:暂无解析

考题 请补充main函数,该函数的功能是:把1~100间的所有素数保存在数组aa中,然后输出这些素数并计算它们的和。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在 main函数的横线上填入所编写的若干表达式或语句。试题程序:include<stdio.h>main(){int n, i, j, k, flag, sum;int aa [50];sum=O;k=O;clrscr ();for (i=2; i<100; i++){【 】;for (j=2; j<i&&flag; j++)if (i%j==O){【 】;}if (flag){sum+=i;【 】;}}printf("\n*** prime number ***\n");for (i=0; i<k; i++){if (i%10==0)printf ("\n");printf ("%4d", aa [i]);}printf ("\nsum=%d", sum);}正确答案:flag=1flag=0aa[k+++]=iflag=1flag=0aa[k+++]=i 解析:第一空:由后面的if句可以看出,当nag为1时,当前数是素数,所以此处先假设当前数为素数,即置flag为1,再进行判断,如果不是素数,则再将fflag清零。第二空:如果一个数能被除了1和其自身之外的数整除,即余数为0,则这个数不是素数。如果当前数不是素数,则将flag清零。第三空:如果当前数是素数,则将它保存在数组bb中。

考题 strlen()库函数与stdio.h头文件问题?strlen()是一个计算字符串长度的这么一个库函数,这个库函数是定义在string.h这个头文件里的,要想使用这个库函数就必须调用预处理命令将string.h添加到当前的代码中,可是为什么在调用string.h这个头文件的基础上还要调用stdio.h这个头文件呢?stdio.h只是一个输入输出函数的这么一个头文件,跟strlen()库函数有什么关系,,,求解。stdio.h是标准输入输出,C语言本身不包括输入输出函数,如:printf,scanf等等,这些C语言本身并没有包含这些函数,所以就要加stdio.h库函数,里面就有了这些输入输出函数的声明;而strlen函数在包含在string.h中的,所以两者没有任何关系,而你所提的问题,是由于你的程序代码中使用了一些C语言没有提供的函数,但是这些函数又恰好是stdio.h中所包含的,故一定得包含stdio.h头文件,否则无法运行。1、stdio.h是标准输入输出,C语言本身不包括输入输出函数如:printf,scanf等,这些C语言本身并没有包含这些函数,所以就要加stdio.h库函数,里面就有了这些输入输出函数的声明2、strlen函数在包含在string.h中的,所以两者没有任何关系,而你所提的问题,是由于你的程序代码中使用了一些C语言没有提供的函数,但是这些函数又恰好是stdio.h中所包含的,所以一定得包含stdio.h头文件,否则无法运行stdio.h是标准输入输出,C语言本身不包括输入输出函数,如:printf,scanf等等,这些C语言本身并没有包含这些函数,所以就要加stdio.h库函数,里面就有了这些输入输出函数的声明;而strlen函数在包含在string.h中的,所以两者没有任何关系,而你所提的问题,是由于你的程序代码中使用了一些C语言没有提供的函数,但是这些函数又恰好是stdio.h中所包含的,故一定得包含stdio.h头文件,否则无法运行。

考题 填空题当需要进行标准I/O操作时,则应在程序文件中包含()头文件,当需要进行文件I/O操作时,则应在程序文件中包含()头文件。正确答案:iostream.h,fstream.h解析:暂无解析

考题 在文件IN3.DAT中有200个正整数,且每个数均在1000至9999之间。函数readDat()的功能是读取这200个数存放到数组aa中。请编制函数JsSort(),该函数的功能是:要求按每个数的后3位的大小进行降序排列,将排序后的前10个数存入数组b中,如果数组b中出现后3位相等的数,则对这些数按原始4位数据进行升序排列。最后调用函数writeDat()把结果bb输出到文件OUT3.DAT中。例如:处理前 9012 5099 6012 7025 8088处理后 5099 8088 7025 6012 9012注意:部分源程序已给出。请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。试题程序:include <stdio.h>include <string.h>include <conio.h>int aa[200], bb[10];void jsSort({}main ( ){readDat );jsSort( ;writeDat();}readDat ( ){FILE *in;int i;in = fopen("IN3.DAT", "r");for(i = 0; i < 200; i++) fscanf(in, "%d,", &aa[i]);fclose(in);}writeDat ( ){FILE *out;int i;ut = fopen("OUT3.DAT", "w");clrscr ( );for (i = 0; i < 10; i++){printf("i=%d,%d\n", i+1, bb[i]fprintf(out, "%d\n", bb[i]);}fclose (out);}正确答案:void isSort(){int i j data;for(i=0;i199;i++) /*对数组中的4位数按后3位进行从大到小的排序*/for(j=i+1; j200; j++){if (aa[i)%1000aa[j]%1000)/*比较每个数的后3位*/{data=aa[i]; aa[i]=aa[j]; aa[i]二data;)else if(aa[i]%1000==aa[j]%1000) /*若后3位数相等*/if (aa[i]>aa[j] /*则要按原4位数的值进行从小到大的排序*/{data=aa[i]; aa[i]=aa[j]; aa[j]=data; )}for(i=0; i10; i++) /*将排序后的前10个数存入数组b中*/bb[i]=aa[i];}void isSort(){int i, j, data;for(i=0;i199;i++) /*对数组中的4位数按后3位进行从大到小的排序*/for(j=i+1; j200; j++){if (aa[i)%1000aa[j]%1000)/*比较每个数的后3位*/{data=aa[i]; aa[i]=aa[j]; aa[i]二data;)else if(aa[i]%1000==aa[j]%1000) /*若后3位数相等*/if (aa[i]>aa[j] /*则要按原4位数的值进行从小到大的排序*/{data=aa[i]; aa[i]=aa[j]; aa[j]=data; )}for(i=0; i10; i++) /*将排序后的前10个数存入数组b中*/bb[i]=aa[i];} 解析:本题实质上考的是对数组元素进行排序的问题。最容易理解的方法是选择法。选择法的基本思想是:依次用当前取得的元素和它后面的其他元素进行比较,比如要从大到小进行排序,则只要发现后面的元素中有比当前元素大的,就把刚发现的较大的元素与当前元素交换,这样做的目的是当与其后的所有元素都比较完后,可以保证当前位置的当前元素存放着最大数。按照同样的方法去取得次大数。由于本题中题目要求要对数组中的4位数的后3位进行排序,因此,要首先取得各个数的后3位并做比较,“aa[i]%1000”就可以得到每个数的后3位。根据题意,对这些数按后3位进行从大到小的排序。若后3位数相等,则要按原4位数的值进行从小到大的排序。

考题 请补充main 函数,该函数的功能是:把文本文件B中的内容追加到文本文件A的内容之后。例如,文佃的内容为“I’m ten.”,文件A的内容为“I’ m a student!”,追加之后文件A的内容为“I’m a student !I’m ten.”注意:部分源程序给出如下。请勿改动主函数main 和其他函数中的任何内容,仅在函数main 的横线上填入所编写的若干表达式或语句。试题程序:include<stdio, h>include<conio. h>define N 80main(){FILE *fp, * fp1, *fp2;int i;char c[N] ,t, ch;clrscr ();if ((fp=fopen ("A. dat ", "r") ) == NULL){printf ("file A cannot be opened\n");exit (0);}printf("\n A contents are : \n\n");for (i=0; (ch=fgetc (fp)) !=EOF; i++){C [i]=ch;putchar (c [i]);fclose (fp);if((fp=fopen ("B. dat", "r") )==NULL){printf ("file B cannot be opened\n");exit (0);}printf("\n\n\nB contents are : \n\n");for (i=0; (ch=fgetc (fp)) !=EOF; i++){c [i] =ch;putchar (c [i]);}fclose (fp);if ( (fp1=fopen ("A.dat" ,"a"))【 】(fp2=fopen ("B. dat", "r") ) ){while ( (ch=fgetc (fp2)) !=EOF)【 】;}else{printf("Can not open A B !\n");}fclose (fp2);fclose (fp1);printf ("\n***new A contents***\n\n");if ( ( fp=fopen ("A. dar", "r") )==NULL){printf ("file A cannot be opened\n");exit (0);}for (i=0; (ch=fgetc (fp)) !=EOF;i++){c [i] =ch;putchar (c [i] );}【 】;}正确答案:&&fputc (chfp1)fclose (fp)&&fputc (ch,fp1)fclose (fp) 解析:第一空:当两个文件都被成功打开时,才能将文件B中的内容追加到文件A中,所以应该用“与”运算符——“&&”。第三空:fputc()函数用于将一个字符写到磁盘文件上去,调用形式为:fputc (要输出的字符,文件指针);。第三空:对一个文件进行操作后,应该关闭它,以防它再被误用。调用形式为:fclose(文件指针);。

考题 操作系统的()指的是操作系统必须保护用户和系统文件,防止未经授权的用户进行访问。类似地,I/O设备的使用也必须受到保护A、用户认证B、文件和I/O设备的访问控制C、共享的实现D、存储器保护正确答案:B

考题 以下正确的说法是( )。A.用户若需调用标准库函数,调用前必须重新定义B.用户可以重新定义标准库函数,若重新定义,该函数将失去原有含义C.系统根本不允许用户重新定义标准库函数D.用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统会自动调用正确答案:B解析:用户调用标准库函数前不必重新定义,而只需使用预编译命令将该函数所在文件包括到用户源文件中即可。而且,系统允许用户重新定义标准库函数,但此时该函数将失去原有含义。因此,正确答案为选项B)。