您的位置:首页 > 编程语言 > C语言/C++

C语言(10)--逻辑短路问题、显示安装进度、Bessel函数、消除多余的空格

2015-09-02 15:03 447 查看
1.逻辑短路问题

A&&B若A为假,表达式值必为假,B将不会求值。
A||B若A为真,表达式值必为真,B将不会求值。

#include <stdio.h>
int main()
{
	int a=5,b=6,c=7,d=8,m=2,n=2,i;
	
	i=((m=a>b)&&(n=c<d));
	printf("%d\t%d\t%d\n",m,n,i);
	
	i=((m=a<b)||(n=c>d));
	printf("%d\t%d\t%d\n",m,n,i);
    return 0;
}


运行:



2.显示安装进度

#include <stdio.h>
#include <windows.h>    //使用Sleep()函数必须包含windows.h,这种方法只适用于windows
int main()
{
    int i;
    printf("安装进度:0%%");  //格式控制串中用%%表示输出一个%
    for(i=1;i<100;i++)
    {
        Sleep(200);//等待200毫秒 
        if(i<=10)
            printf("\b\b");//转义字符\b表示退格,将当前光标移到前一列
        else
            printf("\b\b\b");
        printf("%d%%",i);
    }
    printf("\b\b\bdone!\n");
    return 0;
}


运行:



3.Bessel函数






源代码:

#include <stdio.h>
#include <math.h> 
int main( )
{
    double pre,ppre,x,result;
    int n,i;
    printf("请输入n和x:");
    scanf("%d %lf",&n,&x);
    ppre=sin(x)/x;
    pre=sin(x)/x/x-cos(x)/x;
    if(n==0){
    	result=ppre;
    }
    if(n==1){
    	result=pre;
    }
    for(i=2;i<=n;i++)
    {
        result=(2*i-1)*pre/x-ppre;//注意实际公式中的下标 
        ppre=pre;
        pre=result;
    }
    printf("%.4lf\n",result);
    return 0;
}


4.消除多余的空格

从键盘上的输入一句话,直到按回车键为止,这些字符被原样输出,但若有连续的一个以上的空格时只输出一个空格。

例如,输入:I am a teacher.,输出I am a teacher.

#include <stdio.h>
int main( )
{
    char c, frontIsSpace=0;  //frontIsSpace用于记忆前面的符号是否为空格,是空格,值为1,不为空格,为0
    while ((c=getchar())!='\n')
    {
        if (c!=' ')
        {
            frontIsSpace=0;   //在读入下一个字符后,当前的字符,就是下一次所谓前一个,其值不是空格,故赋值为0  
            putchar(c) ; 
        }
        else if (!frontIsSpace)  //如果前一个不是空格,当前的这个空格是要输出的
        {
            putchar(c);   //输出的是空格
            frontIsSpace=1;   //在读入下一个字符后,就需要知道,当前的字符,也就是下一次所谓前一个,其值是空格,故赋值为1
        }
    }
    return 0;
}


运行:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: