11.04 C语言学习心得

时间:2021-10-28 16:33:08

通过今天的C语言学习,我主要对如下一些函数和知识点有了更深的了解,

(1) getchar() vs getch()

getchar()将获取的字符放入缓冲区,直到回车的出现,才返回函数值,此返回值会直接显示到屏幕;使用getchar()需要导入头文件#include <stdio.h>。
getch()是直接返回函数值,而不等待回车的出现;getch()的返回值不会自己显示到屏幕,而是要调用putch()将其显示到屏幕;getch()的应用一般用来暂停屏幕;使用getch()需要导入头文件#include <conio.h>。

(2) 使用strcmp( char *s1, char *s2)比较两个字符串时,如果s1>s2, 返回值>0; 如果s1=s2, 返回值=0; 如果s1<s2, 返回值<0。使用strcmp( char *s1, char *s2)需要导入头文件#include<string.h>

(3) fread( buffer, size, count, fp )和fwrite( buffer, size, count, fp ), 其中buffer是一个指针,对fread来说是读入数据的存放地址,对fwrite来说是输出数据的地址。size是要读写的字节数,比如,size = sizeof( char ) = 1, size = sizeof( int ) = 4。count是要进行读写多少个size字节的数据项。fp是文件型指针。fread是从fp所指向的文件中读数据写入buffer, fwrite是从buffer中读数据写入fp所指向的文件。

(4) 对return的灵活运用。比如下面贴出的两段代码,下面的明显优于上面的:题目为输出100以内的所有素数:

1.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>


int isPrime( unsigned int a)
{
unsigned int num = a;
int start;
int end = sqrt ( num*1.0 );
//2, 3的情况用printf()输出
for ( start = 5; start <= end; start++)
{
if( num % start != 0)
{
if( start == end)
printf( "%d\n", num );
}
else
break;
}
}


int main( void )
{
unsigned int i; 
for ( i=2; i<=100; i++)
isPrime( i );
system( "pause" );
return 0;
}
*/

2.
#include <stdio.h>
#include <stdlib.h>

int isPrime ( unsigned int a )
{
//是素数返回非零值,不是素数返回零
unsigned int i;


for( i=2; i * i <= a; i++)
if ( !( a % i ) )
return 0;
return 1;
}
int main ( void )
{
unsigned int a;
for ( a=2; a<=100; a++)
if( isPrime( a ) )
printf( "%8u", a );
//printf( "\n" );
system( "pause" );
}