对于C语言中的函数类型,一般可以分为以下两类:
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:申请域名、网站空间、营销软件、网站建设、华容网站维护、网站推广。
1. 库函数(Library Function):也称为内置函数(Built-in Function),是由C语言提供的、已经封装好的函数。库函数通常具有标准化、通用化的特点,包括数学运算、字符串处理、文件操作等方面。例如`printf()`和`scanf()`是C语言中常用的库函数。
2. 用户自定义函数(User-Defined Function):也称为外置函数(External Function),是程序员根据需求自行编写的函数。用户自定义函数可以将某一段需要重复使用的代码封装成一个函数,在其他地方调用该函数即可实现相同的功能,起到了复用代码的作用。在需要多次执行特定任务时,使用自定义函数可以使程序结构更加清晰、易于理解。
上面的都做出来了我就不做了,就分析下你错的地方:
C:\Documents and Settings\Administrator\桌面\编程\lianan.c(12) : warning C4047: '!=' : 'int ' differs in levels of indirection from 'char [5]'
错误语句:while(*ss[numz-1]!="****");
解释:*ss[numz-1]代表一个地址不能等于字符串,可改为ss[numz-1]。
C:\Documents and Settings\Administrator\桌面\编程\lianan.c(14) : warning C4047: 'function' : 'char ** ' differs in levels of indirection from 'char [10][87]'
错误语句:k=fun(numz,ss);
解释:ss为首地址指针。不能传给char ** ,只能传给char *。
C:\Documents and Settings\Administrator\桌面\编程\lianan.c(22) : error C2106: '=' : left operand must be l-value
错误语句:s[0]=*(max);
解释s[0]为一个地址指针,不能存储。给数组赋值要用
for(int i=0;imax;i++){s[0][i]=*(max+i);}
C:\Documents and Settings\Administrator\桌面\编程\lianan.c(25) : warning C4047: 'function' : 'const char *' differs in levels of indirection from 'char [10][87]'
错误语句:if(strlen(s)strlen(*(max+i+1)))
解释:strlen需要传递一个char地址,s可改为s[0]。
C:\Documents and Settings\Administrator\桌面\编程\lianan.c(31) : error C2115: 'return' : incompatible types
错误语句:return (max);
解释:函数返回值类型要更定义类型一样。max为char ** 类型,定义函数确为float。
相同错误就不再说了。
C语言输入输出函数有很多,标准I/O函数中包含了如下几个常用的函数:
scanf,printf,getc,putc,getchar,putchar,gets,puts,fgets,fputs,fgetc,fputc,fscanf,fprintf等.
int getc(FILE *fp)
getc主要是从文件中读出一个字符.常用的判断文件是否读取结束的语句为 (ch = getc(fp)) != EOF.EOF为文件结束标志,定义在stdio.h中,就像EXIT_SUCCESS,EXIT_FAILURE定义在stdlib.h中一样,文件也可以被理解为一种流,所以当fp为stdin时,getc(stdin)就等同于getchar()了.
int putc(int ch,FILE *fp)
putc主要是把字符ch写到文件fp中去.如果fp为stdout,则putc就等同于putchar()了.
int getchar(void)
getchar主要是从标准输入流读取一个字符.默认的标准输入流即stdio.h中定义的stdin.但是从输入流中读取字符时又涉及到缓冲的问题,所以并不是在屏幕中敲上一个字符程序就会运行,一般是通过在屏幕上敲上回车键,然后将回车前的字符串放在缓冲区中,getchar就是在缓冲区中一个一个的读字符.当然也可以在while循环中指定终止字符,如下面的语句:while ((c = getchar()) != '#')这是以#来结束的.
int putchar(int ch)
putchar(ch)主要是把字符ch写到标准流stdout中去.
char * gets(char *str)
gets主要是从标准输入流读取字符串并回显,读到换行符时退出,并会将换行符省去.
int puts(char *str)
puts主要是把字符串str写到标准流stdout中去,并会在输出到最后时添加一个换行符.
char *fgets(char *str, int num, FILE *fp)
str是存放读入的字符数组指针,num是最大允许的读入字符数,fp是文件指针.fgets的功能是读一行字符,该行的字符数不大于num-1.因为fgets函数会在末尾加上一个空字符以构成一个字符串.另外fgets在读取到换行符后不会将其省略.
int fputs(char *str, file *fp)
fputs将str写入fp.fputs与puts的不同之处是fputs在打印时并不添加换行符.
int fgetc(FILE *fp)
fgetc从fp的当前位置读取一个字符.
int fputc(int ch, file *fp)
fputc是将ch写入fp当前指定位置.
int fscanf(FILE *fp, char *format, 输入列表)
fscanf按照指定格式从文件中出读出数据,并赋值到参数列表中.
int fprintf(FILE *fp, char *format, 输出列表)
fprintf将格式化数据写入流式文件中.
数据块读写函数
fread (buffer,size,count,fp);
fwrite(buffer,size,count,fp);
参数说明:
buffer:是一个指针。
对fread 来说,它是读入数据的存放地址。
对fwrite来说,是要输出数据的地址(均指起始地址)。
size: 要读写的字节数。
count: 要进行读写多少个size字节的数据项。
fp: 文件型指针。
#include stdio.h
int main()
{
int s[20];
int sum,max,min,excellent,good,pass,fail;
int i;
sum=0;
max=0;min=100;
excellent=good=pass=fail=0;
for(i=0;i20;i++)
{
scanf("%d", s[i]);
sum+=s[i];
if(s[i]max)
max=s[i];
if(s[i]min)
min=s[i];
if(s[i]=90)
excellent++;
else if(s[i]=80)
good++;
else if(s[i]=60)
pass++;
else
fail++;
}
printf("平均成绩:%d,最高成绩:%d,最低成绩:%d\n", sum/20, max, min);
printf("优秀人数:%d,良好人数:%d,及格人数:%d,不及格人数:%d\n", excellent, good, pass, fail);
}