C Primer Plus È«ÊéÔ´´úÂ루Î壩

ÉÏһƪ / ÏÂһƪ  2012-03-19 09:29:59 / ¸öÈË·ÖÀࣺѧϰÈÕÖ¾

 

/*

// array2d.c -- functions for 2d arrays

#include <stdio.h>

#define ROWS 3

#define COLS 4

void sum_rows(int ar[][COLS], int rows);

void sum_cols(int [][COLS], int );   // ok to omit names

int sum2d(int (*ar)[COLS], int rows); // another syntax

int main(void)

{

    int junk[ROWS][COLS] = {

           {2,4,6,8},

           {3,5,7,9},

           {12,10,8,6}

    };

    

    sum_rows(junk, ROWS);

    sum_cols(junk, ROWS);

    printf("Sum of all elements = %d\n", sum2d(junk, ROWS));

    

    return 0;

}

 

void sum_rows(int ar[][COLS], int rows)

{

   int r;

   int c;

   int tot;

 

   for (r = 0; r < rows; r++)

   {

       tot = 0;

       for (c = 0; c < COLS; c++)

           tot += ar[r][c];

       printf("row %d: sum = %d\n", r, tot);

   }

}

 

void sum_cols(int ar[][COLS], int rows)

{

   int r;

   int c;

   int tot;

 

   for (c = 0; c < COLS; c++)

   {

       tot = 0;

       for (r = 0; r < rows; r++)

           tot += ar[r][c];

       printf("col %d: sum = %d\n", c, tot);

   }

}

 

int sum2d(int ar[][COLS], int rows)

{

   int r;

   int c;

   int tot = 0;

 

   for (r = 0; r < rows; r++)

       for (c = 0; c < COLS; c++)

           tot += ar[r][c];

   

   return tot;

}

 

*/

////////////////////////////////////////////////////

//vararr2d.c -- functions using VLAs                      //vc6.0²»Ö§³Ö±ä³¤Êý×éÕâ¸öÐÂÌØÐÔ

/*

#include <stdio.h>

#define ROWS 3

#define COLS 4

int sum2d(int rows, int cols, int ar[rows][cols]);

int main(void)

{

    int i, j;

    int rs = 3;

    int cs = 10;

    int junk[ROWS][COLS] = {

           {2,4,6,8},

           {3,5,7,9},

           {12,10,8,6}

    };

    

    int morejunk[ROWS-1][COLS+2] = {

           {20,30,40,50,60,70},

           {5,6,7,8,9,10}

    };

    

    int varr[rs][cs]; // VLA

    

    for (i = 0; i < rs; i++)

        for (j = 0; j < cs; j++)

            varr[i][j] = i * j + j;

 

    printf("3x5 array\n");

    printf("Sum of all elements = %d\n",

            sum2d(ROWS, COLS, junk));

 

    printf("2x6 array\n");

    printf("Sum of all elements = %d\n",

            sum2d(ROWS-1, COLS+2, morejunk));

 

    printf("3x10 VLA\n");

    printf("Sum of all elements = %d\n",

            sum2d(rs, cs, varr));

 

    return 0;

}

 

// function with a VLA parameter

int sum2d(int rows, int cols, int ar[rows][cols])

{

   int r;

   int c;

   int tot = 0;

 

   for (r = 0; r < rows; r++)

       for (c = 0; c < cols; c++)

           tot += ar[r][c];

           

   return tot;

}

*/

//////////////////////////////////////////////////////

/*

// flc.c -- funny-looking constants

#include <stdio.h>

#define COLS 4

int sum2d(int ar[][COLS], int rows);

int sum(int ar[], int n);

 

int main(void)

{

    int total1, total2, total3;

    int * pt1;

    int (*pt2)[COLS];

 

    pt1 = (int [2]){10, 20};                                   //´ËÖÖ±íʾ·½·¨ÊǸ´ºÏÎÄ×Ö£¬ÕâÀï²»Ö§³Ö¡£

    pt2 = (int [2][COLS]){ {1,2,3,-9}, {4,5,6,-8} };

 

    total1 = sum(pt1, 2);

    total2 = sum2d(pt2, 2);

    total3 = sum((int []){4,4,4,5,5,5}, 6);

    printf("total1 = %d\n", total1);

    printf("total2 = %d\n", total2);

    printf("total3 = %d\n", total3);

    

    return 0;

}

 

int sum(int ar[], int n)

{

   int i;

   int total = 0;

 

   for( i = 0; i < n; i++)

       total += ar[i];

       

   return total;

}

 

int sum2d(int ar[][COLS], int rows)

{

   int r;

   int c;

   int tot = 0;

 

   for (r = 0; r < rows; r++)

       for (c = 0; c < COLS; c++)

           tot += ar[r][c];

           

   return tot;

}

*/

//////////////////////////////////////////////////////////////

// strings.c -- stringing the user along

/*

#include <stdio.h>

#define MSG "You must have many talents. Tell me some."

                         // a symbolic string constant

#define LIM 5

#define LINELEN 81       // maximum string length + 1

int main(void)

{

   char name[LINELEN];

   char talents[LINELEN];

   int i;

                         // initializing a dimensioned

                         // char array      

   const char m1[40] = "Limit yourself to one line's worth.";

                         // letting the compiler compute the

                         // array size    

   const char m2[] = "If you can't think of anything, fake it.";

                         // initializing a pointer 

   const char *m3 = "\nEnough about me -- what's your name?";

                         // initializing an array of

                         // string pointers        

   const char *mytal[LIM] = { // array of 5 pointers

         "Adding numbers swiftly",

         "Multiplying accurately", "Stashing data",

         "Following instructions to the letter",

         "Understanding the C language"

         };

 

   printf("Hi! I'm Clyde the Computer."

          " I have many talents.\n");

   printf("Let me tell you some of them.\n");

   puts("What were they? Ah, yes, here's a partial list.");

   for (i = 0; i < LIM; i++)

       puts(mytal[i]);  // print list of computer talents

   puts(m3);

   gets(name);

   printf("Well, %s, %s\n", name, MSG);

   printf("%s\n%s\n", m1, m2);

   gets(talents);

   puts("Let's see if I've got that list:");

   puts(talents);

   printf("Thanks for the information, %s.\n", name);

 

   return 0;

}

*/

/////////////////////////////////////////////////////////

 

/* quotes.c -- strings as pointers */

/*

#include <stdio.h>

int main(void)

{

   printf("%s, %#p, %c\n", "We", "are", *"space farers");

   

   return 0;

}

*/

///////////////////////////////////////////////////////

 

/* p_and_s.c -- pointers and strings */

/*

#include <stdio.h>

int main(void)

{

   const char * mesg = "Don't be a fool!";

   const char * copy;

 

   copy = mesg;

   printf("%s\n", copy);


TAG:

 

ÆÀ·Ö£º0

ÎÒÀ´ËµÁ½¾ä

Open Toolbar