if else ifelse if 1 1 else if

  • Slides: 80
Download presentation

if. . . else if…else语句语法格式: if (条件表达式 1) 语句 1; else if (条件表达式 2)

if. . . else if…else语句语法格式: if (条件表达式 1) 语句 1; else if (条件表达式 2) 语句 2; …… else (条件表达式n) 语句n; Ø示例 Ø main(){ int x; scanf(“%d”, &x); if(x>=90 && x <=100) printf(“Excellent!n ”); else if(x>=80) printf(“Good!n”); else if(x>=60) printf(“Pass!n”) ; else if(x>=0) printf(“Fail!n”); else printf(“Error!n”) ;

Ø switch语句示例 main(){ char grade; scanf(“%c”, &grade); switch(grade){ case ‘A’: printf(“ 85~100n”); break; case

Ø switch语句示例 main(){ char grade; scanf(“%c”, &grade); switch(grade){ case ‘A’: printf(“ 85~100n”); break; case ‘B’: printf(“ 70~84n”); break; case ‘C’: printf(“ 60~69n”); break; case ‘D’: printf(“ 0~60n”); break; default: printf(“Error!”); } }

Ø 用for语句求: 1!+2!+3!+. . . +10! main() { long int nn = 1; long

Ø 用for语句求: 1!+2!+3!+. . . +10! main() { long int nn = 1; long int sum = nn; for(int i = 2; i <= 10; i++) { nn *= i; sum += nn; } printf("The result is: %d " sum); }

4. 2 循环结构程序设计—— break和continue语句示例 Ø 求平方数小于1000的 所有整数 main() { int i, j; for (i=1;

4. 2 循环结构程序设计—— break和continue语句示例 Ø 求平方数小于1000的 所有整数 main() { int i, j; for (i=1; ; i++) { j = i*i; if ( j>=1000) break; printf(“%dn”, j); } printf(“end”); } Ø 求1— 200之间不能被 3整 除的数 main() { int i; for(i=1; i<=200; i++) { if ( i%3==0) continue; printf(“%dn”, i) ; } }

源程序: #include <math. h> main(){ float a, b, c, x 1, x 2, disc;

源程序: #include <math. h> main(){ float a, b, c, x 1, x 2, disc; printf(“Please input a, b, c: n”); scanf(“%f %f %f”, &a, &b, &c); disc=b*b-4*a*c; if(disc>=0) { x 1=(-b+sqrt(disc))/(2*a); x 2=(-b-sqrt(disc))/(2*a); printf(“x 1=%5. 2 f, x 2=%5. 2 fn”, x 1, x 2); } else printf(“parameters error!”); }

源程序: main(){ int x, y; printf(“Please input x: n”); scanf(“%d”, &x); if(x<0) y=-1; else

源程序: main(){ int x, y; printf(“Please input x: n”); scanf(“%d”, &x); if(x<0) y=-1; else if(x==0) y=0; else y=1; printf(“x=%d, y=%d”, x, y); }

流程图: Start 0 ->sum 1, sum 2 输入整数a Y a==0 N N a>0 Y

流程图: Start 0 ->sum 1, sum 2 输入整数a Y a==0 N N a>0 Y sum 1+=a sum 2+=a 输入整数a 输出结果 End

源程序: main(){ int a, sum 1, sum 2; sum 1=sum 2=0; printf(“Please input integers:

源程序: main(){ int a, sum 1, sum 2; sum 1=sum 2=0; printf(“Please input integers: n”); scanf(“%d”, &a); while(a){ if(a>0) sum 1+=a; else sum 2+=a; scanf(“%d”, &a); } printf(“sum 1=%d, sum 2=%dn”, sum 1, sum 2); }

源程序: main(){ int n, sum=0; printf(“Please input an integer: n”); scanf(“%d”, &n); if(n>0) {

源程序: main(){ int n, sum=0; printf(“Please input an integer: n”); scanf(“%d”, &n); if(n>0) { do{ sum+=n%10; n/=10; }while(n>0); printf(“sum=%d”, sum); } else printf(“Data error!”); }

源程序: #include <math. h> main(){ int m, i, k; printf(“Please input an integer: n”);

源程序: #include <math. h> main(){ int m, i, k; printf(“Please input an integer: n”); scanf(“%d”, &m); k=sqrt(m); for(i=2; i<=k; i++) if(m%k==0) break; if(i>k) printf(“%d is a prime number!n”, m); else printf(“%d is not a prime number!n”, m); }

main(): Start ex(m): Start 100 ->i 0 ->sum; m->z ex(i)==0 Y 输出: i N

main(): Start ex(m): Start 100 ->i 0 ->sum; m->z ex(i)==0 Y 输出: i N i++ Y i<=999 N main(): End z>0 Y z%10 ->k N sum+=k*k*k z/10 ->z return(m==sum)

源程序:int ex(int m){ int sum=0, z, k; z=m; while(z>0){ k=z%10; sum+=k*k*k; z/=10; } return(m==sum);

源程序:int ex(int m){ int sum=0, z, k; z=m; while(z>0){ k=z%10; sum+=k*k*k; z/=10; } return(m==sum); } main(){ for(int i=100; i<=999; i++){ if(ex(i)) printf(“%dn”, i); }

Start 0 ->word; 0 ->number 输入字符串 str[i]->c c==‘�’ N c==‘ ’ Y N End

Start 0 ->word; 0 ->number 输入字符串 str[i]->c c==‘’ N c==‘ ’ Y N End 输出字母个数 word==0 Y Y 0 ->word N 1 ->word number++ i++

源程序: #include <stdio. h> main(){ char str[100], c; int i, number=0, word=0; printf(“Please input

源程序: #include <stdio. h> main(){ char str[100], c; int i, number=0, word=0; printf(“Please input a sentence: n”); gets(str); c=str[0]; while(c){ if(c==‘ ‘) word=0; else if(word==0){ word=1; number++; } } printf(“Total words: %d”, number); }

习题 3 指出程序中错误: main(){ int a=1; int b=55555; float k; k=2. 0 E 4;

习题 3 指出程序中错误: main(){ int a=1; int b=55555; float k; k=2. 0 E 4; printf(“a=%d, b=%d, k=%fn”, a, b, c) ; } Ø 错误: int b=55555; 超出int数据范围 (-31768~32767)。应该改为: long b=55555; Ø

Ø Ø 习题 4 程序运行结果: main(){ int i, sum; i=sum=0; while(i<=100) sum+=i; printf(“ 1+2+…+100=%dn”,

Ø Ø 习题 4 程序运行结果: main(){ int i, sum; i=sum=0; while(i<=100) sum+=i; printf(“ 1+2+…+100=%dn”, sum); } 程序运行结果: 5050

Ø 习题 5 程序运行后,求a的值: main(){ int a, b; for(a=1, b=1; a<=100; a++){ if(b>=20) break;

Ø 习题 5 程序运行后,求a的值: main(){ int a, b; for(a=1, b=1; a<=100; a++){ if(b>=20) break; if(b%3==1){ b+=3; continue; } b-=5; } } Ø 1) 2) 3) 4) Ø Ø Ø a=1 a=2 a=3 a=4 b=1 b=4 b=7 b=10 Ø Ø 5) 6) 7) 8) a=5 a=6 a=7 a=8 b=13 b=16 b=19 b=22

Ø Ø 习题 8 编写输出以下图案程序,行数由用户输入 A BBB CCCCC ………………. main(){ int n; char x=‘A’;

Ø Ø 习题 8 编写输出以下图案程序,行数由用户输入 A BBB CCCCC ………………. main(){ int n; char x=‘A’; printf(“Please input an integer: n”); scan(“%d”, &n); if(n>0){ for(int i=1; i<=n; i++){ for(int j=1; j<=n-i; j++) printf(“ “); for(j=1; j<=2*i-1; j++) printf(“%c”, x); printf(“n”); x++; } }

Ø Ø 习题 9 将输入的20个整数保存到数组中,求其最 小值、最大值和平均值。 main(){ int array[20], min, max, sum, i; float

Ø Ø 习题 9 将输入的20个整数保存到数组中,求其最 小值、最大值和平均值。 main(){ int array[20], min, max, sum, i; float ave; printf(“Please input 20 integers: n”); for(i=0; i<20; i++) scanf(“%d”, &array[i]); min=max=array[0]; sum=0 for(i=0; i<20; i++){ if(array[i]<min) min=array[i]; if(array[i]>max) max=array[i]; sum+=array[i]; } ave=float(sum)/20; printf(“Min=%dn. Max=%dn. Average=%f n”, min, max, ave); }

Ø Ø 习题 10 在已知字符串中查找某个字符首次出现的 位置。 #include <string. h> main(){ char str[]=“f 4 jk

Ø Ø 习题 10 在已知字符串中查找某个字符首次出现的 位置。 #include <string. h> main(){ char str[]=“f 4 jk 93 mg 946654”; int i=0, len=strlen(str); char dest; printf(“Please input a character: n”); scanf(“%c”, dest); while(str[i]){ if(str[i]==dest) break; i++; } if(i<len) printf(“At No %d place!n”, i+1); else printf(“Not found!”); }