- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言学习100问
学习C语言百问
问题1:什么是分程序(复合语句)?
分程序是指一对大括号{}之间的一段C语言程序。每一个C函数的函数体都是包括在一对大括号中,switch语句所有取值情况的列举也是包括在一对大括号中,以此可以看出分程序在C语言中使用非常广泛,用户也可以根据需要自己组织分程序(更多的是程序功能的需要),它在C程序中的功能相当于一局部程序块,其间可以定义变量,这种变量称为局部变量,只能定义在分程序的开始部分,变量的有效范围是分程序内部。如果局部变量与分程序以外的变量重名,在本分程序内部,该局部变量对外面的同名变量进行屏蔽,另外提示一点的是,一般不用分程序来保存变量,例如:
#include stdio.h
int test=5;
void main( )
{
int test=10;
void fun1( );/*-----5----*/
fun1( );
printf(“2--%d\n”,test);/*-----10-----*/
{int test=15;
printf(“3--%d\n”,test);/*-----15-----*/
}
}
void fun1( )
{
printf(“1--%d\n”,test);
}
问题2:什么情况下用switch语句比if语句的多重嵌套更适合?
如果有两个以上基于同一个数字型变量(整型变量,字符型变量,枚举类型变量等)的条件表达式,尤其是对于作为判断的数字型变量的取值很有限,且对每一个不同的取值,其所做的处理也不一样的情况,最好使用一条switch语句,这样更易于阅读各维护。这里有两点需要注意就是,第一就是用于作为判断条件的变量一定要是数字型的,另一点就是所有的判断条件都是基于同一个数字变量,而不是多个变量。
例如:有如左下的if嵌套更适合用右下的switch语句表达。
char grade;
if(grade= =’A’) printf(“85~100\n”);
else if(grade= =’B’) printf(“70~84\n”);
else if(grade= =’C’) pritnf(“60~69\n”);
else if(grade= =’D’) printf(“60\n”);
else printf(“error\n”);
switch(grade)
{case ‘A’: printf(“85~100\n”);break;
case ‘B’: printf(“70~84\n”);break;
case ‘C’: printf(“60~69\n”);break;
case ‘D’: printf(“60\n”);break;
default: printf(“error”);break;}
问题3:switch语句必须包含default分支吗?
回答是否定的。但是为了逻辑上的严密性,一般应写default分支,这样在出现所有的case子句以外的取值时才不至于难以确定其错误所在,例如象上面的例子,如省略了后面的default子句,而用户如输入的是除 ‘A’,‘B’,‘C’,‘D’以外的其他字符时,程序不做出任何反应,而这本身是一种非法输入。
问题4:switch语句的最后一个分支可以不要break语句吗?每一个case分支后面是否必须要加break语句?
两者的答案都是“不”。大家知道,在switch 语句中,如果作为条件判断的数字表达式的值与某一个case后面的取值相等,则以该case分支语句作为入口顺序执行后续语句,如遇上break语句,则结束switch语句的处理,转而处理switch语句的后续语句,根据这个道理显然最后一个分支中的break语句可以省略,因为无论是否有break语句,此时都会结束switch语句的处理。
问题5:怎样判断循环是否提前结束?在多循环条件下,又如何知道是因为哪个条件不满足而使循环提前结束的?
解决这种问题通常是在循环语句的后面再用一个或多个判断语句检查循环变量的取值,从而确知循环是正常结束还是提前结束,如循环条件是由多个循环变量构成,则可以对各个变量分别进行判断。例如:
#include math.h
void isprime(int num)
{ int s;
for(s=2;s=sqrt(num);s++)
if(num % s = =0) flag=0;
if(ssqrt(num)) return(1);
else return(0);
}
以上的例子用于判断给定的数是否为素数,函数中的循环语句正常结束是当s的取值大于给定数的平方根,但只要该数
文档评论(0)