函数指针--菜鸟求解。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数指针--菜鸟求解。相关的知识,希望对你有一定的参考价值。
1、补充程序,实现从10个数中找出最大值和最小值。
#include <stdlib.h>
int max,min;
void find_max_min(int *p,int n)
int *q;
max=min=*p;
for(q=p; q< 【代码1】; q++)
【代码2】
void main( )
int i,num[10];
printf("Input 10 numbers: ");
for(i=0;i<10;i++)
scanf("%d",&num[i]);
find_max_min( 【代码3】,10);
printf("max=%d,num=%d\n",max,min);
顺便解释一下,代码的意思。谢谢。。。
#include <stdio.h>
int max=0,min=0;
void find_max_min(int *p,int n)
int *q;
max=min=*p;
for(q=p; q<p+n; q++)
if(max<*q)max=*q;
if(min>*q)min=*q;
void main( )
int i,num[10];
printf("Input 10 numbers: ");
for(i=0;i<10;i++)
scanf("%d",&num[i]);
find_max_min(num,10);
printf("max=%d,min=%d\n",max,min);
先看寻找最大最小的这个指针函数吧,它的参数是一个整形指针,和一个整形变量。C语言里的指针其实和数组的用法是很类似的。而数组本身就是一种指针常量。即指针除了指向的值可以变化外,和数组名(即数组首地址)没有差别。故整形指针和数组名在函数中都是传地址,二者是可以通用的。n是指比较元素的个数。
在这个函数中,指针变量就相当于一个数组,*p即这个数组的首元素,q=p,是把p的值赋给q,则q现在指向P指向的元素*p,q++是q指向下一个整形元素,q<p+n是一个指针运算,即q最多只可以移动到p后的n-1个元素处,而不可再移动了。
主函数比较简单,开始向一个有10个元素的数组中输入元素;然后调用最大最小函数找出其最大最小值。
由于数组名本身就是一个指针常量,所以可以直接用find_max_min(num,10)来调用函数。
希望可以对你有所帮助。 参考技术A #include <stdio.h>
int max,min;
void find_max_min(int *p,int n)
int *q;
max=min=*p;
for(q=p+1; q<p+10; q++)
if(max<*q)max=*q;
if(min>*q)min=*q;
void main( )
int i,num[10];
printf("Input 10 numbers: ");
for(i=0;i<10;i++)
scanf("%d",&num[i]);
find_max_min(num,10);
printf("max=%d,num=%d\n",max,min);
参考技术B for(q=p; q< q+n; q++)
if(max <*q)
max = *q;
if(min >*q)
min = *q;
find_max_min( num,10); 参考技术C #include <stdlib.h>
int max,min;
void find_max_min(int *p,int n)
int *q;
max=min=*p;
for(q=p+1; q<p+n; q++) //第一个不用检查所以是q=p+1;
if(*q>max)
max=*q;
if(*q<min)
min=*q;
void main( )
int i,num[10];
printf("Input 10 numbers: ");
for(i=0;i<10;i++)
scanf("%d",&num[i]);
find_max_min(num,10);
printf("max=%d,num=%d\n",max,min);
参考技术D 1楼答案基本正确,但是在函数定义里没有用到参数n,虽然本题是用10,但n本身的值是任意的。故不太合适。下面是在VC中调试通过的代码:
#include
<stdio.h>
int
max=0,min=0;
void
find_max_min(int
*p,int
n)
int
*q;
max=min=*p;
for(q=p;
q<p+n;
q++)
if(max<*q)max=*q;
if(min>*q)min=*q;
void
main(
)
int
i,num[10];
printf("Input
10
numbers:
");
for(i=0;i<10;i++)
scanf("%d",&num[i]);
find_max_min(num,10);
printf("max=%d,min=%d\n",max,min);
先看寻找最大最小的这个指针函数吧,它的参数是一个整形指针,和一个整形变量。C语言里的指针其实和数组的用法是很类似的。而数组本身就是一种指针常量。即指针除了指向的值可以变化外,和数组名(即数组首地址)没有差别。故整形指针和数组名在函数中都是传地址,二者是可以通用的。n是指比较元素的个数。
在这个函数中,指针变量就相当于一个数组,*p即这个数组的首元素,q=p,是把p的值赋给q,则q现在指向P指向的元素*p,q++是q指向下一个整形元素,q<p+n是一个指针运算,即q最多只可以移动到p后的n-1个元素处,而不可再移动了。
主函数比较简单,开始向一个有10个元素的数组中输入元素;然后调用最大最小函数找出其最大最小值。
由于数组名本身就是一个指针常量,所以可以直接用find_max_min(num,10)来调用函数。
希望可以对你有所帮助。
python问题求解
菜鸟一只 最近上课打瞌睡 求解print和return有啥区别 input和raw——input有啥区别呢?
1. print 是打印函数,输出到屏幕上,可以定义字符串的格式,并且自动添加回车功能;print的应用格式按版本不同而不同:
2.x ==> print "abc"
3.x ==> print("abc")
以2.x为例,从功能方面举例如下:
字符串格式 ==> print "I am %s"%("Li Lei")
自动添加回车功能 ==>
************************************
for i in range(0,6):
print i
结果:
0
1
2
3
4
5
*************************************
for i in range(0,6):
print i,
结果:
0 1 2 3 4 5
###############################################
2. return 是为函数返回一个结果,但不输出到屏幕上。如:
def add(a,b):
return a+b
调用add(3,4),结果不会显示在屏幕上,
但可以将这个值存放在另一个变量中,如
c=add(3,4)
print c
结果为 7
###############################################
3. input=eval(raw_input)
raw_input()是用来输入字符串,在3.x中已经不用了,改用input();
input在2.x中,是用来输入数据,相当于eval(raw_input);在3.x中输入字符串;
如:
以Python2.7为例:
【输入】raw_input("raw input:")
【输出】raw input: 【输入】abc
【输出】'abc'
【输入】input("input:")
【输出】input:【输入】2+3
【输出】5
【输入】input("input:")
【输出】input:【输入】"abc"
【输出】'abc'
【输入】input("input:")
【输出】input:【输入】abc
【输出】
Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
input("input:")
File "<string>", line 1, in <module>
NameError: name 'abc' is not defined 参考技术A print是打印字符串的语句;retun从函数中返回,可用于从函数中返回值,两者完全挨不上
在python 2中input用来输入数字,raw_input用来输入字符串 参考技术B python3.X中,raw_input已经不用了,统一为input()函数。
print是用在过程语句中打印功能;
return用在函数返回和赋值。 参考技术C print是输出函数 2.x和3.x的格式不同 return是返回一个参数值,2.x多用 input 3.x多用raw_input()
以上是关于函数指针--菜鸟求解。的主要内容,如果未能解决你的问题,请参考以下文章