程序设计基础课后答案第四章Word文件下载.docx
- 文档编号:13640439
- 上传时间:2022-10-12
- 格式:DOCX
- 页数:16
- 大小:27.40KB
程序设计基础课后答案第四章Word文件下载.docx
《程序设计基础课后答案第四章Word文件下载.docx》由会员分享,可在线阅读,更多相关《程序设计基础课后答案第四章Word文件下载.docx(16页珍藏版)》请在冰豆网上搜索。
'
\t'
average="
average<
endl;
2.#include<
{inta[9]={1,2,3,4,5,6,7,8,9};
int*p=a,sum=0;
for(;
p<
a+9;
p++)
if(*p%2==0)sum+=*p;
sum="
sum<
3.constintn=5;
#include<
iomanip.h>
{inta[n][n]={0},i,j,k;
for(k=1,i=0;
n;
for(j=i;
j>
=0;
j--,k++)
a[j][i-j]=k;
for(i=0;
{for(j=0;
j<
j++)
setw(3)<
a[i][j];
}
4.intf(int[],int);
{inta[]={-1,3,5,-7,9,-11};
cout<
f(a,6)<
intf(inta[],intsize)
{inti,t=1;
for(i=0;
size;
i++)
if(a[i]>
0)t*=a[i];
returnt;
5.intf(int[][3],int,int);
{inta[][3]={0,1,2,3,4,5,6,7,8};
f(a,3,3)<
intf(inta[][3],introw,intcol)
{inti,j,t=1;
for(i=0;
row;
for(j=0;
col;
{a[i][j]++;
if(i==j)t*=a[i][j];
returnt;
6.#include<
voidtest1(int*a1)
{a1=newint(5);
*a1="
*a1<
voidtest2(int*&
a2)
{a2=newint(5);
*a2="
*a2<
{int*p=newint
(1);
test1(p);
test1:
*p1="
*p<
test2(p);
test2:
*p2="
7.#include<
{chars[]="
abccda"
;
inti;
charc;
for(i=1;
(c=s[i])!
='
\0'
;
{switch(c)
{case'
a'
:
%'
continue;
case'
b'
$'
break;
c'
*'
d'
#'
8.#include<
{char*str[]={"
c++"
"
basic"
pascal"
};
char**p;
p=str;
3;
*(p+i)<
9.#include<
{chars1[]="
Fortran"
s2[]="
Foxpro"
char*p,*q;
p=s1;
q=s2;
while(*p&
&
*q)
{if(*p==*q)
*p;
p++;
q++;
10.#include<
string.h>
voidmain()
{charstr[][10]={"
vb"
},s[10];
strcpy(s,(strcmp(str[0],str[1])<
0str[0]:
str[1]));
if(strcmp(str[2],s)<
0)strcpy(s,str[2]);
s<
4.2思考题
1.数组说明语句要向编译器提供什么信息?
写出一维数组、二维数组说明语句的形式。
2.数组名、数组元素的区别是什么?
归纳一维数组元素地址、元素值不同的表示形式。
有说明
intaa[3],*pa=aa;
使用aa或pa,写出3个以上与aa[2]等价的表达式。
3.要把一维数组inta[n*n]的元素传送到二维数组intb[n][n]中,即在程序中要执行
b[i][j]=a[k];
写出k->
i,j的下标变换公式,并用程序验证之。
4.有以下函数
voidquery()
{int*p;
p=newint[3];
//……
delete[]p;
p=newdouble[5];
//……
出现了编译错误。
请分析错误的原因,并把上述程序补充完整,上机验证你的判断。
5.有以下程序根据输入值,调用函数create建立并初始化动态数组,令a[i]=i。
该程序运行后,主函数不能返回期望值。
请分析程序的错误原因并修改之。
#include<
voidcreate(int*,int);
{int*a,len;
cin>
>
len;
create(a,len);
for(inti=0;
i++)cout<
a[i]<
endl;
delete[]a;
voidcreate(int*ap,intn)
{ap=newint[n];
for(inti=0;
n;
i++)ap[i]=i;
请写出一维数组、二维数组说明语句的形式。
【答案】
数组说明语句要向编译器提供数组名(标识符),数组元素的类型、数组长度(元素的个数)等信息。
一维数组说明语句为:
类型数组名[表达式]
二维数组说明语句为:
类型数组名[表达式1][表达式2]
若有说明
intaa[3],*pa=aa;
请使用aa或pa,写出3个以上与aa[2]等价的表达式。
【答案】
数组名是一个标识符,执行代码中代表数组的地址,即指向数组起始位置的指针;
而数组元素是下标变量,性质相当于普通变量。
对一维数组aa第i个元素的地址可以表示为:
&
aa[i]aa+i;
对一维数组aa第i个元素的值可以表示为:
a[i]*(a+i);
与aa[2]等价的表达式:
*(aa+2)*(&
a[2])*(pa+2)pa[2]
3.要把一维数组inta[m*n]的元素传送到二维数组intb[m][n]中,即在程序中要执行
b[i][j]=a[k];
请写出k→i,j的下标变换公式,并用程序验证。
【答案】
转换公式i=k/nj=k%n
验证程序:
#include<
iostream>
usingnamespacestd;
intmain()
{constintM=3,N=4;
intk,a[M*N]={1,2,3,4,5,6,7,8,9,10,11,12},b[M][N];
inti,j;
cout<
"
arraya:
endl;
for(k=0;
k<
M*N;
k++)
b[k/N][k%N]=a[k];
k++)cout<
a[k]<
'
**Afterconvert**"
arrayb:
for(i=0;
i<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 基础 课后 答案 第四