第二章:分支结构
【例3-1】简单的猜数游戏。输入你所猜的整数(假定1~100内),与计算机产生的被猜数比较,若相等,显示猜中;若不等,显示与被猜数的大小关系。
/*简单的猜数游戏*/ #include<stdio.h> int main(void) { int mynumber=38; int yournumber; printf("Input your number:"); scanf("%d",&yournumber); if(yournumber=mynumber) printf("Ok!you are right!\n"); else if(yournumber>mynumber) printf("Sorry!your number is bigger than my number!\n"); else printf("Sorry!your number is smaller than my number!\n"); return 0; }
【例3-2】输入一个整数,判断该数是奇数还是偶数。
/*判断是奇数还是偶数*/ #include<stdio.h> int main(void) { int number; printf("Enter a number:"); scanf("%d",&number); if(number%2==0){ printf("The number is even.\n"); } else{ printf("The number is odd.\n"); } return 0; }
【例3-3】输入一个正整数n,再输入n个学生的成绩,计算平均分,并统计不及格成绩的学生人数。
/* 输入一批学生的成绩,计算平均分,并统计不及格成绩的学生人数*/ #include<stdio.h> int main(void) { int count,i,n; double grade,total; printf("Enter n:"); scanf("%d",&n); total=0; count=0; for(i=1;i<=n;i++){ printf("Enter grade#%d:",i); scanf("%lf",&grade); total=total+grade; if(grade<60){ count++; } } printf("Grade average=%.2f\n",total/n); printf("Number of failures=%d\n",count); return 0; }
【例3-4】继续讨论例2-4中提出的分段计算水费问题。
/*计算多分段函数*/ #include<stdio.h> int main(void) { double x,y; printf("Enter x:"); scanf("%lf",&x); if(x<0){ y=0; } else if(x<=15){ y=4*x/3; } else{ y=2.5*x-10.5; } printf("f(%.2f)=%.2f\n",x,y); return 0; }
【例3-5】求解简单的四则运算。
/*求解简单的四则运算*/ #include<stdio.h> int main(void) { double value1,value2; char op; printf("Type in an expression:"); scanf("%lf%c%lf",&value1,&op,&value2); if(op=='+') printf("=%.2f\n",value1+value2); else if(op=='-') printf("=%.2f\n",value1-value2); else if(op=='/') printf("%.2f\n",value1/value2); else printf("Unknown operator\n"); return 0; }
【3-6】略
【3-7】输入10个字符,统计其中英文字母,数字字符和其他字符个数。
/* 统计字符,包括英文字母、数字字母和其他字母的个数 */ #include<stdio.h> int main(void) { int digit,letter,other; char ch; int i; digit=letter=other=0; printf("Enter 10 characters:"); for(i=1;i<=10;i++){ ch=getchar(); if(ch>='a'&& ch<='z')//(ch>='A'&& ch<='Z')) letter++; else if(ch>='0'&& ch<='9') digit++; else other++; } printf("letter=%d,digit=%d,other=%d\n",letter,digit,other); return 0; }
【例3-8】查询自动售货机中商品的价格。
/* 查询自动售货机中商品的价格 */ #include<stdio.h> int main(void) { int choice,i; double price; for(i=1;i<=5;i++){ printf("[1]Select crisps\n"); printf("[2]Select popcorn\n"); printf("[3]Select chocolate\n"); printf("[4]Select cola\n"); printf("[0]exit\n"); printf("Enter choice:"); scanf("%d",&choice); if(choice==0) break; switch(choice){ case1:price=3.0;break; case2:price=2.5;break; case3:price=4.0;break; case4:price=3.5;break; default:price=0.0;break; } } printf("Thanks\n"); return 0; }
【3-9】求解简单表达式。
/*求解简单的四则运算表达式*/ #include<stdio.h> int main(void) { double value1,value2; char op; printf("Type in an expression:"); scanf("%lf%c%lf",&value1,&op,&value2); switch(op){ case'+': printf("=%.2f\n",value1+value2); break; case'-': printf("=%.2f\n",value1-value2); break; case'*': printf("=%.2f\n",value1*value2); case'/': printf("=%.2f\n",value1/value2); break; default: printf("Unknown operator\n"); break; } return 0; }
【3-10】输入10个字符,分别统计出其中空格或回车,数字字符和其他字符的个数。
/* 统计字符,包括空格或回车、数字字符和其他字符的个数 */ #include<stdio.h> int main(void) { int blank,digit,other; char ch; int i; blank=digit=other=0; printf("Enter 10 characters:"); for(i=1;i<=10;i++){ ch=getchar(); switch(ch){ case' ': case'\n': blank++; break; case'0': case'1': case'2': case'3': case'4': case'5': case'6': case'7': case'8': case'9': digit++; break; default: other++; break; } } printf("blank=%d,digit=%d,other=%d\n",blank,blank,digit,other); return 0; }
【例3-11】求简单表达式。
/*求解简单的四则运算表达式*/ #include<stdio.h> int main(void) { double value1,value2; char op; printf("Type in an expression:"); scanf("%lf%c%lf",&value1,&op,&value2); if(op=='+') printf("=%.2f\n",value1+value2); else if(op=='-') printf("%.2f\n",value1-value2); else if(op=='*') printf("=%.2f\n",value1*value2); else if(op=='/') if(value2!=0) printf("=%.2f\n",value1/value2); else printf("Divisor can not be 0!\n"); else printf("Unknown operator!\n"); return 0; }
心得:敲代码时,一定要敲完整。不要漏了哪一条,有时候敲漏了,但组建时并不能找出其中的错误,依然能够运行,但结果会有一点不同。
问题:在组建有错误后,怎样能快速地找出错误所在???????