程序设计基础人民邮电出版社答案第10章指针Word文档格式.docx
《程序设计基础人民邮电出版社答案第10章指针Word文档格式.docx》由会员分享,可在线阅读,更多相关《程序设计基础人民邮电出版社答案第10章指针Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
printf("
*(p+3));
A)67B)0C)随机值D)'
0'
二、阅读程序写结果
1.
#include<
stdio.h>
voidmain()
{
inta[]={2,4,6,8,10};
inty=1,x,*p;
p=&
a[1];
for(x=0;
x<
3;
x++)
y+=*(p+x);
y);
答案:
19
2.
{char*s="
121"
;
intk=0,a=0,b=0;
do
{k++;
if(k%2==0){a=a+s[k]-'
continue;
b=b+s[k]-'
a=a+s[k]-'
}while(s[k+1]);
k=%da=%db=%d\n"
k,a,b);
k=2a=4b=3
3.
intb=2;
intfunc(int*a)
{b+=*a;
return(b);
}
inta=2,res=2;
res+=func(&
b);
res);
6
4.
intsub(int*s);
{inti,k;
for(i=0;
i<
4;
i++)
{k=sub(&
i);
%2d"
k);
\n"
);
intsub(int*s)
{staticintt=0;
t=*s+t;
returnt;
}
0136
三、程序填空
1.以下程序先输入数据给数组a赋值,然后按照从a[0]到a[4]的顺序输出各元素的值,最后再按照从a[4]到a[0]的顺序输出各元素的值。
请填空。
{inta[5];
inti,*p;
p=a;
5;
scanf("
%d"
p++);
(1)
i++,p++)
%d"
(2)
for(i=4;
i>
=0;
i--,p--)
(1)p=a;
(2)p=a+4;
或p--
2.以下程序的功能是:
将无符号八进制数字构成的字符串转换为十进制整数。
例如,
输入的字符串为:
556,则输出十进制数366。
#include"
stdio.h"
{char*p,s[6];
intn;
gets(p);
n=*p-'
while(____
(2)___!
='
\0'
)n=n*8+*p-'
n);
}
(1)p=s;
(2)++p
3.以下程序调用findmax函数求数组中最大的元素在数组中的下标,请填空。
voidfindmax(int*s,intn,int*k)
{intp;
for(p=0,*k=p;
p<
n;
p++)
if(s[p]>
s[*k])
(1);
{inta[10],i,k;
10;
i++)scanf("
&
a[i]);
(2);
%d,%d\n"
k,a[k]);
(1)*k=p
(2)findmax(a,10,&
k)
4.下面程序的功能是将字符串b复制到字符串a中,请填空。
voids(char*s,char*t)
{while(
(1))
(2);
*s=’\0’;
voidmain()
{chara[20],b[10];
%s"
b);
s((3));
puts(a);
(1)*t!
或*t
(2)*(s++)=*(t++)或*s++=*t++
(3)a,b
5.下面程序是将p指向的常字符串中大写字母取出依次放到b数组中,小写字母取出依次放在a数组中。
{chara[80],b[80],*p="
lYoOvUe"
inti=0,j=0;
while(
(1))
{if(*p>
a'
&
*p<
z'
)
(2);
elseb[j++]=*p;
p++;
(3);
puts(b);
(1)*p!
或*p
(2)a[i++]=*p
(3)a[i]='
b[j]='
或a[i]=b[j]='
四、程序问答
#include
<
#include<
string.h>
voidmain()
{
char
b1[8]="
abcdefg"
b2[8],*pb=b1+3;
while
(--pb>
=b1)
strcpy(b2,pb);
strlen(b2));
问题1:
该程序运行结果如何?
问题2:
当while循环结束时,pb指向了哪里?
(1)7
(2)首地址
voidswap(int*pt1,int*pt2)
{inttemp;
temp=*pt1;
*pt1=*pt2;
*pt2=temp;
voidexchange(int*q1,int*q2,int*q3)
{if(*q1<
*q2)swap(q1,q2);
if(*q1<
*q3)swap(q1,q3);
if(*q2<
*q3)swap(q2,q3);
{inta,b,c;
%d%d%d"
a,&
b,&
c);
exchange(&
%d,%d,%d\n"
a,b,c);
问题1:
程序运行时若输入了1296,会输出什么结果?
问题2:
程序的功能是什么?
问题3:
若把swap函数体中的所有*pt1改为pt1,*pt2改为pt2,结果会如何?
请分析原因。
(1)12,9,6
(2)从大到小排序(降序排列)
(3)结果仍是12,9,6,但此处输出结果不是排序后的结果,输出的是输入顺序的数字。
voidfun1(char*s,char*c)
{char*p,*q;
for(p=s;
*p!
if(*p==*c)
{for(q=p;
*q!
q++)
*q=*(q+1);
p--;
{charstr[20]="
attactet"
c1='
t'
fun1(str,&
c1);
puts(str);
程序运行结果?
函数fun1的功能是什么?
如果将函数fun1中的语句p--;
去掉,程序结果又怎样?
分析该语句的作用。
(1)aace
(2)把字符数组中的t删除掉
(3)atace
五、程序改错
1.输入5个字符串,输出其中最大的字符串。
{inti;
charstr[80],max[80];
**********found*************
str);
**********found*************
max=str;
for(i=1;
{scanf("
str);
if(max<
str)
max=str;
maxis%s\n"
max);
(1)scanf("
(2)strcpy(max,str);
(3)strcmp(max,str);
(4)strcpy(max,str);
2.下面程序将给定字符串循环左移1位,首字符移动到字符串的末尾。
如输入"
abcde"
,输出结果为bcdea。
voidmove1(char*s)
{char*p,t;
p=s+1;
*********found********
t=s;
while(*p)
*********found*********
{*p=*(p-1);
p++;
*******found********
*p=t;
{char*p,str[10]="
move1(str);
%s\n"
(1)t=*s;
(2)*(p-1)=*p;
(3)*(p-1)=t;
3.以下程序用来删除字符串s中所有空格字符,如输入"
thisisatest!
"
,输出结果为:
thisisatest!
{chars[80],*p,*q;
*********found*********
s);
for(p=q=s;
if(*p!
'
**********found**********
{q=p;
q++;
*********found************
*(q-1)='
puts