全国信息技术应用考试

Stdin System.in作为()类的一个实例来实现stdin,它代表的是(),你可以使用其中两个成员函数, ()让你从输入中读一个字节,skip(long n)让你在输入中跳过n个字节。

题目

Stdin System.in作为()类的一个实例来实现stdin,它代表的是(),你可以使用其中两个成员函数, ()让你从输入中读一个字节,skip(long n)让你在输入中跳过n个字节。

如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

请补充main函数,该函数的功能是:从键盘输入一个长整数,如果这个数是负数,则取它的绝对值,并显示出来。

例如,输入:-3847652,结果为:3847652。

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

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

试题程序:

include<stdio.h>

include<conio.h>

main()

{

long int n;

clrscr();

printf("Enter the data;\n");

scanf(【 】);

printf("*** the absolute value ***\n");

if(n<0)

【 】

printf("\n\n");

printf(【 】);

}


正确答案:"%1d"&n n=-n; "%1d"n
"%1d",&n n=-n; "%1d",n 解析:第一空:本题考查对标准输入函数scanf()的调用格式,当输入为长整型数时,格式控制字符串为“%1d”,输入的长整数存于变量n中。第二空:当输入的数是负数时,则取它的相反数,即为它的绝对值。第三空:本题考查对标准输出函数print()的调用格式,当输出为长整型数时,格式控制字符串为“%1d”。

第2题:

请编写一个函数inline long sum(int n),用递归函数完成运算:sum(n)=1*1+2*2+…n*n,递归表达式为 sum(n)=sum(n-1)+n2。

注意:部分源程序已存在文件test10_2.cpp中。

请勿修改主函数main和其他函数中的任何内容,仅在函数sum的花括号中填写若干语句。

文件test10_2.cpp的内容如下:

include<iostream.h>

inline long sum(int n)

{

}

void main()

{

int n;

cout<<"输入n:";

cin>>n;

cout<<"结果为:"<<sum(n)<<endl;

}


正确答案:inline long sum(int n) { if(n==1) return 1; else return n*n+sum(n-1); }
inline long sum(int n) { if(n==1) return 1; else return n*n+sum(n-1); } 解析:本题考查的是考生对递归函数掌握的熟练程度。递归的终止条件为n=1时,值为1。

第3题:

以下程序的功能是 : 通过函数 func 输入字符并统计输入字符的个数 。 输入时用字符 @ 作为输入结束标志。请填空。

#include <stdio.h>

long 【 14 】 ; /* 函数说明语句 */

main()

{ long n;

n=func(); printf("n=%ld\n",n);

}

long func()

{ long m;

for(m=0;getchar()!='@'; 【 15 】 );

return m;

}


正确答案:

第4题:

请编写一个函数long Fibo(int n), 该函数返回n的Fibonacci数。规则如下:n等于1或者2时,Fibonacci数为1,之后每个Fibonacci数均为止前两个数之和, 即:F(n)=F(n-1)+F(n-2)

注意:清使用递归算法实现该函数。

部分源程序已存在文件test1_2.cpp中。

请勿修改主函数main和其他函数中的任何内容,仅在函数Fibo的花括号中填写若干语句。如n=8时,结果是21。

文件test1_2.cpp清单如下:

include<iostream.h>

corlsh int N=8;

long Fibo(int n);

void main()

{

long f=Fibo(N);

couk<<f<<endl;

}

long Fibo(int n)

{

}


正确答案:long Fibo(int n) { if(n==1)return 1L; else if(n==2) return 1L; else return Fibo(n-1)+Fibo(n-2); }
long Fibo(int n) { if(n==1)return 1L; else if(n==2) return 1L; else return Fibo(n-1)+Fibo(n-2); } 解析:本题考查的是考生对于递归函数的熟练掌握。递归是指在调用函数的过程中出现调用该函数自身,这里递归的结束条件是n等于1或2,即已知数列前两项为1。其调用过程如下:如果函数的参数为l或者2就把返回值1返回调用函数;否则,就使用递推公式Fibo(n)=Fibo(n-1)+Fibo(n-2),把n-1和n-2作为参数调用原函数,即这是一个递归求值的过程(递推的过程)。

第5题:

以下程序的功能是:通过函数func 输入字符,并统计输入字符的个数。输入时用字符@作为输入结束标志。请填空。#include <stdio.h>long ; /* 函数说明语句 */main(){ long n; n=func(); printf("n=%ld\n",n);}long func(){ long m; for( m=0; getchar()!=’@’;); retum m;}


正确答案:func(),m++
本题考查函数的声明及对函数功能的理解。题目中的程序可以分为两个部分,一个为主函数main,另一个为func函数。C语言中如果使用用户自定义的函数,并且该函数与调用它的函数在同一个文件中,则需要在主调函数中对该函数进行声明。如果被调用的函数在主调函数之前,则可以不必加以声明。如果在所有的函数定义之前,在函数的外部已做了函数声明,则在各个主调函数中不必对所调用的函数再进行声明。题目中既没有在main函数之前对func函数进行定义,在main函数中也没有对func函数的声明,故要在所有的函数定义之前对func函数进行声明。第一个填空是对函数声明语句的补充,填入func()。第二个填空是在func函数的循环变量增值处,通过该函数能够输入字符,并对输入的字符进行字数统计。func函数用m的值作为字符个数的统计值并返回,而m是for语句中的循环变量,初始为0,循环条件为一个表达式getchar,每次输入一个字符,只要不是’@’,则继续循环调用for语句,循环变量增值处应该填入能反映m的值发生变化的语句,m是对字符个数的统计量,必然随着输入的合法字符数量增多而变大,应填入语句m++。

第6题:

已经int DBL(int n){return n+n;}和long DBL(long n){return n+n>是一个函数模板的两个实例,则该函数模板的定义是______。


正确答案:template(class T)T DBL(Tn){returnn+n;}。
template(class T)T DBL(Tn){returnn+n;}。 解析: 函数模板的一般说明形式如下:template(类型形参表)返回类型函数名(形参表){//函数体}。函数调用方式为:函数名(实参表);。形参表中的类型以实参表中的实际类型为依据。

第7题:

以下程序试图把从终端输入的字符输出到名为abc.txt的文件中,直到从终端读入字符串#号时结束输入和输出操作,但程序有错 #include<stdio.h> main() { FILE*fout; char ch; fout=fopen('abc.txt','w'); ch=fgetc(stdin); while(ch!='#') { fputc(ch,four); ch=fgetc(stdin); } fclose(fout); } 出错的原因是______。

A.函数fopen调用形式错误

B.输入文件没有关闭

C.函数fgetc调用形式错误

D.文件指针stdin没有定义


正确答案:A
解析:本题考查的是文件的打开函数fopen(),其调用方式通常为FLIE*fp;fp=fopen(文件名,使用文件方式);,如:fp=fopen("abc.txt","w");表示要打开名字为abc.txt的文件,使用文件方式写入。fopen函数带回指向abc.txt文件的指针并赋给fp,即fp指向文件abc.txt。

第8题:

以下程序试图把从终端输入的字符输出到名为abc.txt的文件中,直到从终端读入字符#时结束输入和输出操作,但程序有错。 #include<stdio.h> main() { FILE *fout; char ch; fout=fopen('abc.txt','W'); ch=fgetc(stdin); while (ch!='#') { fputc (ch,fout); ch=fgetc(stdin); } fclose (fout); } 出错的原因是( )。

A.函数fopen调用形式错误

B.输入文件没有关闭

C.函数fgetc调用形式错误

D.文件指针stdin没有定义


正确答案:A
解析:stdin是标准输入设备的文件指针,不须定义直接可以使用,它随系统的启动而打开,随系统的关闭而关闭,fgetc()函数的作用是从某个文件中读取一个数据,其参数为要读取文件的文件指针,所以本题中的调用形式是正确的。fopen()函数有两个参数,第一个参数是打开的文件名,第二个参数是文件打开模式,两个参数都是字符串,本例中“fout=fopen('abc.txt','w');”语句的fopen()函数参数是错误的,应该用双引号"",正确的应改为“fout=fopen("abc.txt","w");”。所以,A选项为所选。

第9题:

下列字节输入流中,哪一个不能够被实例化? ( )

A.FileInputStream

B.FilterInputStream

C.ByteArrayInputStream

D.ObjectInputStream


正确答案:B
解析:本题考查Java中的字节输入流。不能被实例化的类是抽象类,题目所给的4个选项中,由于只有过滤器输入流是抽象类,因此选项B不能被实例化。FileInputStream可对一个磁盘文件涉及的数据操作;FilterInputStream过滤器输入流本身也是一个抽象类,它的各个子类定义了过滤的类型方法;ObjectInputStream类实现了ObjectInput接口,对象在传输前,要首先实现Serializable接口。

第10题:

请编写一个函数fun(),它的功能是将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转为整数的函数)。

例如,若输入字符串“-1234”,则函数把它转换为整数值 -1234。

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

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

include <stdio.h>

include <string.h>

long fun(char *p)

{

}

main ( )

{

char s[6];

long n;

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

gets(s);

n=fun(s);

printf("%ld\n",n);

}


正确答案:long fun (char *p) { long n=0; int flag=1; if(*p=='-') /*负数时置flag为-1*/ {p++;flag=-1;} else if(*p=='+') /*正数时置flag为1*/ p++; while(*p!='\0') {n=n*10+*p-'0'; /*将字符串转成相应的整数*/ p++; } return n*flag; }
long fun (char *p) { long n=0; int flag=1; if(*p=='-') /*负数时置flag为-1*/ {p++;flag=-1;} else if(*p=='+') /*正数时置flag为1*/ p++; while(*p!='\0') {n=n*10+*p-'0'; /*将字符串转成相应的整数*/ p++; } return n*flag; } 解析:if()的作用是判断它是正数还是负数。while()循环的作用是将字符串转成相应的整数。注意*p是一个字符如'9', '4',并不是一个数,要将其转成相应的数字必须令其减去'0'(不是'\0'),即*p-'0'就得到*p这个字符的相应数字。如'0'-'0'=0, '8'-'0'=8等。必须在程序的前面加#includestdlib.h>,函数atol()的作用是将字符串p转成长整型数,它是一个库函数。

更多相关问题