c programming language #7

Post on 13-Sep-2014

720 Views

Category:

Education

7 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

PROGRAMMING

LANGUAGE #7

aragornyeh.blogspot.com

Test 1

Calculate the result to n = 10

(Hint: use pow function)

#include <stdio.h>

#include <math.h>

int main( )

{

int i;

double t;

double s = 0;

for(i=1; i<=10; i++) {

t = pow(2,-i);

s = s + t;

}

printf("%f", s);

return 0;

}

Test #2

Write a program that prompts the user to input an integer, x, and then

Determines which is larger: x3 or (x+1)2.

The program should print out the values of x3 and (x + 1)2 as well as which is larger.

#include <stdio.h>

int main( )

{

int x,fx,gx;

printf("Enter an integer:\n");

scanf("%d", &x);

fx = x*x*x;

gx = (x+1)*(x+1);

printf("fx: %d\n gx: %d\n", fx, gx);

if(fx>gx)

printf("X^3 is larger");

else if(gx>fx)

printf("(X+1)^2 is larger");

return 0;

}

Function is like a black box

INPUT OUTPUT

Function

main()

printf()

scanf()

getch()

system()

3.7 PRINTF() SCANF()

RETURN VALUE

/* ch3 value1.c*/ #include <stdio.h> #include <stdlib.h> int main () { int i=10, j=20; char str[10] = "Stanford"; int printf_value; printf_value = printf("%s\n",str); printf("Return value is %d\n",printf_value); printf_value = printf("%d + %d = %d\n",i, j, i+j); printf("Return value is %d\n",printf_value); printf("\n\n"); system("PAUSE"); return 0; }

Console Output

Stanford Return value is 9 10 + 20 = 30 Return value is 13

/* ch3 value2.c*/ #include <stdio.h> #include <stdlib.h> int main() { int scanf_value; int i = 10; int j = 20; int k = 30; printf("Input three decimal value :\n"); scanf_value = scanf("%d %d %d", &i, &j, &k); printf("\nReturn value is %d.\n", scanf_value); printf(" i = %d\n", i); printf(" j = %d\n", j); printf(" k = %d\n", k); system("PAUSE"); return 0; }

Input three decimal value : 123 -987 abc Return value is 2. i = 123 j = -987 k = 30

Console Output

Hello World C Program

#include <stdio.h>

int main()

{

printf("Hello, World!\n");

return 0;

}

0

n

void

int

getch()

#include <stdio.h>

int main( )

{

char a;

a=getch();

printf("%c\n",a);

system("pause");

return 0;

}

函式與儲存類別

7.1 函式的基本觀念

7.2 函式參數

7.3 具有傳回值的函式

7.4 函式原型

7.5 遞迴函式

7.6 變數儲存種類

7.7 視域和生命期

7.8 前端處理程式

7.1 FUNDAMENTAL

Function

int main()

char getline(char line, int max)

float atoi(int a, int b, int c)

Structure of a Function

<return type> Name (input1, input2,……)

{

Statement1;

Statement2;

return () ;

}

An example of function

int sum (int x, int y)

{

int result;

result = x + y;

return (result);

}

Declaration of a Function

int exponent(int a, int x)

int exponent(int a, int x) { int result = 1; while (x > 0) { result *= a; x--; } return result; }

int main(void) { int result; result = exponent(2, 10); } return 0; }

int exponent(int a, int x) { int result = 1; while (x > 0) { result *= a; x--; } return result;}

int findarea(int , int )

int main( )

{

int one, two;

scanf("%d %d",&one ,&two);

printf("%d",findarea(one, two));

getch();

return 0;

}

int findarea(int x, int y)

{

return x * y;

}

Example: Function Call

1

2

3

4

#include <stdio.h>

int fn1(int a);

int fn2(void);

int main(void){

fn2();

return 0;}

int fn1(int a){

a = a + 7;

printf("a:%d\n", a);

return a;}

int fn2(void){

int b = 7;

fn1(b);

printf("b:%d\n", b);

return b;}

/* Ch7 title4.c */ #include <stdio.h> #include <stdlib.h> void process(void); void title(void); void choose(char); int main() { process(); process(); system("PAUSE"); return 0; } void process(void) { char ch; title(); printf("\n Choose ===> "); ch = getche(); printf("\n Echo : "); choose(ch);

} void title(void) { printf("\n\n MENU\n\n"); printf(" [1] one [2] two\n"); printf(" [3] three [4] four\n"); } void choose(char ch) { switch (ch){ case '1' : printf("ONE"); break; case '2' : printf("TWO"); break; case '3' : printf("THREE"); break; case '4' : printf("FOUR"); } }

7.2 FUNCTION PARAMETER

/* Ch7 para.c */ #include<stdio.h> #include <stdlib.h> void list(char, int); int main() { int i; list ('*',10); list('#',15); i = 20; list ('A',i); system("PAUSE"); return 0; } void list(char ch, int count) { int i; for(i=1; i<=count; i++) printf("%c", ch) printf("\n"); }

void list(char ch, int count )

void list(char, int);

Console Output

**********

###############

AAAAAAAAAAAAAAAAAAAA

7.3 FUNCTION WITH RETRUN VALUE

/* Ch7 ret1.c */ #include <stdio.h> #include <stdlib.h> int get_int(void); int find_max(int, int); int main() { int a,b; int max; a = get_int(); b = get_int(); max = find_max(a,b); printf("\nMAX(%d,%d) is %d.\n",a,b,max); system("PAUSE"); return 0;

} int get_int(void) { int num; printf("Input a valid integer : "); while (scanf("%d",&num) != 1){ while (getchar () !='\n') continue; printf("Input error! Please input again : "); } return(num); } int find_max(int x, int y) { if (x > y) return(x); else return(y); }

int find_max(int x, int y)

{

if(x>y)

return(x);

else

return(y);

}

find_max():

int get_int(void) { int num; printf("Input a valid integer : "); while (scanf("%d", &num) != 1){ while (getchar () !='\n') continue; printf("Input error! Please input again : "); } return(num); }

44

get_int()

getchar()

while (getchar () != '\n')

continue;

Console Output

Input a valid integer : 14 Input a valid integer : 62 MAX(14,62) is 62. Input a valid integer : good14 Input error! Please input again : 14 Input a valid integer : best62 Input error! Please input again : 62 MAX(14,62) is 62.

7.4 FUNCTION PROTYPE

/* Ch7 proto1.c */ #include <stdio.h> #include <stdlib.h> float get_score(void); char level(float,float,float); int main() { float s1,s2,s3; char grade; s1 = get_score(); s2 = get_score(); s3 = get_score(); grade = level(s1, s2, s3); printf("\n Your score grade is %c.\n", grade); system("PAUSE"); return 0; } float get_score(void) {

float temp; printf("Input your score : "); scanf("%f", &temp); return(temp); } char level (float a1, float a2, float a3) { float avg; printf("\n Score : %.2f %.2f %.2f\n",a1, a2, a3); avg = (a1 + a2 + a3) / 3; printf(" Average : %f.\n", avg); if(avg >= 90) return ('A'); if(avg >= 80) return ('B'); if(avg >= 70) return ('C'); if(avg >= 60) return ('D'); return('E'); }

Console Output

Input your score : 90.5

Input your score : 86.8

Input your score : 77.0

Score : 90.50 86.80 77.00

Average : 84.766668.

Your score grade is B.

7.5 Recursive Call

When a function calls itself:

/* Ch7 recur.c */ #include<stdio.h> #include <stdlib.h> void recur(int); int main() { printf("Recursive call...\n\n"); recur(4); system("PAUSE"); return 0; } void recur(int level) { printf(" BEFORE level ===> %d\n", level); if(level > 0) recur (level-1); printf(" AFTER level ===> %d\n", level); }

Recursive call...

BEFORE level ===> 4

BEFORE level ===> 3

BEFORE level ===> 2

BEFORE level ===> 1

BEFORE level ===> 0

AFTER level ===> 0

AFTER level ===> 1

AFTER level ===> 2

AFTER level ===> 3

AFTER level ===> 4

Console Ouput

/* Ch7 fact.c */ #include<stdio.h> #include <stdlib.h> unsigned int fact(int); int main() { int i; printf("Factorial...\n\n"); for(i=0; i<=17; i++) printf(" %3d! = %-3u\n",i , fact(i)); system("PAUSE"); return 0; } unsigned int fact(int num) { if (num == 0) return(1); return (num * fact (num-1)); }

Factorial...

0! = 1

1! = 1

2! = 2

3! = 6

4! = 24

5! = 120

6! = 720

7! = 5040

8!=40320

9!=362880

10!=3628800

11!=39916800

12!=479001600

13!=1932053504

14!=1278945280

15!=2004189184

16!=2004189184

17!=4006445056

7.6 Storage Class

auto、static、extern、register

auto int num, value;

static char ch = 'A';

register int cache;

Auto Variable = Local Variable

變數只能在宣告的函數中使用。

Static Variable

其它函數並無法存取這些靜態變數。

靜態變數會配置固定的記憶體位置,在重複呼叫函數時,靜態變數值都會保留下來。

External Variable

外部變數都會配置固定的記憶體位置,可在所有函數並存取外部變數。

Register Variable

針對程式中存取十分頻繁的變數,可以直接將變數置於CPU的暫存器,以便加速程式的執行。

EX.使用在迴圈的計數器變數

/* ch7 static.c */ #include <stdio.h> #include <stdlib.h> void test(void); int main() { int i; printf("static variable testing ...\n\n"); for (i=0; i<5; i++) { printf(" Iteration %d : ", i+1); test(); } system("PAUSE"); return 0; } void test(void) { int auto_var = 1; static int static_var = 1; printf(" auto_var = %d static_var = %d\n", auto_var++, static_var++); }

static variable testing ...

Iteration 1 : auto_var = 1 static_var = 1

Iteration 2 : auto_var = 1 static_var = 2

Iteration 3 : auto_var = 1 static_var = 3

Iteration 4 : auto_var = 1 static_var = 4

Iteration 5 : auto_var = 1 static_var = 5

Console Output

/* ch7 extern.c */ #include <stdio.h> #include <stdlib.h> #define SIZE 5 void auto_fun(void); void extern_fun(void); void void_fun(void); void default_fun(void); int ary[SIZE] = {1, 2, 3, 4, 5}; int main() { printf("extern variable testing ...\n\n"); auto_fun(); extern_fun(); void_fun(); default_fun(); system("PAUSE"); return 0; }

void auto_fun(void) { auto int ary[SIZE]; int i; printf("In auto_fun() :\n\n"); for (i=0;i<SIZE;i++) printf(" ary[%d] : %d\n", i, ary[i]); printf("\n\n"); } void extern_fun(void) { extern int ary[SIZE]; int i; printf("In extern_fun() :\n\n"); for (i=0; i<SIZE; i++) printf(" ary[%d] : %d\n",i , ary[i]); printf("\n\n");

} void void_fun(void) { int i; printf(" In void_fun() :\n\n"); for (i=0; i<SIZE; i++) printf(" ary[%d] : %d\n",i,ary[i]); printf("\n\n"); } void default_fun(void) { int ary[SIZE]; int i; printf(" In default_fun() :\n\n"); for (i=0; i<SIZE; i++) printf("ary[%d] : %d\n", i, ary[i]); printf("\n\n"); }

extern variable testing ... In auto_fun() : ary[0] : -10 ary[1] : 180 ary[2] : 388 ary[3] : 6593 ary[4] : -10 In extern_fun() :

Console Output

ary[0] : 1 ary[1] : 2 ary[2] : 3 ary[3] : 4 ary[4] : 5 In void_fun() : ary[0] : 1 ary[1] : 2 ary[2] : 3 ary[3] : 4 ary[4] : 5 In default_fun() : ary[0] : 7111 ary[1] : 1792 ary[2] : -10 ary[3] : 3866 ary[4] : 26496

7.7 SCOPE AND LIFETIME

Global Scope

int a;

int main(void)

{

a = 2;

}

int sub(void)

{

a = 3;

}

Function Scope

int main(void)

{ int a;

a = 2;

}

int sub(void)

{ int a;

a = 3;

}

7.8 Preprocessor

#include

#define

#define MSG printf("message.\n");

保留字 巨集名稱 巨集本體

#define PI 3.14

/* ch7 macro.c */ #include <stdio.h> #include <stdlib.h> #define MSG "macro message !\n" #define PI 3.14 #define RADIUS 10 #define AREA PI*RADIUS*RADIUS int main() { printf("MACRO MSG : %s",MSG); printf("Area of circle with radius 10 is %.2f\n",AREA); system("PAUSE"); return 0; }

Console Output

MACRO MSG : macro message !

Area of circle with radius 10 is 314.00

/* ch7 mac_fun.c */ #include <stdio.h> #include <stdlib.h> #define SQUARE(n) n*n int main() { int num1, num2; num1 = SQUARE(3); printf(" num1 = %d \n",num1); num2 = SQUARE(10); printf(" num2 = %d \n",num2); system("PAUSE"); return 0; }

Console Output

num1 = 9

num2 = 100

7.10 Exercise

• Exercise 1

• Exercise 2

Homework #7

• 7.11 No.3 (P.40)

• Write or Print in A4 Paper

• Name & I.D.

創業家培訓課程 12/7 9:00-16:30

主題:如何運用創新與創意開創新事業

演講者:葉勇志

地點:東海大學育成中心創育工坊

報名方式:請至東海大學活動報名系統完成報名手續

校內分機30146,E-mail:victoria620@thu.edu.tw

C Programming is Easy!

Any Question?

aragornyeh@gmail .com

top related