分站导航

热点关注

当前位置:

首页 > 专业大全

2012年自考“高级语言程序设计”经典习题及答案(32)

来源:本站整理 时间:2020-02-13 15:55:03

9.2 填充题

1.设有定义 # define F(N) 2*N ,则表达式 F(2+)的值是_____.

解 F(N)被定义成2*N,表达式F(2+3)被替换成2*2+3,其值是7.

2.设有下列程序:

# include

main(int argc,int *argv[])

{ while( argc 0) printf( %s ,argv[argc]);

printf( \n );

}

假定上述程序编译连接成目标程序名为p.exe,如果输入如下的命令:

P 123 AAA BBB (其中的 表示回车)

则输出结果是_____.

解 程序启动时,参数argc的值是4,由于循环条件是一即组 0,是先减1后判大于0,循环共进行三次,顺序输出argv[3],argv[2]和argv[1],即输出BBBAAAl23.

9.3 程序分析题

1.阅读下面程序,写出程序运行结果。

# define PR(ar) printf( %d, , ar)

main()

{ int j,a[] ={1,3,5,7, 9,11,15}, * p= a+5;

for(j=3; j; j )

switch(j) { case 1:

case 2: PR( * p++); break;

case 3: PR(*( p));

}

printf( \n );

}

解 程序的宏定义PR以d格式输出参数的值和远号字符。程序给数组a 赋初值,并由指针p指向元素a[5].程序让j从3减至1,共循环三次。当j是3时,让p减1,并输出p所指元素的值9;当 j是2和1时,输出p所指的数组元素的值,并让p增1,顺序输出9和11.所以

程序输出:

9,9,11

2.设下面的程序经编译连接后生成的目标程序名为: ABC.EXE,写出输入以下命令行后的输出:

ABC FILE1 FILE2 (其中的 表示回车)

# include

main( int argc, char *argv[])

{ int i;

printf( %d \n ,argc);

for(i=O;i

printf( \n );

}

解 程序首先输出参数argv的值3,然后循环三次,顺序输出ABC、FILE1和FILE2,并回车

3

ABC FILE1 FILE2

3.读程序,写功能。

# include

# include

main(int argc, char *argv[])

{ FILE *fl,*f2;

char ch;

if(argc 3)

{ printf( Parameters missing! \n );exit(0); }

if(((f1 =fopen(argv[1], r ))== NULL) ||

((f2=fopen(argv[2], w ))== NULL))

{ printf( Can not open file! \n ); exit(0); }

while(!feof(f1)) fputc(fgetc(f1),f2);

fclose(f1);

fclose(f2);

}

解 程序在argc小于3时,报告出错信息结束。当argc大于2时,以程序启动时的第一和第二参数为文件名打开文件,井用循环将第一参数的文件内容复制到第二参数的文件。

9.4 程序设计题

1.设计一个复制文本文件的程序,源文件名和目标文件名随程序启动执行命令输入。

解 直接写出程序如下:

# include

FILE *rfp,*wfp;

int main( int argc, char *argv[])

{

if( argc 3) {

printf( Parameters missing ! \n ); return 0 ;

}

if(((rfp= fopen(argv[1], r ))== NULL) ||

((=fopen(argv[2], w ))== NLILL)) {

printf( 不能打开文件\n );

return 0;

}

while( ! feof(rfp))

fputc( fgetc(rfp), wfp);

fclose(wfp);fclose(rfp);

printf( 程序结束\n );

return l;

}

分享:

qq好友分享 QQ空间分享 新浪微博分享 微信分享 更多分享方式

上一篇:<上一篇

下一篇:

(c)2024 www.diying.com All Rights Reserved SiteMap 联系我们 | 豫ICP备2022007582号