考虑到main函数的特殊性,lz不明白这个问题可以理解。
我们提供的服务有:网站设计、成都网站建设、微信公众号开发、网站优化、网站认证、高邮ssl等。为上1000+企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的高邮网站制作公司
main()是省略了返回值类型,C语言会默认认为成main的类型为int,在main()的函数体内要返回一个值,如return 0;
而void main()的返回值是void类型,也就是说没有返回值。这样在main()的函数体内你就不用写return 0;或者return 1;之类的返回语句。
在一个程序中,可以说你看不出两者的差别,因为main()是C语言的入口点,入口点如果返回了程序也就结束了,因此C语言的这个特性似乎没用。可没用的话,C语言的设计者为什么要这么做呢?!肯定有用。
没错,前面我说的是在一个程序中,它似乎没用。可如果一个程序prog2调用另一个程序prog1的话(这里指的是prog2直接调用prog1编译好的可执行文件),那么这个特性就有用了。因为prog2要知道prog1运行之后的状态。比如你用C写了一个删除文件的程序(暂且命名为delf),然后用另一个程序去调用delf,那么调用结果怎么样啊?这个文件是否删掉了?这是int main()就会派上用场了。C语言中默认的main如果返回为0,那么这个程序调用就成功了,其他值,则为不同的错误代码。在你的delf程序中,如果那个文件删除成功,那么就在int main()中返回0,其他调用delf的程序就知道,噢,这个操作成功了。
在unix/linux系统中的很多命令都是通过这种方式获得运行结果的。
关于谭浩强的书,我想不用多说,发行量说明了一切。毕竟第二版在编写的时候还比较早,而第三版根据很多现在的需要进行了改写,内容当然会好些。鉴于lz是初学C,其实大可不必在这个问题上浪费太多时间,当你有了更多的项目经验,对这个问题会有更深刻的理解。
上面我已经给出了main()、int main()和void main()的区别,但建议lz忽略这个差别,认为成二者一样,先把C的其他部分学好。至于只写成main(),我并不推荐,就算编译器通过了,这种编程的风格也太不严谨,不利于好的习惯的养成。
不是有多难的内容,只是凡是要多靠自己才行。写成这个样子了,最后一个菜单自己弄吧。
void getScore(int a[],int n){ int i; for( i = 0; i n ; i++ ) { scanf("%d",a[i]); }}
void sort(int a[],int n){ int temp; temp=a[0]; int i, j; for( i=0; i n - 1; i++) { for( j = i +1; j n; j++) { if( a[i] a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } } }}
void sort(int a[],int n, char style){ int temp; temp=a[0]; int i, j; for( i=0; i n - 1; i++) { for( j = i +1; j n; j++) { if( style == 'd' ) { if( a[i] a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } } else if( style == 'a' ) { if( a[i] = a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } } } }}int foundScore(int a[],int n,int score){ int i ,ret_val; ret_val=-1; for( i = 0; i n; i ++ ) { if( a[i] == score) { ret_val= i; break; } } return ret_val;}
void insertScore(int a[],int size,int *n,int score){ /*这种方法对于以数组为参数的函数中无法计算出数组长度,具体为什么查一下基础知识就知道了,在内部是不能判断数组长度的,此函数应该更改一下参数列表*/ // int size=sizeof(a)/sizeof(int); if( n = size ) return; a[++n]=score;}
void deleteScore(int a[],int *n,int score){ for(i = 0; i = n a[i] != score; i++ ); if( a[i] == score; /*移动后续数据*/ for( ; i n; i++) { a[i]=a[i+1]; } n--;}
/*输出数组中所有成绩。*/void displayScore(int a[],int n){ int i ; for( i = 0; i n; i++ ) { printf("a[%d] = %d\n", i, a[i] ); }}
给你举个完整的例子吧 上面的指针之类的应该还没学到吧~
# include"stdio.h"
# include"string.h"/*因为引用了函数strlen()*/
void string_change(char str[])
{
char c;
int i,j;
for(i=0,j=strlen(str)-1;;i++,j--)/*strlen(str)这是取该字符组的长度*/
{
if(ij)
{c=str[i];str[i]=str[j];str[j]=c;}/*中心对称互换*/
if(ij)break; /*结束循环*/
}
}
void main()
{
char str[100];/*里面的100自己取的注意输入不要超过就行*/
printf("请输入字符组:\n");
gets(str);
string_change(str); /*引用函数进行对换*/
puts(str);/*输出对换后的字符组*/
}