声明:moonwalker 作于2008年4月26日 转载请注明出处    指针对一部分初学者来说一直是一个无法逾越的障碍,没有指针的C语言就好像没有左腿的短跑运动员。今天我来试试换一种方法来理解指针,希望能帮还在为指针挣扎的朋友们理清思路,高手略过即可。    我们先认为内存是一家客栈(看起来这和老掉牙的大楼的比喻没什么区别,但是请你耐心看下去)。同大部分的客栈一样,这家客栈有天、地、人等各种档次的房间,用现在的话就是单人间、双人间、四人间等等。来住店的客人也是车水马龙,三教九流都有,我们看看都有哪些人:    快乐单身汉char,还有char的小弟unsigned char,他们只住...
      
      
      
      
          将输入的字符串的最后一位变成x,如
input
abcd
output
abcx
---------------
#include <stdio.h>
 
int main(void)
{
    char a[10], *p;
    
    p = a;
    scanf("%s",p);
    for ( ; *p !='\0' ; p++)
        ;
    p--;
    *p = 'X';
    printf("%s",a);
 
    getch();
    return 0;
}
      
      
      
      
          #include <stdio.h>
 
#define OUT 0  /* outside word */
#define IN  1  /* inside word */
 
int main(void)
{
    int c, nw;
    
    nw = 0;
    while((c = getchar()) != EOF)
    {
        while ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
            ;
        +...
      
      
      
      
          #include <stdio.h>
int main(void){    int num, baiwei, shiwei, gewei, i, j;        i = j = 0;    for (num = 100; num < 999 ; ++num)    {        baiwei = num / 100;        shiwei = (num - baiwei*100) / 10;        gewei  = num - baiwei*100 - shiwei *10;        if ((baiwei != shiwei) && (ba...
      
      
      
      
          /* Write a program to copy its input to its output,replacing each tab by \t, *each backspace by \b,and each backslash by \\ .This makes tabs and backspaces  *visible in an unambiguous way */ #include <stdio.h>  int main(void) {     int c;          while ((c = getchar()) != EOF)     {           if...
      
      
      
      
          /*Write a program to copy its input to its output, *replacing each string of one or more blanks by a single blank*/#include <stdio.h>
 
#define OUT 1 /* outside the word */#define IN  0 /* inside the word */
 
int main(void){    int c,state;        state = OUT;    while ((c = getchar()) != EO...
      
      
      
      
          /* Write a program to count blanks,tabs,and newlines */
#include <stdio.h>
 
int main(void)
{
    int c, nb, nt, nn;
 
    nb = nt = nn = 0;
    while((c = getchar()) != EOF)
    {
        if (c == ' ')  ++nb;
        if (c == '\t') ++nt;
        if (c == '\n') ++nn;
    }
    print...
      
      
      
      
          /* 1st version */
#include <stdio.h>
 
int main(void)
{
    int c, nl;
    
    nl = 0;
    while ((c = getchar()) != EOF)
        if (c == '\n')
            ++nl;
    printf("%d",nl);
 
    getch();
    return 0;
}
===========================
/* 2nd version */
#include <stdio.h...
      
      
      
      
          /* 1st version */
#include<stdio.h>
 
int main(void)
{
    int c, nc;
 
    nc = 0;
    while((c = getchar()) !=EOF)
    {
        ++nc;
    }
    
    printf("%d",nc);
    
    getch();
    return 0;
}
======================
/* 2nd version */
#include <stdio.h>
 
int main(v...
      
      
      
      
          /* Write a program to print the value of EOF */
 
/* 1st version */
#include <stdio.h>
 
int main(void){    int c;
 
    c = EOF;
    printf("the value of EOF is %d",c);
 
    getch();    return 0;}
===============/* 2nd version */
 
#include <stdio.h>
 
int main(void){    printf("...
      
      
      
      
          /* 1st verion.copy input to output */
 
#include <stdio.h>
 
int main (void){    int c;
 
    c = getchar();    while (c != EOF)    {        putchar(c);        c = getchar();    }
 
    return 0;}
===========================
/* 2ed version.copy input to output */
 
#include <stdio.h>
...
      
      
      
      
          /* The version of symbolic constants : print Fahrenheit-celsious table */
 
#include<stdio.h>
 
#define LOWER 0#define UPPER 300#define STEP  20
 
int main(viod){    float fahr;
 
    for (fahr = LOWER; fahr <= UPPER; fahr += STEP )    {        printf("%3.0f%6.1f\n", fahr, (5.0/9.0) * ( f...
      
      
      
      
          /* Modify the temperature conversion program to print the table in reverse order, *that is form 300 degrees to 0. */
 
#include <stdio.h>
 
int main(void){    float fahr;        for(fahr = 300; fahr >= 0; fahr-=20)    {             printf("%3.0f%6.1f\n",fahr,(5.0/9.0) * (fahr - 32));    }    ...
      
      
      
      
          /* the version of for statement;print Fahrenheit - Celsius table */
 
#include <stdio.h>
 
int main(void){    float fahr;
    for ( fahr = 0; fahr <=300; fahr+=20)    {        printf("%3.0f%6.1f\n",fahr,(5.0/9.0)*(fahr-32));    }        getch();    return 0;}
 
      
      
      
      
          /* Write a program to print the corresponding Celsius to Fahrenhei table */
 
#include <stdio.h>
int main(void){    float cels, fahr;    int lower, upper, step;        lower = 0;    upper = 100;    step  = 10;        cels = lower;    while ( cels <= upper)    {          fahr = 9 * cels / 5 + 3...
      
      
      
      
          /* Modify the temperature conversion program to print a heading above the table */
#include <stdio.h>
int main(void){    float fahr, cels;    int lower, upper, step;        lower = 0  ;    upper = 300;    step  = 20;        fahr = lower;    printf("F\tC\n");    while (fahr <= upper)    {       ...
      
      
      
      
          The program uses the formula [ Celsius = (5/9) * (Fahrenheit - 32)] to print the following table of Fahrenheit temperatures and their centigrade or Celsius equivalents:
=============
/* print Fahrenheit - Celsius table for fahr =0, 20, ..., 300 */
#include <stdio.h>
 
int main(void)
{
    ...
      
      
      
      
          the program to print "hello, world"
==============
#include <stdio.h>
int main(void)
{
    printf("hello, world");
    
    return 0;
}