函数及指针练习题

函数及指针练习题
函数及指针练习题

函数练习题

【1.54】对函数形参的说明有错误的是____。

A) int a(float x[],int n) B) int a(float *x,int n)

C) int a(float x[10],int n) D) int a(float x,int n)

【1.55】如果一个变量在整个程序运行期间都存在,但是仅在说明它的函数内是可见的,这个变量的存储类型应该被说明为____。

A)静态变量B) 动态变量C) 外部变量D) 内部变量

【1.56】在一个C源程序文件中,?若要定义一个只允许在该源文件中所有函数使用的变量,则该变量需要使用的存储类别是。

A) extern B) register C) auto D) static

【1.57】在C语言中,函数的数据类型是指____。

A)函数返回值的数据类型B) 函数形参的数据类型

C) 调用该函数时的实参的数据类型D) 任意指定的数据类型

【1.58】已知如下定义的函数:

fun1(a)

{ printf("\n%d",a);

}

则该函数的数据类型是____。

A)与参数a的类型相同B) void型

C) 没有返回值D) 无法确定

【1.59】定义一个函数实现交换x和y的值,并将结果正确返回。能够实现此功能的是____。

A) swapa(int x,int y) B) swapb(int *x,int *y)

{ int temp;{ int temp;

temp=x;x=y;y=temp;temp=x;x=y;y=temp;

} }

C) swapc(int *x,int *y) D) swapd(int *x,int *y)

{ int temp;{ int *temp;

temp=*x;*x=*y;*y=temp;temp=x;x=y;y=temp;

} }

【1.60】求一个角的正弦函数值的平方。能够实现此功能的函数是____。

A) sqofsina(x)

float x;

{ return(sin(x)*sin(x));

}

B) double sqofsinb(x)

float x;

{ return(sin((double)x)*sin((double)x));

}

C) double sqofsinc(x)

{ return(((sin(x)*sin(x));

}

D) sqofsind(x)

float x;

{ return(double(sin(x)*sin(x)));

【1.61】一个函数内有数据类型说明语句如下:

double x,y,z(10);

关于此语句的解释,下面说法正确的是____。

A) z是一个数组,它有10个元素。

B) z是一个函数,小括号内的10是它的实参的值。

C) z是一个变量,小括号内的10是它的初值。

D)语句中有错误。

【1.62】已知函数定义如下:

float fun1(int x,int y)

{ float z;

z=(float)x/y;

return(z);

}

主调函数中有int a=1,b=0;可以正确调用此函数的语句是____。

A) printf("%f",fun1(a,b));B) printf("%f",fun1(&a,&b));

C) printf("%f",fun1(*a,*b));D)调用时发生错误

【1.63】下面函数的功能是____。

a(s1,s2)

char s1[],s2[];

{ while(s2++=s1++) ;

}

A)字符串比较B) 字符串复制C) 字符串连接D) 字符串反向

【1.64】在下列结论中,只有一个是错误的,它是。

A) C语言允许函数的递归调用

B) C语言中的continue语句,可以通过改变程序的结构而省略

C) 有些递归程序是不能用非递归算法实现的

D) C语言中不允许在函数中再定义函数

指针练习题

1.若有以下定义,则对a数组元素的正确引用是_________.

int a[5],*p=a;

a)*&a[5] b)a+2 c)*(p+5) d)*(a+2)

2.若有定义:int a[2][3],则对a数组的第i行j列元素地址的正确引用为______.

a)*(a[i]+j) b)(a+i) c)*(a+j) d)a[i]+j

3.若有以下定义,则p+5表示_______.

int a[10],*p=a;

a)元素a[5]的地址b)元素a[5]的值

c)元素a[6]的地址d)元素a[6]的值

4.下面程序段的运行结果是_________.

char *s="abcde";

s+=2;printf("%d",s);

a)cde b)字符'c' c)字符'c'的地址d)无确定的输出结果

5.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确

执行的赋值语句是________.

a)c=*p1+*p2; b)p2=c c)p1=p2 d)c=*p1*(*p2);

6.以下正确的程序段是_________.

a)char str[20]; b)char *p;

scanf("%s",&str); scanf("%s",p);

c)char str[20]; d)char str[20],*p=str;

scanf("%s",&str[2]); scanf("%s",p[2]);

7.若有说明语句

char a[]="It is mine";

char *p="It is mine";

则以下不正确的叙述是________.

a)a+1表示的是字符t的地址

b)p指向另外的字符串时,字符串的长度不受限制

c)p变量中存放的地址值可以改变

d)a中只能存放10个字符

8.下面程序的运行结果是_______.

#include

#include

main()

{

char *s1="AbDeG";

char *s2="AbdEg";

s1+=2;s2+=2;

printf("%d\n",strcmp(s1,s2));

}

a)正数b)负数c)零d)不确定的值

9.下面程序的运行结果是_______.

#include

#include

fun(char *w,int n)

{char t,*s1,*s2;

s1=w;s2=w+n-1;

while(s1

}

main()

{char *p;

p="1234567";

fun(p,strlen(p));

puts(p);

}

a)7654321 b)1714171 c)1711717 d)7177171

10.变量的指针,其含义是指该变量的_________.

a)值b)地址

c)名d)一个标志

11.若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是_____.

a)a,point,*&a b)&*a,&a,*point

c)*&point,*point,&a d)&a,&*point ,point

12.若有说明;int *p,m=5,n;以下正确的程序段的是________.

a)p=&n; b)p=&n;

scanf("%d",&p); scanf("%d",*p);

c)scanf("%d",&n); d)p=&n;

*p=n; *p=m;

C指针函数习题

C++指针函数习题 一、选择题 1.以下程序的运行结果是()。 sub(int x, int y, int *z) { *z=y-x; } void main() { int a,b; sub(10,5,&a); sub(7,a,&b); cout< #include<>

C++程序设计实验七_参考答案

广东金融学院实验报告 课程名称:C++程序设计 实验编号 实验7数组与指针练习系别参考答案及实验名称 姓名学号班级 实验地点新电403实验日期2011-11-24实验时数4 指导教师曲政同组其他成员无成绩 一、实验目的及要求 1.学习C/C++数组和指针的概念和使用方法。 2.练习C++/CLI托管数组的创建方法和元素访问方法。 二、实验环境及相关情况(包含使用软件、实验设备、主要仪器及材料等) 硬件设备:联网的个人计算机 操作系统:Windows XP 编译系统:Visual Studio2005

三、实验内容及步骤(包含简要的实验步骤流程) 1.内容和步骤 ⑴仔细阅读本课件的知识点和例题,努力理解其中的文字阐述和源代码,必要时可将源代码拷入Visual Studio2005生成的C++/CLR框架编译和运行,将运行结果与源代码对照,加深对C/C++数组和指针的理解。 ⑵在理解本课件内容的基础上,编写C/C++程序实现下列文字描述: a.声明一个int型变量x,并赋初值3; b.打印x的值; c.打印x的地址; d.声明一个指向int的指针p,并让其指向变量x; e.打印p所指变量的值 f.打印p的值; g.声明一个有10个元素的一维本地整型数组A,并为其赋初值0~9; h.在一个循环中打印A的所有元素的值; i.打印A的值; j.打印A的第一个元素的地址; k.声明一个指向int的指针q,并让其指向A的第一个元素; l.在一个循环中通过q后跟下标,打印出A的所有元素的值; m.在一个循环中通过q加上循环变量和取值运算,打印出A的所有元素的值; n.在一个循环中通过q的增量和取值运算,打印出A的所有元素的值; o.在一个循环中通过q的负增量,反序打印出A的所有元素的值; p.声明一个int型指针r,在堆中创建一个int型变量,为该变量赋初值3,并将该变量的地址赋给该指针,打印出该变量的值,然后删除该变量。 q.声明一个本地类Point(可以用包含2个int型变量和一个有参数构造函数的结构体表示)的指针s,在堆中创建一个Point类的对象,调用构造函数为该对象的两个数据成员赋初值3和4,并将该对象的地址赋给该指针,打印两个数据成员的值,然后删除该对象。 r.声明一个int型指针t,在堆中创建一个3个元素的int类型数组并将该数组的首地址赋给该指针,为三个数组元素分别赋值3、4、5,在一个循环中打印出所有元素的值,然后删除该数组。 s.声明一个本地类Point类的指针u,在堆中创建一个3个元素的Point类的对象数组(需在Point 中添加无参数构造函数)并将数组的首地址赋给该指针,为三个数组元素分别赋值(1,2)、(3,4)、(5,6),在一个循环中打印该数组所有元素分量的值,然后删除该数组。 t.用基本语法声明并创建一个10个元素的一维托管整型数组B,并在一个循环中为元素赋值0~9; u.在另一个循环中打印B所有元素的值。 v.用初值表方式声明并创建一个10个元素的一维托管整型数组C,并为其元素赋初值10~19; w.在一个循环中打印C所有元素的值。 x.用数组C为数组B赋值。 y.在一个循环中打印B和C所有元素的值。 2.提示和要求 ⑴首先将上面的文字描述拷入Visual Studio2005生成的C++/CLR框架,在每条文字描述之前加“//”将其变为注释,并在其下留一个空行准备编写对应的程序。 ⑵对应于逐条文字描述,在其下编写程序(可能是一个或一组语句),每编写一条文字描述对应的程序,就编译(运行)一次,以保证语法和算法的正确性。 ⑶当全部文字描述所对应的程序编写完成,并编译、运行正确,将文字描述和源代码拷入实验报告。 ⑷对C/C++的数组和指针做简要总结。

实验七EXCEL 公式与函数

实验七EXCEL公式与函数 一﹑实验目的 1熟练掌握Excel中公式的应用。 2熟练掌握Excel中函数的应用。 二﹑基本知识 Excel具有强大的计算和处理数据功能。在工作表中无论输入简单的公式还是复杂的公式,应用内部函数,在瞬间得到计算结果,为用户估算和分析数据提供结果和解决方案。 三﹑实验内容 1打开工作簿文件table.xls,将下列要求处理数据表格。 表7.1 职工号姓名入公司时间基本工资补贴 200201宋大纲1991-3-440050 200202黄惠惠1983-6-760030 200203翁光明1986-7-770060 200204钱宝方1999-12-154093 200207周甲红1994-7-570056 200208叶秋阳1997-4-468954 200209方昌霞1988-12-422925 200210张之刚1989-9-555998 200211王胜平1987-7-755455 200212傅海英1989-9-845650 200213骆程琳1986-10-378960 2在工作表中添加一列“工龄”,工龄计算公式:2012-year(入公司时间)。 3在工作表中添加一列“奖励后工资”,奖励办法:基本工资>500者,加200,否则加150。提示:利用IF函数。 4在工作表中添加一列“实发工资”,实发工资=奖励后工资+补贴。 5在D15单元格计算出最低工资值。 6在Sheet3中根据下列已知数据建立表。 表7.2 元亨简单科技产业有限公司2007年销售统计表(万元) 公司名称第一季度第二季度第三季度第四季度 北京分公司256.56240.56195.83310.5 上海分公司185.45205.45172.85250.68 天津分公司150.46180.62140.87215.52 深渊分公司225.55255.45197.68265.56

函数指针

方法 指针函数和函数指针的区别 关于函数指针数组的定义 为函数指针数组赋值 函数指针的声明方法为: 数据类型标志符 (指针变量名) (形参列表); 注1:“函数类型”说明函数的返回类型,由于“()”的优先级高于“*”,所以指针变量名外的括号必不可少,后面的“形参列表”表示指针变量指向的函数所带的参数列表。例如: int func(int x); /* 声明一个函数 */ int (*f) (int x); /* 声明一个函数指针 */ f=func; /* 将func函数的首地址赋给指针f */ 赋值时函数func不带括号,也不带参数,由于func代表函数的首地址,因此经过赋值以后,指针f就指向函数func(x)的代码的首地址。 注2:函数括号中的形参可有可无,视情况而定。 下面的程序说明了函数指针调用函数的方法: 例一、 #include int max(int x,int y){ return(x>y?x:y); } void main() { int (*ptr)(int, int); int a,b,c; ptr=max; scanf("%d%d",&a,&b); c=(*ptr)(a,b); printf("a=%d,b=%d,max=%d",a,b,c); } ptr是指向函数的指针变量,所以可把函数max()赋给ptr作为ptr的值,即把max()的入口地址赋给ptr,以后就可以用ptr来调用该函数,实际上ptr 和max都指向同一个入口地址,不同就是ptr是一个指针变量,不像函数名称那样是死的,它可以指向任何函数,就看你想怎么做了。在程序中把哪个

函数及指针练习题

函数练习题 【1.54】对函数形参的说明有错误的是____。 A) int a(float x[],int n) B) int a(float *x,int n) C) int a(float x[10],int n) D) int a(float x,int n) 【1.55】如果一个变量在整个程序运行期间都存在,但是仅在说明它的函数内是可见的,这个变量的存储类型应该被说明为____。 A)静态变量B) 动态变量C) 外部变量D) 内部变量 【1.56】在一个C源程序文件中,?若要定义一个只允许在该源文件中所有函数使用的变量,则该变量需要使用的存储类别是。 A) extern B) register C) auto D) static 【1.57】在C语言中,函数的数据类型是指____。 A)函数返回值的数据类型B) 函数形参的数据类型 C) 调用该函数时的实参的数据类型D) 任意指定的数据类型 【1.58】已知如下定义的函数: fun1(a) { printf("\n%d",a); } 则该函数的数据类型是____。 A)与参数a的类型相同B) void型 C) 没有返回值D) 无法确定 【1.59】定义一个函数实现交换x和y的值,并将结果正确返回。能够实现此功能的是____。 A) swapa(int x,int y) B) swapb(int *x,int *y) { int temp;{ int temp; temp=x;x=y;y=temp;temp=x;x=y;y=temp; } } C) swapc(int *x,int *y) D) swapd(int *x,int *y) { int temp;{ int *temp; temp=*x;*x=*y;*y=temp;temp=x;x=y;y=temp; } } 【1.60】求一个角的正弦函数值的平方。能够实现此功能的函数是____。 A) sqofsina(x) float x; { return(sin(x)*sin(x)); } B) double sqofsinb(x) float x; { return(sin((double)x)*sin((double)x)); } C) double sqofsinc(x) { return(((sin(x)*sin(x)); } D) sqofsind(x) float x;

【实验指导书】实验7:指针 (1)

(2014~2015学年-第1学期) 1. 理解指针、地址和数组间的关系。 2. 掌握通过指针操作数组元素的方法; 3. 掌握数组名作为函数参数的编程方式。 4. 掌握通过指针操作字符串的方法。 5. 了解掌握使用断点调试程序的方法。 二、实验环境: 操作系统:Window 8 编译环境:CodeBlock 13.02 三、实验要求及内容(根据实验要求,将整个实验过程需要的数据和截屏记录于此,并整理成实验步骤。): 1.设计一个程序计算输入的两个数的和与差,要求自定义一个函数sum_diff(float op1,float op2,float *psum,float *pdiff),其中op1和op2是输入的两个数,*psum和*pdiff是计算得出的和与差。 解: (1)流程图如图1所示: 图1 程序7-1的流程图

图2 实验7-1实验源代码 (3)运行结果(测试用例) 实验7-1运行结果如图3所示 图3 实验7-1运行结果 2. 输入n 个正整数,使用选择法将它们从小到大排序后输出。要求:利用所学指针的内容实现。 提示:在指针这一章所学的冒泡排序算法基础上改写。 解: (1)流程图如图1所示: 图1 程序7-2的流程图

图2 实验7-2实验源代码(3)运行结果(测试用例)实验7-2运行结果如图3所示 图3 实验7-2运行结果

3. 输入10个整数存入数组a ,再输入一个整数x ,在数组a 中查找x ,若找到则输出相应的下标,否则显示“Not found ”。要求定义和调用函数seach(int list[],int n ,int x),在数组list 中查找元素x ,若找到则返回相应的下标,否则返回-1,参数n 代表数组list 中元素的数量。试编写相应程序。 解:(1)流程图如图1 7-3的流程图 (2)源代码 源代码如图2所示

实验7 函数——函数的定义和调用

淮海工学院计算机科学系实验报告书 课程名:《C语言程序设计A 》 题目:实验7 函数 ——函数的定义和调用 班级:软嵌151 学号:2015123349 姓名:陈正宁

1、实验内容或题目 (1)编写函数求一元二次方程的根,并在main主函数中调用该函数。 (2)编写函数fac(int n)求n!,并在main主函数中进行调用,输出6!的值。 (3)写一个判别素数的函数,在主函数中输入一个整数,输出是否为素数的信息。 2、实验目的与要求 (1)要求熟练掌握函数的定义和调用,熟悉函数返回值的使用。 (2)熟悉函数调用的方式和过程。 3、实验步骤与源程序 ⑴实验步骤 (1)、

N

⑵源代码 (1)、 #include #include void root(float a,float b,float c) { float delt; delt=b*b-4*a*c; if(a==0) printf("该方程不是一元二次"); else if(delt>0) printf("x1=%f,x2=%f\n",(-b+sqrt(delt))/(2*a),(-b-sqrt(delt))/(2*a)); else if(delt==0) printf("x1=x2=%f\n",-b/(2*a)); else printf("此方程无实数根\n"); } void main() { float a,b,c; printf("请输入方程的实系数[a b c enter]\n"); scanf("%f %f %f",&a,&b,&c); root(a,b,c); } (2)、 #include long fac (int n) { int i; long f=1; for(i=1;i<=n;i++) f=f*i; return f; } void main() { int n;

指向函数的指针详解

指向函数的指针 函数指针是指指向函数而非指向对象的指针。像其他指针一样,函数指针也指向某个特定的类型。函数类型由其返回类型以及形参表确定,而与函数名无关: bool (*pf)(const string &,const string &); 这个语句将pf声明为指向函数的指针,它所指向的函数带有两个const string &类型的形参和bool 类型的返回值。 注意:*pf两侧的括号是必需的。 1.typedef简化函数指针的定义: 函数指针类型相当地冗长。使用typedef为指针类型定义同义词,可将函数指针的使用大大简化: Typedef bool (*cmpfn)(const string &,const string &); 该定义表示cmpfn是一种指向函数的指针类型的名字。该指针类型为“指向返回bool类型并带有两个const string 引用形参的函数的指针”。在要使用这种函数指针类型时,只需直接使用cmpfcn即可,不必每次都把整个类型声明全部写出来。 2.指向函数的指针的初始化和赋值 在引用函数名但又没有调用该函数时,函数名将被自动解释为指向函数的指针。假设有函数: Bool lengthcompare(const string &,const string &); 除了用作函数调用的左操作数以外,对lengthcompare的任何使用都被解释为如下类型的指针:

bool (*)(const string &,const string &); 可使用函数名对函数指针初始化或赋值: cmpfn pf1=0; cmpfn pf2=lengthcompare; pf1=legnthcompare; pf2=pf1; 此时,直接引用函数名等效于在函数名上应用取地址操作符: cmpfcn pf1=lengthcompare; cmpfcn pf2=lengthcompare; 注意:函数指针只能通过同类型的函数或函数指针或0值常量表达式进行初始化或赋值。 将函数指针初始化为0,表示该指针不指向任何函数。 指向不两只函数类型的指针之间不存在转换: string::size_type sumLength(const string &,const string &); bool cstringCompare(char *,char *); //pointer to function returning bool taking two const string& cmpFcn pf;//error:return type differs pf=cstringCompare;//error:parameter types differ pf=lengthCompare;//ok:function and pointer types match exactly 3.通过指针调用函数 指向函数的指针可用于调用它所指向的函数。可以不需要使用解引用

c语言指针习题及答案69923

指针习题及答案 一.选择题 1.变量的指针,其含义是指该变量的 B 。 A)值B)地址C)名D)一个标志 2.已有定义int k=2;int *ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是 B 。 A)k=*ptr1+*ptr2 B)ptr2=k C)ptr1=ptr2 D)k=*ptr1*(*ptr2) 3.若有说明:int *p,m=5,n;以下程序段正确的是 D 。 A)p=&n ; B)p = &n ; scanf(“%d”,&p); scanf(“%d”,*p); C)scanf(“%d”,&n); D)p = &n ; *p=n ; *p = m ; 4.已有变量定义和函数调用语句:int a=25;print_value(&a);下面函数的输出结果是 D 。 void print_value(int *x) { printf(“%d\n”,++*x); } A)23 B)24 C)25 D)26 5.若有说明:int *p1, *p2,m=5,n;以下均是正确赋值语句的选项是 C 。 A)p1=&m; p2=&p1 ; B)p1=&m; p2=&n; *p1=*p2 ; C)p1=&m; p2=p1 ; D)p1=&m; *p1=*p2 ; 6.若有语句:int *p,a=4;和p=&a;下面均代表地址的一组选项是 D 。 A)a,p,*&a B)&*a,&a,*p C)*&p,*p,&a D)&a,&*p,p 7.下面判断正确的是 C 。 A)char *a=”china”; 等价于char *a; *a=”china” ; B)char str[10]={“china”}; 等价于char str[10]; str[ ]={“china”;} C)char *s=”china”; 等价于char *s; s=”china” ; D)char c[4]=”abc”,d[4]=”abc”; 等价于char c[4]=d[4]=”abc” ; 8.下面程序段中,for循环的执行次数是 C 。 char *s=”\ta\018bc” ; for ( ; *s!=’\0’ ; s++) printf(“*”) ; A)9 B)7 C)6 D)5 9.下面能正确进行字符串赋值操作的是 C 。 A)char s[5]={“ABCDE”}; B)char s[5]={‘A’,’B’,’C’,’D’,’E’}; C)char *s ; s=”ABCDE” ; D)char *s; scanf(“%s”,s) ; 10.下面程序段的运行结果是 C 。 char *s=”abcde” ; s+=2 ; printf(“%d”,s); A)cde B)字符’c’C)字符’c’的地址D)不确定11.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是 B 。 A)c=*p1+*p2 B)p2=c C)p1=p2 D)c=*p1*(*p2) 12.设有程序段:char s[ ]=”china”; char *p ; p=s ;则下面叙述正确的是 D 。A)s和p完全相同

C语言实验习题

实验七:指针程序设计 实验内容 以下均用指针方法编程: 1. 调试下列程序,使之具有如下功能:用指针法输入12个数,然后按每行4个数输出。写出调试过程。 main() { int j,k,a[12],*p; for(j=0;j<12;j++) scanf("%d",p++); for(j=0;j<12;j++) { printf("%d",*p++); if(j%4 == 0) printf("\n"); } } 调试此程序时将a设置为一个"watch",数组a所有元素的值在一行显示出来。调试时注意指针变量指向哪个目标变量。 2. 在主函数中任意输入10个数存入一个数组,然后按照从小到大的顺序输出这10个数,要求数组中元素按照输入时的顺序不能改变位置。 3. 自己编写一个比较两个字符串s和t大小的函数strcomp(s,t),要求s小于t 时返回-1,s等于t?时返回0,s大于t时返回1。在主函数中任意输入4个字符串,利用该函数求最小字符串。 4.调试下列程序,使之具有如下功能:任意输入2个数,调用两个函数分别求: ⑴ 2个数的和, ⑵ 2个数交换值。 要求用函数指针调用这两个函数,结果在主函数中输出。 main() { int a,b,c,(*p)(); scanf("%d,%d",&a,&b); p=sum; *p(a,b,c); p=swap;

*p(a,b); printf("sum=%d\n",c); printf("a=%d,b=%d\n",a,b); } sum(int a,int b,int c) { c=a+b; } swap(int a;int b) { int t; t=a; a=b; b=t; } 调试程序时注意参数传递的是数值还是地址。 5.输入一个3位数,计算该数各位上的数字之和,如果在[1,12]之内,则输出与和数相对应的月份的英文名称,否则输出***。 例如:输入:123 输出:1+2+3=6→ June 输入:139 输出:1+3+9=13→ *** 用指针数组记录各月份英文单词的首地址。 6.任意输入5个字符串,调用函数按从大到小顺序对字符串进行排序,在主函数中输出排序结果。

实验7-2-函数调用

实验7-2 函数(二) 1 【实验目的】 (1)掌握函数的嵌套调用的方法 (2)掌握函数的递归调用的方法 (3)掌握全局变量和局部变量的概念和用法 【实验要求】 (1)熟练掌握函数的嵌套调用的方法 (2)熟练掌握函数的递归调用的方法 【实验环境】 (1) Microsoft XP操作系统 (2) Microsoft VC++ 6.0 【实验内容】 1、素数https://www.360docs.net/doc/0011180896.html,/acmhome/problemdetail.do?&method=showdetail&id=1098描述:输出100->200之间的素数的个数,以及所有的素数。 输入:无 输出:100->200之间的素数的个数,以及所有的素数。 样例输入:无 样例输出:

21 101 103 ... 197 199 2、字符串逆序https://www.360docs.net/doc/0011180896.html,/JudgeOnline/problem.php?id=1499 题目描述:写一函数,使输入的一个字符串按反序存放,在主函数中输入输出反序后的字符串。 输入:一行字符 输出:逆序后的字符串 样例输入:123456abcdef 样例输出:fedcba654321 3、字符串拼接https://www.360docs.net/doc/0011180896.html,/JudgeOnline/problem.php?id=1500 题目描述:写一函数,将两个字符串连接 输入:两行字符串 输出:链接后的字符串 样例输入: 123 abc 样例输出 123abc 4、输出元音https://www.360docs.net/doc/0011180896.html,/JudgeOnline/problem.php?id=1501

指针函数与函数指针的区别

指针函数与函数指针的区别 一、 在学习arm过程中发现这“指针函数”与“函数指针”容易搞错,所以今天,我自己想一次把它搞清楚,找了一些资料,首先它们之间的定义: 1、指针函数是指带指针的函数,即本质是一个函数。函数返回类型是某一类型的指针 类型标识符 *函数名(参数表) int *f(x,y); 首先它是一个函数,只不过这个函数的返回值是一个地址值。函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须赋给同类型的指针变量。 表示: float *fun(); float *p; p = fun(a); 注意指针函数与函数指针表示方法的不同,千万不要混淆。最简单的辨别方式就是看函数名前面的指针*号有没有被括号()包含,如果被包含就是函数指针,反之则是指针函数。来讲详细一些吧!请看下面 指针函数: 当一个函数声明其返回值为一个指针时,实际上就是返回一个地址给调用函数,以用于需要指针或地址的表达式中。 格式: 类型说明符* 函数名(参数) 当然了,由于返回的是一个地址,所以类型说明符一般都是int。 例如:int *GetDate(); int * aaa(int,int); 函数返回的是一个地址值,经常使用在返回数组的某一元素地址上。 int * GetDate(int wk,int dy); main() { int wk,dy; do { printf(Enter week(1-5)day(1-7)\n); scanf(%d%d,&wk,&dy); } while(wk<1||wk>5||dy<1||dy>7); printf(%d\n,*GetDate(wk,dy));

习题六指针与函数

1.指针 (1) 有以下程序 void f( int y,int *x) {y=y+*x; *x=*x+y;} main( ) { int x=2,y=4; f(y,&x); printf(“%d %d\n”,x,y); } 执行后输出的结果是【1】。 (2) 下面程序的运行结果是:[2] 。 void swap(int *a,int *b) { int *t; t=a; a=b; b=t; } main() { int x=3,y=5,*p=&x,*q=&y; swap(p,q); printf(“%d%d\n”,*p,*q); } (3) 设有以下程序: main() { int a, b, k=4, m=6, *p1=&k, *p2=&m; a=pl= =&m; b=(*p1)/(*p2)+7; printf(“a=%d\n”,a); printf(“b=%d\n”,b); } 执行该程序后,a的值为【3】,b的值为【4】。 (4) 下列程序的输出结果是【5】。 void fun(int *n) { while( (*n)--) printf(“%d”,++(*n)); } main() { int a=100; fun(&a); } (5) 以下函数用来求出两整数之和,并通过形参将结果传回,请填空。 void func(int x,int y, [6] z) { *z=x+y; } (6) 函数void fun(float *sn, int n)的功能是:根据以下公式计算S,计算结果通过形参指针sn 传回;n通过形参传入,n的值大于等于0。请填空。

void fun( float *sn, int n) { float s=0.0, w, f=-1.0; int i=0; for(i=0; i<=n; i++) { f= [7] * f; w=f/(2*i+1); s+=w; } [8] =s; } (7) 以下函数的功能是,把两个整数指针所指的存储单元中的内容进行交换。请填空。 exchange(int *x, int *y) { int t; t=*y; *y= 【9】; *x= 【10】; } (8) 下面函数要求用来求出两个整数之和,并通过形参传回两数相加之和值,请填空。 int add(int x,int y, 【11】z) { 【12】=x+y;} 2.函数 (1) 给出年、月、日,问是星期几(星期日~六用0~6表示)。 #include int month_to_day(int c); void show(int d); int year,month,day; int main() { cout<<"请输入年月日"<>year>>month>>day; int a=year-1900,b=a/4,c=month-1,d;//a表示过了几年,b表示a中有几年是闰年,//c表示过了几个月,d表示一共有多少天 c=month_to_day(c); //把月份转成天数 if(a%4==0&&a!=0) //判断输入的年份是不是闰年 { b=b-1; c=c+1; d=(a-b)*365+b*366+c; } else d=(a-b)*365+b*366+c+day; show(d); //输出星期几 return 0; }

实验7 指针及其运算

实验七指针及其运算 实验目的 理解指针的概念,会定义和使用指针变量,掌握指针的运算规则,学会使用数组的指针和指向数组的指针变量。 要点提示 1.变量在内存单元的地址称为该变量的“指针”。 2.指针变量是用来存放其它变量地址的变量。 3.指针变量定义的一般形式: 类型标识符*指针变量名; 4.指针运算符 &(取变量地址运算符)和*(取值运算符)是互逆的运算符,右结合。 ++,--,+,- 运算符是按地址计算规则进行的。 5.用指针作为函数参数,可以实现“调用函数改变变量的值,在主调函数中使用这些改变的值。 6.数组的指针是指数组的起始地址(首地址),数组元素的指针是指数组元素的地址。数组名代表数组的首地址,是地址常量。 实验内容 1.指针变量的说明,初始化和使用。 2.指针作为函数参数。 3.数组的指针和指针数组的指针变量的说明和使用 4. 数组名作为函数参数 实验步骤 读懂并输入程序,完成填空后输出结果,(下面程序中的中文注释可以不输入) 1. 输入a和b两个整数,按先大后小的顺序输出。 算法提示:不交换变量的值,而是交换两个指针变量的值,使p1指向较大的数,p2指向较小的数。 #include using namespace std; main() { int *p1,*p2, 【】;/* 变量说明语句*/ int a, b; cout<<"\n Please input a and b:"; cin>>a>>b; p1=&a; p2=&b; if (a

实验七 函数

实验七函数(一) 1.实验目的 (1)熟悉定义函数的方法 (2)熟悉声明函数的方法 (3)熟悉调用函数时实参与形参的对应关系,以及“值传递”的方式 (4)学习对多文件的程序的编译和运行 2.实验内容 编程序并上机调试运行之 (1)写一个判别素数的函数,在主函数输入一个整数,输出是否素数的信息 本程序应当准备以下测试数据: 17,34,2,1,0。分别运行并检查结果是否正确。要求所编写的程序,主函数的位置在其他函数之前,在主函数中对其所调用的函数作声明。进行以下工作:

<1>输人自己编写的程序,编译和运行程序,分析结果 <2>将主函数的函数声明删掉,再进行编译,分析编译结果 <3>把主函数的位置改为在其他函数之后,在主函数中不含函数声明 <4>保留判别素数的函数,修改主函数,要求实现输出100~200之间的素数(2)写一个函数,将一个字符串中的元音字母复制到另一字符串,然后输出 <1>输人程序,编译和运行程序,分析结果 <2>分析函数声明中参数的写法。先后用以下两种形式

i: 函数声明中参数的写法与定义函数时的形式完全相同,如 void cpy(char s[ ],char c[ ]); ii:函数声明中参数的写法与定义函数时的形式基本相同,但省略写数组名。如: void cpy(char[ ],char[ ]) ; 分别编译和运行,分析结果。 思考形参数组为什么可以不指定数组大小。 <3>如果随便指定数组大小行不行,如: void cpy(char s[40 ],char [40]) 请分别上机试一下。 (3)输人10个学生5门课的成绩,分别用函数实现下列功能: <1>计算每个学生平均分; <2>计算每门课的平均分; <3>找出所有50个分数中最高的分数所对应的学生和课程

C++考试题(选择题)

1、选择题 1、___A__只能访问静态成员变量。 A 静态函数 B 虚函数 C 构造函数 D 析构函数 2、下列的各类函数中,__C___不是类的成员函数。 A 构造函数 B 析构函数C友元函数 D 拷贝构造函数 3、友元的作用_A__。 A 提高程序的运行效率 B 加强类的封装性 C 实现数据的隐藏性 D 增加成员函数的种类 4、类模板的使用实际上是将类模板实例化成一个具体的_D____。 A 类 B 对象 C 函数 D 模板类 5、下列函数中,___C__不能重载。 A 成员函数 B 非成员函数 C 析构函数 D 构造函数 6、___C__是一个在基类中说明的虚函数,它在该基类中没有定义,但要求任何派生类都必须定义自己的版本。 A 虚析构函数B虚构造函数C纯虚函数 D 静态成员函数 7、__A___是istream的派生类,处理文件输入;___C__是iostream的派生类,可以同时处理文件的I/O。 A、ifstream B、ostream C、fstream D、ofstream 8、对于派生类的构造函数,在定义对象时构造函数的执行顺序为: 先执行__A___,再执行__B___,后执行__C___。 A 成员对象的构造函数 B 基类的构造函数 C 派生类本身的构造函数 9、局部变量可以隐藏全局变量,那么在有同名全局变量和局部变量的情形时,可以用__A___提供对全局变量的访问。 A 域运算符 B 类运算符 C 重载 D 引用 10、一个__C___允许用户为类定义一种模式,使得类中的某些数据成员及某些成员函数的返回值能取任意类型。 A 函数模板 B 模板函数 C 类模板 D 模板类 11、系统在调用重载函数时,往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是___D__。 A 参数个数 B 参数的类型 C 函数名称D函数的类型 12、如果一个类至少有一个纯虚函数,那么就称该类为__A___。 A 抽象类 B 虚基类 C 派生类 D 以上都不对 13、进行文件操作时需要包含__B___文件。 A iostream B fstream C stdio.h D stdliB、h 14、在C++中,打开一个文件,就是将这个文件与一个__B___建立关联;关闭一

实验7-指针

《C语言程序设计》实验报告实验序号:7 实验项目:指针 一、实验目的及要求 1、通过实验掌握指针的定义和使用指针变量; 2、掌握使用指针对数组和字符串进行操作; 3、掌握函数中指针类型参数的使用; 4、要求采用指针方法完成。 二、实验设备(环境)及要求 使用Turbo C 或Visual C++ 6.0;windows系列操作系统的环境。 三、实验内容与步骤 1.输入运行下面这个程序,观察并分析结果: #include "stdio.h" void main() { int a[]={2,3,4,5,6}; int *p1; char *p2="computer\n"; p1=a; printf("%d\n",p1+2); printf("%d\n",*(p1+2)); p1=a+2; printf("%d\n",p1+2); printf("%d\n",*(p1+2)); printf(p2+2); printf("%s",p2+2); } 运行结果截图:

2.以下程序调用invert 函数按逆序重新放置a 数组中的值,a 数组中的值在main 函数中读入,请填空。 #include "stdio.h" void invert(int *s,int i,int j) { int t; if(i

实验七 公式与函数的使用

实验七公式与函数的使用 2.1实验内容 利用公式、函数对图2-1所示的“学生成绩表”实现自动计算,统计出每个学生的总分、平均分、是否通过、等级;统计各科的最高分、最低分;统计所有学生成绩的通过率、优秀率。 要求: 1.利用函数产生学生的“是否通过”结果:平均分在60分以上计为“是”,60分以下计为“否”。 2.“等级”结果分三档:平均分在80分以上计为“优秀”,60-80之间为“合格”,60分以下为“不合格”。 3.“通过率”是计算“是否通过”结果为“是”的学生占总人数的百分比。 4.“优秀率”是计算“等级”为“优秀”的的学生占总人数的百分比。 图2-1 学生成绩表 2.2 实验目的 熟练掌握工作表中公式、常用函数的使用。 熟练掌握公式的复制操作。 2.3 实验步骤 2.3.1新建工作薄,建立工作表 启动Excel2003后,在新工作簿的Sheet1中建立如图2-1所示的学生成绩表。在相应的单元格中输入数据。 2.3.2使用公式计算总分 在H3单元格中输入公式“=SUM(D3:G3)”, 按下Enter键或单击确定按钮,计算出第1个学生的总分。 当然,也可输入公式“=D3+E3+F3+G3”,或者使用“自动求和”。

利用“填充柄”复制公式到H3:H12,计算出其他学生的总分。 2.3.3使用函数计算平均分 1.使用“函数向导”输入函数 ①选定单元格I3,单击“插入”菜单 “函数”命令,或者单击工具栏上的“插入函数”按纽,屏幕显示“粘贴函数”对话框,如图2-2所示。 ②在“选择函数”列表框中选择函数“AVERAGE”,单击“确定”。 ③在弹出的“函数参数”对话框中,如图2-3所示, 单击“Number1”右侧的箭头,用鼠标在工作表中选定区域D3:G3,单击“确定”,计算结果显示在单元格中。 图2-2 “插入函数”对话框 图2-3 “函数参数”对话框 2.使用“自动求和”命令按钮输入函数 ①选定单元格I3,按下键盘上的Delete键,先删除单元格中的内容;再单击自动求和按钮右侧的向下箭头,弹出“常用函数”菜单。 ②选择“平均值”,会自动填充函数并用闪动的边框围住被选择的区域,再用鼠标选定

第8章-指针练习题

指针思考题 一、填空题 【1】下面函数要求用来求出两个整数之和,并通过形参传回两数相加之和值,请填空。 int add( int x, int y, ) { =x+y;} 【2】若有定义: char ch; (1) 使指针p 可以指向变量ch的定义语句是。 (2) 使指针p指向变量ch的赋值语句是。 (3) 通过指针p给变量ch读入字符的scanf函数调用语句是。 (4) 通过指针p 给变量ch赋字符A的语句是。 (5) 通过指针p输出ch中字符的语句是。 (6) 在16位微机上,指针变量p在内存中所占字节数是,变量ch在内在所占字 节数是。 二、选择题 【3】若有说明:int i,j=7,*p=&i;则与i=j;等价的语句是()。 A.i=*p; B.*p=*&j; C.i=&j; D.i=**p; 【4】若有定义:int x,*pb;则正确的赋值表达式是()。 A.pb=&x B.pb=x C. *pb=&x D.*pb=*x 【5】对于类型相同的指针变量,不能进行的运算是()。 A.< B. = C. + D. – 【6】以下程序的输出结果是()。 A.23 B. 24 C. 25 D. 26 Void fun ( int *x) { printf(%d\n”,++*x); } main( ) { int a=25; fun (&a); } 【7】以下程序的输出结果是()。 A.6 B. 7 C. 8 D. 9 main() { int k=2,m=4,n=6; int *pk=&k,*pm=&m,*p; *(p=&n)=*pk*(*pm); printf("%d\n",n); } 【8】以下程序的输出结果是()。 A.100 B. 50 C. 101 D.200 main() { int *v,b; v=&b; b=100;

相关文档
最新文档