控制语句与函数(错题+编程题)

错题:

  1. 静态变量分为静态局部变量和静态全局变量。静态全局变量在整个程序中起作用(即作用域为当前整个程序);静态局部变量在程序的某个函数中起作用,只有在调用该函数时,静态局部变量才起作用,但它们的生存周期都贯穿于整个程序。
  2. 在C语言中,函数的定义是平等的,它们之间只能相互调用。在每个函数中定义的变量,其作用域只能在相应的函数内部,因此不同的函数使用相同的变量名字,在内存中占用不同的存储单元;函数定义的形参也是局部变量;在复合语句内定义的变量只能在对应的复合语句中有效。
  3. 形参是虚拟的,不占用存储单元。形参只有在被调用时才会分配内存,调用之前不分配内存,当然不占用存储单元。
  4. 函数的形参只能是变量,而实参可以是常量、变量或表达式。
  5. C语言规定,函数返回值的类型是由在定义函数时所指定的函数类型决定的。若调用的是一个非void函数,且此函数中没有return语句,则该函数返回一个不确定的值。
  6. 只有在使用时才为该类型变量分配内存的存储类型说明是auto、register。auto和register只能定义为局部变量,而局部变量(静态局部变量除外)都是在运行中使用时才分配内存空间。
  7. continue语句可以用在Switch和循环语句中,其作用是结束本次循环(continue后面的语句不执行),开始下次循环。而break语句可以用在Switch和循环语句中,其功能是跳出本层的Switch结构或结束本层循环体。
  8. C语言变量的存储类型有static、auto、extern、register。
  9. 变量被赋初值可以分为编译前运行时两个阶段。
  10. 嵌套循环:输出为2,0
    当b=0(即i为偶数)时,k才自加1,1~5范围内只有2,4两个偶数,因此k=2,最后一次循环i=5,则b=1,b–后b的值为0。
int i,b,k=0;
for(i=1;i<=5;i++){
    b=i%2;
    while(b--==0) k++;
}
printf("%d,%d",k,b);
  1. do…while,switch嵌套:输出为1。
int i=5do{
switch(i%2){
case 0:i--;break;
case 1:i--;continue;
}
i--;i--;
printf("%d",i);
}while(i>0);
  1. continue语句:输出为3,1,-1,3,1,-1
    j+i为奇数时,执行if结构的语句序列,否则执行if语句的后续语句。i=0,j=4,i+j是4,为偶数,执行–i,j–后i=-1,j=2,执行内循环,j+i是1,执行j–后j=1,输出j。执行continue语句,结束本次循环。
    for(i=0;i<3;i++,i++){
    for(j=4;j>=0;j–){
    if((j+i)%2){
    j–;
    printf("%d, “,j);
    continue;
    }
    –i;
    j–;
    printf(”%d, ",j);
    }
    }
  2. 小心自减自加运算:输出为1,-2
int y=2,a=1;
while(y--!=-1)
do{
a*=y;
a++;
}while(y--);
printf("%d,%d\n",a,y);
  1. 静态变量static:在函数fun中,c为静态局部变量,赋初值是在编译阶段完成的,只能赋值一次,每次调用该函数都会继承上一次的值。fun(0)=a+b+c=5+1+4=10; fun(1)=a+b+c=5+1+5=11; fun(2)=a+b+c=5+1+6=12;
#include<stdio.h>
int fun(int);
int main(){
int i,a=5;
for(i=0;i<3;i++)
printf("%d %d\n",i,fun(a));
printf("\n");
return 0;
}
int fun(int a){
int b=0;
static int c=3;
b++;
c++;
return (a+b+c);
}
  1. 公式类精度满足:for(n=1;t>=eps;n++)
  2. 防止空格连续输出:
#include<stdio.h>
int main(){
char cx,front='\0';
while(cx=getchar()!='\n'){
if(cx!=' ')putchar(cx);
if(cx==' ')
if(front!=cx)
putchar(cx)
front=cx;
}
return 0;
}
  1. 阶乘递归:
long fun(int n){
if(n>1)  return (n*fun(n-1));
return 1;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值