程序设计基础(C)作业答案(带原题)(6)

2020-02-22 11:04

{

printf(\ exit(0); }

printf(\

while((ch=getchar( ))!='#') fputc( ch ,fp); fclose(fp); }

提示:文件名是从键盘读入的,因而文件名是用变量表示的,文件是打开写。

4.下述程序从一个二进制文件中读入结构体数据,并把读出的数据显示在屏幕上。请补全程序。

#include struct rec { int a;

float b;};

void recout(FILE *fp) {struct rec r; do

{fread( &r ,sizeof(struct rec), 1 ,fp); if( feof(fp) )

break ;

printf(\}while(1); }

void main() { FILE *fp;

fp=fopen(\recout(fp); fclose(fp); }

提示:在fread语句中,(1)中为存放所读出结构数据的内存地址,当然此数据是赋给变量r,(2)中是读出结构体变量数据的个数,(3)是与循环中止有关的判断,(4)为中止循环。

5.从键盘输入一个字符串,并逐个将字符串的每个字符传送到磁盘文件\中,字符串的结束标记为\。

#include #include

void main() { FILE *fp; char ch; fp=fopen(\ if (fp == NULL) { printf(\ exit(0);

} while ((ch = getchar()) != '#') { fputc(ch,fp); } fclose(fp); }

6.有一文本文件l1.txt,请编写一个程序将文件中的英文字母及数字字符显示在屏幕上。 提示:

#include #include

void main() { FILE *fp; char ch; fp=fopen(\ if (fp == NULL) { printf(\ exit(0); } while (!feof(fp)) { ch = fgetc(fp); if (ch >= 'A' && ch <= 'Z' || ch >= 'a' && ch <= 'z' || ch >= '0' && ch <= '9') { putchar(ch); } } fclose(fp); }

7.把文本文件l1.txt中的数字字符复制到文本文件l2.txt中。

#include #include

void main() { FILE *fin,*fout; char ch; fin=fopen(\

fout = fopen(\ if (fin == NULL || fout == NULL) { printf(\ exit(0); } while (!feof(fin)) { ch = fgetc(fin); if (ch >= '0' && ch <= '9') { fputc(ch,fout); } } fclose(fin); fclose(fout); }

8.x从0到360度的sin(x)值写入到文件l6.txt中,并将大于0的值显示在屏幕上。

#include #include #include #define PI 3.1415926 void main() { FILE *fp; double y; fp=fopen(\ if (fp == NULL) { printf(\ exit(0); } for (int i = 0; i <= 360; i++) { y = sin(PI*i/180); fprintf(fp,\ if (y > 0) { fprintf(stdout,\ } } fclose(fp);

}

第9章 指针与数组

1.下列程序输出的结果是( D )。

#include

void f(int * x ) {

*x = 10 ; }

void main() {

int a,*p=&a; f(p);

printf(\}

(A)输出的值是随机值 (B)因输出语句错误而不能执行者 (C)输出值为10 (D)输出值为11

提示:指针x指与指针p指向同一个变量,10赋给指针x所指的地址上的内容,++(*p)是指指针p所指地址上内容++。

2.下列程序片段中不正确的字符串赋值或初始化方式是( C )。 (A)char *str; str=\ (B)char str[7]={'s','t','r','i','n','g','\\0'}; (C)char str[10]; str=\ (D)char str []=\

提示:字符串赋值只能在初始化时进行。

3.如有定义:int x=2,*p=&x;以下哪些表达式的含义是不正确的。D (A)*&p (B) *&x (C)&*p (D)&*x 提示:指针可以作取地址运算,变量不能作取内容运算。 4.如有定义int a[5];(其中:0<=i<5),不能表示数组元素的是( B )。 (A)*(a+i) (B)a[5] (C)a[0] (D)a[i] 提示:数组元素的下标从0开始。 5.若有以下定义和语句,int a[10],i;且0<=i<10,则对数组元素地址的正确表示是( D )。 (A)a++ (B)(a+1) (C)*(a+1) (D)&a

提示:一旦数组定义,数组的首地址是一个常量,不能作++运算,而a+i表示数组第i个元素的地址。

6.有以下定义及语句,则对数组a元素的不正确引用的表达式是( A )。

int a[4][5];*p[2],j;

for (j = 0 ; j <4 ; j++) p[j]=a[j];

(A)p[0][0] (B)*(a+3)[4] (C)*(p[1]+2) (D)*(&a[0][0]+3) 提示:p为指针数组,此题中a[i][j]、p[i][j]、*(p[i]+j)、*(*(p+i)+j)也都能表示数组元素,&a[0][0]

等同于a[0]+0。 二、程序阅读与填空题

1.分析下列程序,输出结果是( )。

#include void main() {

int *p1,x=10; float *p2,y=2.5; p1=&x; p2=&y;

printf(\}

提示:++都作用在内容上,前一项是先++再输出,后一项是先输出再++。 11, 2.500000

2.下列程序输出结果是( )。

#include

void main() {

int a[ ]={1,2,3,4,5,6},*p=a;

printf(\}

提示:语句*(p+3)+=2;指p+3的地址上的内容加2,然后输出p及p+3的地址上内容。 1,4

3.下列程序输出结果是( )。

#include

void main() {

int a[ ]={1,2,3,4,5,6}; int x,y,*p; p=&a[0]; x=*(p+2); y=*(p+4);

printf(\}

提示:p+2是指&a[2]。 *p=1,x=3,y=5

4.下列程序输出结果是( )。

#include

void main() {

int a[ ]={10,20,30,40,50,60};


程序设计基础(C)作业答案(带原题)(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:人身侵权损害赔偿

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: