C语言

2019.2.24苏小红C语言

2019-02-24  本文已影响14人  sure_风雨与晴

1.scanf()读入字符

在%c前加一个空格,将缓存区中的回车符读走:

printf("are u a boy (M) or a girl (F)?");
scanf(" %c", &sex);

scanf()按指定格式读取输入,非法字符的输入会导致数据无法正确读入,若要增加程序鲁棒性,让用户重新输入数据,之前还要清除留在缓冲区的非法字符:

ret = scanf("%d", &guess);
while(ret != 1)        //若输入错误,则重新输入
{
    while(getchar() != '\n');
    printf("please guess a magic number:");
    ret = scanf("%d", &guess);
}

2.涉及到阶乘的程序,注意定义变量为长整型long或者long long,格式符为%ld

3.rand()函数产生随机数

调用rand()生成的是一个在0~32767之间的整数(需要stdlib.h头文件),要改变生成随机数的取值范围:

求余运算rand()%b,变化到[0,b-1]之间
利用rand()%b+a,变化到[a,a+b-1]之间

产生随机数的过程称为“随机化”,是通过调用标准库函数srand()为函数rand()设置随机数种子来实现的:

srand(1);
magic=rand()%100+1;

也可以通过函数time()需包含time.h头文件,读取计算机的时钟值,并把该值设置为随机数种子:

srand(time(NULL));

4.几个算式的循环程序

通过计算累加项通项的方法寻找累加项的构成规律,将累加项通项表示成:term = sign/n。
a+aa+aaa+...+a...a(n个a)

for(i=1;i<=n;i++)
{
    term=term*10+a;
    sum=sum+term;
}

1-1/2+1/3-1/4+...-1/100+...直到最后一项绝对值小于1e-4

while(fabs(term)>=1e-4)
{
    term=sign/n;    //计算累加项
    sum=sum+term;   //累加
    sign=-sign;     //分子变化规律
    n++;
}

sinx≈x-x^3 /3!+x^5 /5!-...直到最后一项绝对值小于1e-5

do{
    term=-term*x*x/((n+1)*(n+2));
    sum=sum+term;
    n=n+2;
    count++;
}while(dabs(term)>=1e-5;

π/4=1-1/3+1/5-1/7+...

e=1+1/1!+2/2!+...直到最后一项绝对值小于1e-5

for(n=1;fabs(term)>=1e-5;n++)
{
    fac = fac*n;
    term = 1.0/fac;
    e = e+term;
    count++;
}
上一篇下一篇

猜你喜欢

热点阅读