想找一些C++编程例题

 我来答
小子神奇
2008-05-15 · 超过15用户采纳过TA的回答
知道答主
回答量:95
采纳率:0%
帮助的人:0
展开全部
一:选择题
1. 下面函数的功能是:( )
int fun(char *x)
{
char *y=x;
while(*y++){};
return y-x-1;
}
a. 求字符串的长度
b. 求字符串存放位置
c. 比较两个字符串的大小
d. 将字符串x连接到字符串y后面
2. 若有以下说明和语句,且0<i<10,则( )是对数组元素的错误引用。
int a[ ]={1,2,3,4,5,6,7,8,9,0},*p,i;
p=a;
a. *(a+i)
b. a[p-a]
c. p+i
d. *(&a[i])
3. 下面程序的输出是:( )
#include <stdio.h>
void main( )
{
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
printf("%d", *(p+2));
}
a. 3
b. 4
c. 1
d. 2
4. 若有以下定义和语句,且0<i<10,则对数组元素地址的正确表示是:( )
int a[ ]={1,2,3,4,5,6,7,8,9,0},*p,i;
p=a;
a. &(a+1)
b. a++
c. *p
d. &p[i]
5.已知:int a,x=1;则下面正确的赋值语句是:( )
a. a=(a[1]+a[2])/2;
b. a=(a[1]+a[2])/2;
c. a=x+2;
d. a="good";
6.已知:int a[]={1,2,3,4,5,6},*p=a;下面表达式中其值为5的是:( )
a.p+=3;*(p++);
b.p+=5;*p++ ;
c.p+=4;*++p;
d.p+=4;++*p;
7. 若有以下语句,且0<=k<6,则正确表示数组元素地址的语句是( )
int x[]={1,9,10,7,32,4},*ptr=x,k=1;
a.x++
b.&ptr
c.&ptr[k]
d.&(x+1)
8.若有说明:int i,j=7,*p;p=&i;则与i=j等价的语句是( )
a.i=*p;
b.*p=*&j;
c.i=&j
d.i=**p;
9. 设p1和p2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是( )
a.k=*p1+*p2;
b.p2=k;
c.p1=p2;
d.k=*p1*(*p2);
10. 设有以下函数定义,则该函数返回的值是( )
int * fun(int a)
{
int *t,n;
n=a;t=&n;
return t;
}
a.一个不可用的存储单元地址值
b.一个可用的存储单元地址值
c.n中的值
d.形参a中的值

二:填空题
1、 给出以下程序的输出结果是
#include<stdio.h>
void main()
{
int *v,b;
v=&b; b=100; *v+=b;
printf("%d\n",b);
}
2、 说明语句"int (* p)();"的含义是
3、 已知函数说明语句:void *fun();则它的含义是
4、 已知:int i;char *s="a\045+045\'b";执行语句"fot(i=0;*s++;i++);"之后,变量i的结果是
5、下面的程序是求两个整数之和,并通过形参传回结果。
int add(intx,int y, z)
{ =x+y;}
6、给出以下程序的输出结果是
void fun(int *x)
{ printf("%d\n",++*x)'; }
main()
{
int a=25;
fun(&a);
}
7、给出以下程序运行的结果
#include <stdio.h>
void main( )
{
int a[ ]={1,2,3,4,5};
int x, y, *p;
p=&a[0];
x=*(p+2);
y=*(p+4);
printf("*p=%d,x=%d,y=%d\n",*p,x,y);
return;
}
8、给出以下程序运行的结果
#include<iostream.h>
void callbyval(int a,int b,int c)
{
a=3;b=2;c=1;
}
void callbypointer(int* a,int* b,int* c)
{
*a=3;*b=2;*c=1;
}
void callbyreference(int& a,int& b,int& c)
{
a=1;b=2;c=3;
}
void main()
{
int a=1,b=2,c=3;
int& a1=a;
int& b1=a;
int& c1=a;
callbyval(a,b,c);
cout<<a<<b<<c<<endl;
callbypointer(&a,&b,&c);
cout<<a<<b<<c<<endl;
callbyreference(a1,b1,c1);
cout<<a<<b<<c<<endl;
}
9、给出以下程序运行的结果
#include<iostream.h>
void ast(int x,int y,int *cp,int *dp)
{
*cp=x*y;
*dp=x%y;
}
void main()
{
int a,b,c,d;
a=2; b=3;
ast(a,b,&c,&d);
cout<<c<<d<<endl;
}
10、给出以下程序运行的结果
#include <stdio.h>
void main( )
{
int a=10,b=0,*pa, *pb;
pa=&a; pb=&b;
printf("%d,%d\n",a,b);
printf("%d,%d\n",*pa,*pb);
a=20; b=30;
*pa=a++; *pb=b++;
printf("%d,%d\n",a,b);
printf("%d,%d\n",*pa,*pb);
(*pa)++;
(*pb)++;
printf("%d,%d\n",a,b);
printf("%d,%d\n",*pa,*pb);
}

三:简答和编程题
1. 判断执行下面的语句后,ab的值变为多少
int *var, ab;
ab=100;
var=&ab;
ab=*var+10;

2.已知指针p的指向下图所示,则表达式*--p的值是多少?(这里,a[0],a[1],a[2]……仅作为连续存储单元的代号,a[0]在低地址,a[1]在高地址)。

3. 有定义:double var;那么,
a) 使指针p可以指向double型变量的定义语句是什么?
b) 使指针p指向变量var的赋值语句是什么?
c) 通过指针p给变量var读入数据的scanf函数调用语句是什么?

4.写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。

5.编程实现:从键盘输入一任意字符串,然后,输入所要查找字符。存在则返回它第一次在字符串中出现的位置;否则,输出"在字符串中查找不到!" 。并实现对同一字符串,能连续输入所要查找的字符。

6.编程实现:从字符串中删除子字符串。从键盘输入一字符串,然后,输入要删除的子字符串。最后输出删除子串后的新字符串。

一:选择题:

1.A
2.C
3.A
4.D
5.C
6.A
7.C
8.B
9.B
10.A
二:填空题
1. 200
2. p是一个指向函数的指针,该函数的返回值是一个整型
3. 函数fun的返回值是一个通用型的指针
4. 8
由于for语句就是求字符串的长度,所以可以知道i的结果是8
5. (1)int * (2)*z
6. 26
7. *p=1 x=3 y=5
8. 123
321
321
9. 6 2
10. 10,0
10,0
21,31
21,31
22,32
22,32
三、问答和编程题

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;
}
--
2022-12-05 广告
图形化编程简单理解为用积木块形式编程,scratch和python也是其中的一种,属于入门级编程,以其简单生动的画面获得无数学生的喜爱,深圳市创客火科技有限公司是一家做教育无人机的公司,旗下有编程无人机,积木无人机及室内外编队,每款飞机含有... 点击进入详情页
本回答由--提供
兆霈糜雅韶
2019-02-15 · TA获得超过3851个赞
知道大有可为答主
回答量:3077
采纳率:25%
帮助的人:385万
展开全部
一:选择题
1.
下面函数的功能是:(

int
fun(char
*x)
{
char
*y=x;
while(*y++){};
return
y-x-1;
}
a.
求字符串的长度
b.
求字符串存放位置
c.
比较两个字符串的大小
d.
将字符串x连接到字符串y后面
2.
若有以下说明和语句,且0<i<10,则(
)是对数组元素的错误引用。
int
a[
]={1,2,3,4,5,6,7,8,9,0},*p,i;
p=a;
a.
*(a+i)
b.
a[p-a]
c.
p+i
d.
*(&a[i])
3.
下面程序的输出是:(

#include
<stdio.h>
void
main(
)
{
int
a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
printf("%d",
*(p+2));
}
a.
3
b.
4
c.
1
d.
2
4.
若有以下定义和语句,且0<i<10,则对数组元素地址的正确表示是:(

int
a[
]={1,2,3,4,5,6,7,8,9,0},*p,i;
p=a;
a.
&(a+1)
b.
a++
c.
*p
d.
&p[i]
5.已知:int
a,x=1;则下面正确的赋值语句是:(

a.
a=(a[1]+a[2])/2;
b.
a=(a[1]+a[2])/2;
c.
a=x+2;
d.
a="good";
6.已知:int
a[]={1,2,3,4,5,6},*p=a;下面表达式中其值为5的是:(

a.p+=3;*(p++);
b.p+=5;*p++
;
c.p+=4;*++p;
d.p+=4;++*p;
7.
若有以下语句,且0<=k<6,则正确表示数组元素地址的语句是(

int
x[]={1,9,10,7,32,4},*ptr=x,k=1;
a.x++
b.&ptr
c.&ptr[k]
d.&(x+1)
8.若有说明:int
i,j=7,*p;p=&i;则与i=j等价的语句是(

a.i=*p;
b.*p=*&j;
c.i=&j
d.i=**p;
9.
设p1和p2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是(

a.k=*p1+*p2;
b.p2=k;
c.p1=p2;
d.k=*p1*(*p2);
10.
设有以下函数定义,则该函数返回的值是(

int
*
fun(int
a)
{
int
*t,n;
n=a;t=&n;
return
t;
}
a.一个不可用的存储单元地址值
b.一个可用的存储单元地址值
c.n中的值
d.形参a中的值
二:填空题
1、
给出以下程序的输出结果是
#include<stdio.h>
void
main()
{
int
*v,b;
v=&b;
b=100;
*v+=b;
printf("%d\n",b);
}
2、
说明语句"int
(*
p)();"的含义是
3、
已知函数说明语句:void
*fun();则它的含义是
4、
已知:int
i;char
*s="a\045+045\'b";执行语句"fot(i=0;*s++;i++);"之后,变量i的结果是
5、下面的程序是求两个整数之和,并通过形参传回结果。
int
add(intx,int
y,
z)
{
=x+y;}
6、给出以下程序的输出结果是
void
fun(int
*x)
{
printf("%d\n",++*x)';
}
main()
{
int
a=25;
fun(&a);
}
7、给出以下程序运行的结果
#include
<stdio.h>
void
main(
)
{
int
a[
]={1,2,3,4,5};
int
x,
y,
*p;
p=&a[0];
x=*(p+2);
y=*(p+4);
printf("*p=%d,x=%d,y=%d\n",*p,x,y);
return;
}
8、给出以下程序运行的结果
#include<iostream.h>
void
callbyval(int
a,int
b,int
c)
{
a=3;b=2;c=1;
}
void
callbypointer(int*
a,int*
b,int*
c)
{
*a=3;*b=2;*c=1;
}
void
callbyreference(int&
a,int&
b,int&
c)
{
a=1;b=2;c=3;
}
void
main()
{
int
a=1,b=2,c=3;
int&
a1=a;
int&
b1=a;
int&
c1=a;
callbyval(a,b,c);
cout<<a<<b<<c<<endl;
callbypointer(&a,&b,&c);
cout<<a<<b<<c<<endl;
callbyreference(a1,b1,c1);
cout<<a<<b<<c<<endl;
}
9、给出以下程序运行的结果
#include<iostream.h>
void
ast(int
x,int
y,int
*cp,int
*dp)
{
*cp=x*y;
*dp=x%y;
}
void
main()
{
int
a,b,c,d;
a=2;
b=3;
ast(a,b,&c,&d);
cout<<c<<d<<endl;
}
10、给出以下程序运行的结果
#include
<stdio.h>
void
main(
)
{
int
a=10,b=0,*pa,
*pb;
pa=&a;
pb=&b;
printf("%d,%d\n",a,b);
printf("%d,%d\n",*pa,*pb);
a=20;
b=30;
*pa=a++;
*pb=b++;
printf("%d,%d\n",a,b);
printf("%d,%d\n",*pa,*pb);
(*pa)++;
(*pb)++;
printf("%d,%d\n",a,b);
printf("%d,%d\n",*pa,*pb);
}
三:简答和编程题
1.
判断执行下面的语句后,ab的值变为多少
int
*var,
ab;
ab=100;
var=&ab;
ab=*var+10;
2.已知指针p的指向下图所示,则表达式*--p的值是多少?(这里,a[0],a[1],a[2]……仅作为连续存储单元的代号,a[0]在低地址,a[1]在高地址)。
3.
有定义:double
var;那么,
a)
使指针p可以指向double型变量的定义语句是什么?
b)
使指针p指向变量var的赋值语句是什么?
c)
通过指针p给变量var读入数据的scanf函数调用语句是什么?
4.写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
5.编程实现:从键盘输入一任意字符串,然后,输入所要查找字符。存在则返回它第一次在字符串中出现的位置;否则,输出"在字符串中查找不到!"
。并实现对同一字符串,能连续输入所要查找的字符。
6.编程实现:从字符串中删除子字符串。从键盘输入一字符串,然后,输入要删除的子字符串。最后输出删除子串后的新字符串。
一:选择题:
1.A
2.C
3.A
4.D
5.C
6.A
7.C
8.B
9.B
10.A
二:填空题
1.
200
2.
p是一个指向函数的指针,该函数的返回值是一个整型
3.
函数fun的返回值是一个通用型的指针
4.
8
由于for语句就是求字符串的长度,所以可以知道i的结果是8
5.
(1)int
*
(2)*z
6.
26
7.
*p=1
x=3
y=5
8.
123
321
321
9.
6
2
10.
10,0
10,0
21,31
21,31
22,32
22,32
三、问答和编程题
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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ivaniren
2008-05-15 · TA获得超过1472个赞
知道小有建树答主
回答量:1088
采纳率:0%
帮助的人:0
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式