| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2973 人关注过本帖
标题:[分享] 温故而知新:经典指针习题精选
只看楼主 加入收藏
hackerjiang
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:地球
等 级:版主
威 望:3
帖 子:780
专家分:111
注 册:2007-4-27
结帖率:100%
收藏
 问题点数:0 回复次数:15 
[分享] 温故而知新:经典指针习题精选

1:有以下语句,则对a数组引用不正确的是(0<=i<=9) ( )
int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;
A) a[p-a] B) *(&a[i]) C) p[i] D) *(*(a+i))

2:有如下程序
int a[10]={1,2,3,4,5,6,7,8,9,10};
int *p=&a[3],b;
b=p[5];
则b的值是( )
A) 5 B) 6 C) 9 D) 8

3:执行一下程序后,a,b的值分别为( )
main()
{
int a,b,k=4,m=6,*p1=&k,*p2=&m;
a=p1==&m;
b=(*p1)/(*p2)+7;
printf("a=%d\n",a);
printf("b=&d\n",b);
}

A) -1,5 B) 1,6 C) 0,7 D) 4,10

4:程序中对fun函数有如下说明:
void *fun();
此说明的含义是( )
A) fun函数无返回值
B) fun函数的返回值可以是任意的数据类型
C) fun函数的返回值是无值型的指针类型
D) 指针fun指向一个函数,该函数无返回值

5:以下程序的输出结果是( )
prt(int *m,int n)
{
int i;
for(i=0;i<n;i++) m[i]++;
}
main()
{
int a[]={1,2,3,4,5},i;
prt(a,5);
for(i=0;i<5;i++) printf("%d,",a[i]);
}
A)1,2,3,4,5 B)2,3,4,5,6 C)3,4,5,6,7 D)2,3,4,5,1

6:有以下函数
fun(char *a,char *b)
{
while((*a!='\0')&&(*b!='\0')&&(*a==*b))
{a++;b++;}
return(*a-*b);
}
该函数的功能是( )
A)计算A和B所指字符串的长度之差。
B)将B所指字符串复制到A所指的字符串中。
C)将B所指字符串连接到A所指的字符串后面。
D)比较A和B所指字符串的大小。

7:以下程序输出的结果
void f(int *x,int *y)
{
int t;
t=*x;*x=*y;*y=t;
}
main()
{
int a[8]={1,2,3,4,5,6,7,8},i,*p,*q;
p=a;q=&a[7];
while(p<q)
{f(p,q);p++;q++;}
for(i=0;i<8;i++)
printf("%d,",a[i]);
}

A)8,2,3,4,5,6,7,1 B)5,6,7,8,1,2,3,4 C)1,2,3,4,5,6,7,8 D)8,7,6,5,4,3,2,1

编程题
编制一个字符替换函数,实现已知字符串s中,所有属于s1中的字符都用s2中对应字符代替。




终于写完了,答案以后公布,呵呵

[此贴子已经被作者于2007-8-13 20:26:26编辑过]

搜索更多相关主题的帖子: 习题 温故而知新 指针 经典 分享 
2007-08-13 20:25
coachard
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:1251
专家分:0
注 册:2007-8-12
收藏
得分:0 
为什么代码没办法粘贴上来???
总觉得这个编辑器在winme下使用有问题!!!

[此贴子已经被作者于2007-8-13 21:42:34编辑过]



p9NO2nse.rar (632 Bytes) [分享] 温故而知新:经典指针习题精选


偶学编程,也许本身就是一个错。。。
2007-08-13 21:00
leeldy
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2007-8-2
收藏
得分:0 

1.d
2.c
3.c
4.d
5.b
6.d-猜滴

7.不知道做,看不懂题目
如果是根据p,q的地址来判断while是否执行的话,p指向a[0],q指向a[7],p的地址本身就小于q的地址,按照p++;q++来执行,我认为这是一个死循环

如果是p++,q--的话,我选d

8.写得有点弱智,我就这水平,win-tc测试通过

int main(void)
{
char *s,*s1,*s2;
void funs(char *s,char *s1,char *s2);
s="abcdefabcdef";
s1="acf";
s2="123";
printf("%s\n",s);
printf("%s\n",s1);
printf("%s\n",s2);

funs(s,s1,s2);
printf("%s\n",s);
getch();
return(0);
}
void funs(char *s,char *s1,char *s2)
{
int i,j;
for(i=0;i<strlen(s);i++)
{
for(j=0;j<strlen(s1);j++)if(s[i]==s1[j])s[i]=s2[j];
}
}


↑↑↑↑↑↑↑↑如果我错了,请改正我的错误↑↑↑↑↑↑↑↑

2007-08-13 21:24
lijy520
Rank: 2
等 级:论坛游民
帖 子:119
专家分:42
注 册:2007-8-8
收藏
得分:0 
1:D 2:C 3:C 4:D 5:B 6:D 7:D

[此贴子已经被作者于2007-8-13 22:29:36编辑过]


2007-08-13 21:29
leeldy
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2007-8-2
收藏
得分:0 
如果是a=p1=&m,那就错了,a是int型,p1是指针型,类型不同不能用赋值符号

a=p1==&m意思是对右边进行逻辑判断,如果p1等于&m,返回1,否则返回0

↑↑↑↑↑↑↑↑如果我错了,请改正我的错误↑↑↑↑↑↑↑↑

2007-08-13 21:37
hackerjiang
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:地球
等 级:版主
威 望:3
帖 子:780
专家分:111
注 册:2007-4-27
收藏
得分:0 
以下是引用lijy520在2007-8-13 21:29:01的发言:
第3题:“a=p1==&m”是什么意思? 还是a=p1=&m/

呵呵,自己琢磨,就当这是考试吧。相信自己哦!


(づ ̄ 3 ̄)づ
2007-08-13 21:38
lijy520
Rank: 2
等 级:论坛游民
帖 子:119
专家分:42
注 册:2007-8-8
收藏
得分:0 

知道了
呵呵
怎么有人也做了

2007-08-13 21:40
hackerjiang
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:地球
等 级:版主
威 望:3
帖 子:780
专家分:111
注 册:2007-4-27
收藏
得分:0 
前面几位仁兄的答案相差很大啊

再仔细做做哦!

呵呵

(づ ̄ 3 ̄)づ
2007-08-13 21:43
coachard
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:1251
专家分:0
注 册:2007-8-12
收藏
得分:0 

#include <string.h>

void change(char *strTotal,char *str1,char *str2)
{
int i;
char *flag;
for(i=0;i<strlen(strTotal);i++)
if(flag=strchr(str1,strTotal[i])) strTotal[i]=str2[flag-str1];
return;
}

刚刚题目看错了,再贴一个


偶学编程,也许本身就是一个错。。。
2007-08-13 21:52
hackerjiang
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:地球
等 级:版主
威 望:3
帖 子:780
专家分:111
注 册:2007-4-27
收藏
得分:0 

因为各种原因,答案可能要月底才帖出(我近段时间有点事忙)。

刚刚看了前面几位仁兄的编程题的答案,好象有点问题哦!(不敢肯定,没仔细看,呵呵,边见怪啊)。

还有,前面几位仁兄的单选答案差别好大啊

呵呵,总之——细心 + 耐烦 = 正确答案!

那我就先GO啦````月底见!


(づ ̄ 3 ̄)づ
2007-08-13 22:10
快速回复:[分享] 温故而知新:经典指针习题精选
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017449 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved