int mainvoid int n int factorialint n scanfd

  • Slides: 53
Download presentation

函数申明与调用 int main(void) { int n; int factorial(int n); scanf("%d", &n); printf(“%dn”, factorial(n)); return

函数申明与调用 int main(void) { int n; int factorial(int n); scanf("%d", &n); printf(“%dn”, factorial(n)); return 0; } /* 主函数 */ /* 函数声明 */ /* 输入一个整数 */ /* 调用函数计算阶乘 */ int factorial(int n) { int i, fact = 1; for(i = 1; i <= n; i++) fact = fact * i; return fact; } 6

break 语句 for(iwhile(exp){ = 2; i <= m/2; i++) if(m%i == 0){ 语句 1

break 语句 for(iwhile(exp){ = 2; i <= m/2; i++) if(m%i == 0){ 语句 1 printf("No!n"); if (expb) break; } 语句 2 printf("Yes"); } 当循环有多个出口时: • 区分与处理结束条件 for (i = 2; i <= m/2; i++) if (m % i == 0) break; if (i > m/2 ) printf("Yes"); else printf("No!n"); 假 exp 真 语句 1 真 expb 假 xgliu@cad. zju. edu. cn 13858115132 循 环 体 语 句 2 18

continue 语句 假 exp while(exp){ 语句 1 if (expb) continue; 语句 2 } 真

continue 语句 假 exp while(exp){ 语句 1 if (expb) continue; 语句 2 } 真 语句 1 真 expb 假 循 环 体 语 句 2 跳过continue后面的语句,继续下一次循环 xgliu@cad. zju. edu. cn 13858115132 19

字符串 char st[20]=”hello� world!”; printf(“%d, %dn”, strlen(st), size of(st)); H e l l o

字符串 char st[20]=”hello world!”; printf(“%d, %dn”, strlen(st), size of(st)); H e l l o w o r l d !

指针 int c[ ]={10, 30, 5}, *pc; fo(pc=c; pc<c+2; pc++) printf("%d#", *pc); pc C

指针 int c[ ]={10, 30, 5}, *pc; fo(pc=c; pc<c+2; pc++) printf("%d#", *pc); pc C C+1 C+2 C+3

int sum (int *array, int n) { int i, s = 0; for(i=0; i<n;

int sum (int *array, int n) { int i, s = 0; for(i=0; i<n; i++) s += array[i]; return(s); } b b[0] array b[5] int main(void ) { int i; int b[5] = {1, 4, 5, 7, 9}; printf("%dn", sum(b, 5)); return 0; } sum(b, 5) b[0]+b[1]+. . . +b[4] sum(b, 3) b[0]+b[1]+b[2] sum(b+1, 3) b[1]+b[2]+b[3] sum(&b[2], 3) b[2]+b[3]+b[4] 48

void sort(int *array, int n) { int i, j, t; for(i=1; i<n; i++) for(j=0;

void sort(int *array, int n) { int i, j, t; for(i=1; i<n; i++) for(j=0; j<n-i; j++) if(array[j]>array[j+1]){ t = array[j]; array[j] = array[j+1]; array[j+1] = t; } } int main(void ) { int i, a[10]; for(i=0; i<10; i++) scanf("%d", &a[i]); sort(a, 10); for(i=0; i<10; i++) printf("%d ", a[i]); printf("n"); return 0; } 49

char sa[ ] = "array"; char *sp = "point"; printf("%s ", sa); printf("%s ",

char sa[ ] = "array"; char *sp = "point"; printf("%s ", sa); printf("%s ", sp); printf("%sn", "string"); array point string printf("%s ", sa+2); printf("%s ", sp+3); printf("%sn", string"+1); ray nt tring 数组名sa、指针sp和字符串 "string" 的值都是 地址 51

示例 char sa[ ] = "This is a string"; char *sp = "This is

示例 char sa[ ] = "This is a string"; char *sp = "This is a string"; strcpy (sa, "Hello"); sp = "Hello"; sa = “Hello”; 非法 数组名是常量,不能对它赋值 53