zoukankan      html  css  js  c++  java
  • Variables and Arithmetic Expression

    Notes from The C Programming Language

    A decimal point in a constant indicates that it is floating point, however, so $5.0/9.0$ i not truncated because it is the ratio of two floating-point values.

    printf specification

    • %3.0f says that a floating-point number is to be printed at least three characters wide, with no decimal point and no fraction dgits.
    • %6.1f describes another number that is to be printed at least six characters wide, with 1 digit after the decimal point.

    Width and precision may be omitted from a specification: %6f says that the number is to be at least six characters wide; %.2f specifies two characters after the decimal point, but the width is not constrained.

    • %o for octal
    • %x for hexadecimal
    • %c for character
    • %s for character string
    • %% for % itself

    for statement:

    #include <stdio.h>
    
    #define LOWER 0			/* lower limit of table */
    #define UPPER 300		/* upper limit */
    #define STEP  20		/* step size */
    
    /* print Fahrenheit-Celsius table */
    main()
    {
    	int fahr;
    	
    	for(fahr = LOWER; fahr <= UPPER; fahr = fahr + STEP)
    		printf("%3d %6.1f
    ", fahr, (5.0/9.0)*(fahr-32));
    }
    

    Character input and output

    The standard library provides getchar() and putchar() for reading and writing one character at a time. getchar() reads the next input character from a text stream and returns that as its value:

    c = getchar();
    

    The function putchar prints a character each time:

    putchar(c);
    

    prints the contents of the integer variable c as a character, usually on the screen.

    File copy: a program that copies its input to its output one character at a time:

    #include <stdio.h>
    
    /* copy input to output; 1st version */
    main()
    {
    	int c;
    	
    	c = getchar();
    	while(c != EOF)
    	{
    		putchar(c);
    		c = getchar();
    	}
    }
    

    EOF is defined in <stdio.h>.

    As an expression has a value, which is the left hand side after the assignment, the code can be concise:

    #include <stdio.h>
    
    /* copy input to output; 2nd version */
    main()
    {
    	int c;
    	
    	while((c = getchar()) != EOF)
    		putchar(c);
    }
    

    The next program counts characters:

    #include <stdio.h>
    
    /* count characters in input; 1st version */
    main()
    {
    	long nc; 
    	
    	nc = 0;
    	while(getchar() != EOF)
    		++nc;
    	
    	printf("%ld
    ", nc);
    }
    

    long integers are at least 32-bits.

    It may be possible to cope with even bigger numbers by using a double(double precision float).

    #include <stdio.h>
    
    /* count characters in input; 2nd version */
    main()
    {
    	double nc;
    	
    	for(nc = 0; getchar() != EOF; ++nc)
    		;
    	printf("%.0f
    ", nc);
    }
    

    printf uses %f for both float and double; %.0f suppresses printing of the decimal point and the fraction part, which is zero.

    Counts lines:

    #include <stdio.h>
    
    /* count lines in input */
    main()
    {
    	int c, nl;
    	
    	nl = 0;
    	while((c = getchar()) != EOF)
    	{
    		if(c == '
    ')
    			++n1;
    		printf("%d
    ", nl);
    	}
    }
    

    Word counting with loose definition that a word is any sequence of characters that does not contain blank, tab or newline. This is a bare-bones version of the UNIX program wc:

    #include <stdio.h>
    
    #define IN  1	/* inside a word */
    #define OUT 0	/* outside a word*/
    
    /* count lines, words, and characters in input*/
    main()
    {
    	int c, nl, nw, nc, state;
    	
    	state = OUT;
    	nl = nw = nc = 0;
    	while((c = getchar()) != EOF)
    	{
    		++nc;
    		if(c == '
    ')
    			++nl;
    		if(c == ' ' || c == '
    ' || c == '	')
    			state = OUT;
    		else if(state == OUT)
    		{
    			state = IN;
    			++nw;
    		}
    	}
    	printf("%d %d %d
    ", nl, nw, nc);
    }
    

    Every time the program encouters the first character of a word, it counts one more word.

    Count the number of occurrences of each digit, of white space character(blank, tab, newline), and of all other characters:

    #include <stdio.h>
    
    /* count digits, white space, others */
    main()
    {
    	int c, i, nwhite, nother;
    	int ndigit[10];
    	
    	nwhite = nother = 0;
    	for(i = 0; i < 10; ++i)
    		ndigit[i] = 0;
    	
    	while((c = getchar()) != EOF)
    	{
    		if(c >= '0' && c <= '9')
    			++ndigit[c - '0'];
    		else if(c == ' ' || c == '
    ' || c == '	') 
    			++nwhite;
    		else
    			++nother;
    		
    		printf("digits =");
    		for(i = 0; i < 10; ++i)
    			printf(" %d", ndigit[i]);
    		printf(", white space = %d, other = %d
    ", nwhite, nother);
    	}
    }
    
  • 相关阅读:
    如何将baidu地图中的baidu logo 去掉
    漂亮的圆角文本框 CSS3实现
    jQuery数字加减插件
    腾迅股票数据接口 http/javascript
    JS复制内容到剪贴板(兼容FF/Chrome/Safari所有浏览器)
    关于编写性能高效的javascript事件的技术
    想做web开发 就学JavaScript
    git的简单理解及基础操作命令
    《CSS权威指南》基础复习+查漏补缺
    TypeScript Writing .d.ts files(编写声明文件)
  • 原文地址:https://www.cnblogs.com/kid551/p/4268623.html
Copyright © 2011-2022 走看看