软考初级程序员下午题(12)

试题四

阅读以下函数说明和C语言函数,将应填入______处的字句填写完整。
[说明]
编写程序,生成一个新文本文件,它由一个已知文本文件的所有偶数行组成。要求已知文本文件名和新文本文件名均从键盘输入。请填空完善程序。

[C语言程序]
#include<stdio.h>
main()
{
FILE*oldf,*newf;
char ch,fname[20];
int i;
do{
printf("Enter name of existed text file to be read:");
scanf("%s",fname);
if((oldf=fopen(fname,"r"))==NULL)
printf("File%s can't open!\n",fname);
}while(oldf==NULL);
do{
printf("Enter mane of new text file to be written:");
scanf("%s",fname);
if((______==NULL)
printf("File%s can't open!\n",fname);
}while(______);
i=1;
while(!feof(oldf))
{
while((ch=fgetc(oldf))!=______)
{
if(i%2==______)
fputo(ch,newf);
}
fputc('\n',newf);
______;
}
fclose(oldf);
fclose(newf)}

试题五

阅读以下说明,以及用C++在开发过程中所编写的程序代码,将应填入______处的字句填写完整。

    [说明]
    在下面函数横线处填上适当的字句,使其输出结果为:
    构造函数.
    构造函数.
    12
    56
    析构函数
    析构函数.
    [C++代码]
    #include"iostream.h"
    class AA
    {public:
    AA(int i,int j)
    {A=i;B=j;
    cout<<“构造函数.\n";
    }AA(){______;}
    void print();
    private:
    int A,B;
    };
   void AA::print()
    {cout<<A<<","<<B<<endl;}
    void main()
    {
    AA*al,*a2;
    ______=new AA(1,2);
    a2=new AA(5,6);
    ______;
    a2--print();
    ______a1;
    ______a2;
    }

试题六

阅读以下Java代码,回答问题1和问题2,将解答填写完整。

 [Java代码]
    class usethread implements ______{
    int num
    usethread(int n){
    num=n;
    }
    public void______{
    for(int i=0;i<3;i++)
    System.out.println("running:"+num);
    System.out.println("finished:"+num);
    }
    public class multhread{
    public static void main(String args[])______ InterruptedException{
    Thread m1=new Thread(new usethread6); 
    Thread m2=new Thread(new usethread7);
    m1.start8;
    m2.start8;
    m1.join8;
    m2.join8; 
    }
    }

补充完整上面Java代码中的______处。
写出上面Java代码运行的结果。

试题四答案

(1)newf=fopen(fname,“w”)
(2)newf==NULL
(3)‘\n’
(4)0
(5)i=i+1或i++

[解析] 本题考查用C语言实现对文本文件的操作。
题目要求程序生成一个新文本文件,它的内容由一个已知文本文件的所有偶数行组成,而已知文本文件名和新文本文件名均从键盘输入,题目的关键在于对文件的操作。下面来具体分析代码。
第1空在一个循环体中,是条件判断语句的条件,此循环的作用我们不难从程序中看出,是用来打开新文本文件的,在C语言中要打开一个文件应该用函数fopen(),它的两个参数分别是其文件名和对文件操作的属性,根据题目意思,对这个文件的操作只有写操作。因此,此空答案为“newf=fopen(fname,“w”)”。
第2空是一个循环的判断条件,上面我们已经分析了该循环的作用,是用来打开新文本文件的,结合第一个文件的打开程序,我们很容易发现此空的答案为“newf==NULL”。
第3空是一个二重循环第二层循环的判断条件,这个二重循环的作用是用来实现将已知文本文件的所有偶数行内容写到新文件中,这里需要注意每次取到的内容都是偶数行的内容,在对已知文本文件进行取内容时是逐行取的,那么条件判断语句是用来判断是否取完了一行内容,在C语言中,一般用换行符’\n’来标志一行的结束,因此此空答案为“‘\n’”。
第4空是循环下条件判断语句的条件,根据题目要求可以知道每次对新文件进行写的数据都是已知文本文件的偶数行的内容,那么在写之前应该首先判断内容是否是偶数行的内容。此空所在语句就是用来实现这一功能的,而偶数对2取余的结果都为0,因此此空答案为“0”。
第5空是二重循环的最后一条语句,在上面的空中我们已经分析到,在对新文件进行写内容时要首先判断其内容所在行是否为偶数行,而当前行号存放在变量i中,整个程序都没有改变变量i的值,那么此空应该是用来改变变量i的值的,因此此空答案为“i++”。

试题五答案

(1)cout<<"析构函数.\n"
(2)a1
(3)a1->print()
(4)delete
(5)delete

[解析] 本题考查用C++语言对输出的实现。
题目中没有什么条件,只给出了输出结构,要求程序能实现这个输出。下面来具体分析代码。
第1空很明显是类AA的析构函数的函数体,类的析构函数一般在撤销一个对象时调用,根据题目的要求,要输出析构函数这样的结果,而在程序中没有与此相关的操作,那么此空应该是用来实现这个功能的,借鉴构造函数中的内容,我们很容易就得出此空答案为“cout<<"析构函数.\n"”。
第2空在主函数中,很明显此空所在的语句是创建一个AA类的对象,并让一个AA型的指针变量指向这个对象。在函数开始的时候声明了两个AA型的指针变量a1和a2,而a2在下面已经有了值,那么这里只有用变量a1,因此此空答案为“a1”。
第3空是在创建了两个对象后执行的语句,根据程序不难推断出,这里应该要实现对象a1的数据输出,那么就要调用函数print(),因此此空答案为“a1->print()”。
第4空所在的语句是在实现了构造函数与数据输出后执行的语句,从题目要求来分析,这里应该要调用对象的析构函数来输出“析构函数”这样一个结果,上面我们已经分析到了对象的析构函数一般在撤销对象时调用。从对象的执行过程来分析,在对象的所有处理完成后也应该撤销对象来释放所占的资源,那么此空的任务应该是用来撤销a1对象,在C++中一般用关键字delete,因此此空答案为“delete”。
第5空和第4空的情况一样,因此此空答案为“delete”。

试题六答案

(1)Runnable
(2)run()
(3)throws

7、程序输出结果:

running:1
running:2
running:1
running:2
running:1
running:2
finished:1
finished:2

[解析] 本题考查Java中线程的相关知识。
题目要求按照程序给出的内容来完成填空和输出程序的运行结果。本题的关键是考查我们对线程的了解程度。线程的创建方法有两种,即通过类Tbread和接口Runnable创建的方法。刚刚创建的线程还不能与其他的线程并发运行,当调用了方法start后,线程进入就绪态,在被Java虚拟机调度后才进入运行态。进入运行态的线程自动执行成员方法run(),在执行完这个成员方法后线程就又自动进入死亡态。下面来具体分析程序。
第1空在定义类usethread语句中,从后面的关键字implements可以推断出类继承了一个接口,而在Java中,接口一般只有成员变量和成员方法的定义而没有成员方法的具体实现。根据后面的程序new thread(new usethread(1))可以知道创建了线程对象,而这种创建线程对象的方法是通过接口Runnable来实现的,因此类usethread肯定是继承了接口Runnable,所以此空答案为“Runnable”。
第2空是一个函数体的函数名,而函数体的作用是循环进行输出,从上面对线程的分析可以知道,此函数一定是run()函数,因此此空答案为“run()”。
第3空是入口函数后面的语句,结合Java程序的特点,再从此空后面的内容不难推断出,此处是要显式生成异常来处理程序中的异常。而在Java中,一般用关键字throws来显式生成异常,因此此空答案为“throws”。
对于问题2,我们可以根据程序来分析,程序中创建了两个线程,根据上面的分析我们可以知道,这两个线程都自动调用了函数run(),因此程序输出结果为:
running:1
running:2
running:1
running:2
running:1
running:2
finished:1
finished:2

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值