getchar 由宏实现:#define getchar() fgetc(stdin)。getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).当用户键入回车之后,getchar才开始从stdio流中每次读入一个字符.getchar函数的返回值是用户输入的第一个字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取.也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键. getch与getchar基本功能相同,差别是getch直接从键盘获取键值,不等待用户按回车,只要用户按一个键,getch就立刻返回, getch返回值是用户输入的ASCII码,出错返回-1.输入的字符不会回显在屏幕上.getch函数常用于程序调试中,在调试时,在关键位置显示有关的结果以待查看,然后用getch函数暂停程序运行,当按任意键后程序继续运行. 这个版本忽略了个重点,getch()是非缓冲输入函数,就是不能用getch()来接受缓冲区已存在的字符,如以下C++程序, int i;while(cini);cin.clear();getchar();运行时如果输入1 2 3 a时必须用getchar()才能在后面程序获得正常输入,即使先前已经恢复流了,此处用getch()是万万不行的。 另外补充个函数,getche(),这个函数与前两上类似,功能也相近,都是输入一个字符,返回值同样是输入字符的ASCII码,但不同的是,此函数在输入后立即从控制台取字符,不以回车为结束(带回显)
陵水黎族ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!
思路:首先设置最大最小的值都是数组第一个数,然后遍历数组,出现比当前最大值大的,修改最大值为这个数。出现比最小值小的,修改最小值为这个数。
代码
#include stdio.h
//为了方便返回,使用结构体存储最大值和最小值
typedef struct {
int Max;
int Min;
}MaxMin;
//函数参数array:数组,length:数组长度。
//这里其实可以把最大值最小值作为指针传进去的。
MaxMin GetMaxMin(int *array, int length)
{
int i;
MaxMin maxMin;
if (length = 0)
return maxMin;
//初始化最大值和最小值为数组第一个数
maxMin.Max = array[0];
maxMin.Min = array[0];
for (i = 0; i length; i++) {
if (array[i] = maxMin.Max)
maxMin.Max = array[i]; //比当前最大值大,修改最大值
if (array[i] = maxMin.Min)
maxMin.Min = array[i]; //比当前最小值小,修改最小值
}
return maxMin;
}
//主函数测试
int main() {
int length;
int i;
int *array;
printf("input length of array:");
scanf("%d", length);
array = (int *)malloc(sizeof(int)*length);
for (i = 0; i length; i++) {
printf("input data of array(index %d):", i + 1);
scanf("%d", array + i);
}
MaxMin maxMin = GetMaxMin(array, length);
printf("Max:%d,Min:%d", maxMin.Max, maxMin.Min);
return 0;
}
3. 运行结果
您的程序有多处错误。既然是初学,就先把最基本的东西都弄清楚啊,否则别人都不愿意帮您。简单列出您的错误如下:
1)在max函数内又声明了a[10],这和传递给max函数的参数同名。
2)在max函数内声明了一个变量max,这与max函数又是同名,虽然不一定会出错,但需要尽量避免啊。
3)int max(int a[], int i)是正确的写法,不必写int a[10]。
4)在主函数main中的max(a[10],i)就是错误的写法了,把数组传递给函数时,只能写数组名a,不能写a[10],a[10]只代表了数组中的一个元素。
5)printf中的那个max,属于未声明就使用的变量,而且又与函数max同名。
给个修改后的程序,您自己对照吧。
6)printf函数没指定最大值的输出位置与格式。
#include "stdafx.h"
#include "stdio.h"
int max(int a[])//原代码中将i传递进来,毫无必要
{
int maxv=a[0];//原代码取max,与函数同名,要避免
int i;
for(i=1;i10;i++)
if(maxva[i])
maxv=a[i];
return(maxv);
}
int main()
{
int i,a[10],maxvalue;
printf("请输入10个数:\n");
for(i=0;i10;i++)
scanf("%d",a[i]);
maxvalue = max(a);//原代码max(a[10],i),a[10]只会传递一个数而不是数组
printf("最大的数是:%d\n",maxvalue);//您别漏了%d啊
}
#include stdio.h
#include stdlib.h
#include time.h
int main()
{
int n,i,max;
srand(time(NULL));
max = rand();
for(i = 1; i10;i++)
{
n=rand();
if(nmax)max=n;
}
printf("max=%d\n", max);
return 0;
}
自定义函数实现
int max(int a,int b)
{
return ab?a:b;
}