Untitled Document

三、问答和编程题
1． 本例定义了两个变量，int型的变量ab和指向int型的指针变量var；语句var=&ab;是将ab的地址赋给了var,在下一条语句中，*var 表示var所指单元的内容，即100。然后，将*var+10赋给了变量ab；那么，这时ab的值应该是110。

2．根据运算符的优先级，表达式*--p=*(--p)。所以，先执行--p操作，使指针p向低地址方向移动一个存储单元，指向a[1]。然后用运算符"*"取得该地址所存储的数据，即20。

3．（1）要求把p定义成指向double型的指针变量即可，所以定义语句是：double *p;
（2）要使p指向变量var，即将var的地址赋给指针p，赋值语句为：p=&var;
（3）用scanf函数把读入的数据赋给变量var的语句是：scanf("%lf",&var);由于（2）中已将var的地址赋给了p，所以该语句等价于scanf("%lf",p);

4．程序为：
#include <stdio.h>
int length(char* a);
void main( )
{
int len;
char str[20];
printf("请输入一个字符串：");
scanf("%s",str);
len=length(str);
printf("字符串长度为%d",len);
return;
}
int length(char* a)/*求字符串长度函数*/
{
char *p;
p=a;
int n;
n=0;
while(*p!='\0')
{
n++;
p++;
}
return(n);
}

5．程序为：
#include<iostream.h>
char *strchr( char *string,int letter)
{
while((*string!=letter)&&(*string))
string++;
return string;
}
void main()
{
int tt=1;
while(tt){
char title[64];
cout<<"请输入一字符串：";
cin>>title;
char *p;
cout<<"请输入你想查找的字符: ";
char ch;
cin>>ch;
p=strchr(title,ch);
if(*p)
cout<<"所查字符在字符串中第一次出现的位置为: "<<p-title<<endl;
else
cout<<"在字符串中没有所查字符！"<<endl;
cout<<"do u cunteue!1--counte,0--exit"<<endl;
cin>>tt;
}
}
6．程序为：
#include<string.h>
#include<iostream.h>
char* strstr_rep(char *source,char *old)
{
int i,j,k,loc=-1;
for(i=0;source[i]&&(loc==-1);i++)
for(j=i,k=0;source[j]==old[k];j++,k++)
if(!old[k+1])
loc=i;
if(loc!=-1)
{
for(k=0;old[k];k++);
for(j=loc,i=loc+k;source[i];j++,i++)
source[j]=source[i];
source[i]=NULL;
}
return(source);
}
void main()
{
char a[50];
cout<<"请输入一字符串：";
cin>>a;
char b[30];
cout<<"请输入上字符串的一个子串：";
cin>>b;
cout<<strstr_rep(a,b)<<endl;
}