几个基础小程序(2)(零碎面试重点)
1.
#include<stdio.h>
int main()
{
int i=1;
printf("%d,%d ",sizeof(++i),i);
printf("%d",i);
return 0;
}
运行结果:4,1
1
要点:运算符sizeof()只做计算,不做运算,即只计算字节,int为4个字节,故输出4,又sizeof括号中的++i没做运算,故i为1。
2.
#include<stdio.h>
#include<string.h>
int main()
{
char str[12]={s,t,r,i,n,g};
printf("%d ",strlen(str));
printf("%d ",sizeof(str));
return 0;
}
运行结果:6
12
要点:strlen为string中的函数,为字长计算,string共6个 字符,遇见 就停止,而sizeof则表示此数组长度,已经固定为12。
3.
#include<stdio.h> #define SQR(x) x*x int main() { int a; int k=3; a=++SQR(k+1); printf("%d ",a); }
运行结果:9
要点:a=(++k)+1*(++k)+1=(3+1)+1*(3+1)+1=4+4+1=9,注意宏定义的用法,且自增运算符只用在变量上。
4.
#include<stdio.h> int main() { int i,k; for(i=1;k=-1,k=1;k++) { printf("...... "); } } 运行结果:......
......(无限循环)
要点:for循环语句中的判断条件:k=-1,k=1为真即条件始终成立,故不断循环,若将判断条件改为k=0,则结果为无输出。
5. 5.
#include<stdio.h>
int main()
{
int i;
for(i=1;i+1;i++)
{
if(i>4)
{
printf("%d",i++);
break;
}
}
printf("%d",i++);
return 0;
} #include
int main() { int i; for(i=1;i+1;i++) { if(i>4) { printf("%d",i++); break; } } printf("%d",i++); return 0; }
int main()
{
int i;
for(i=1;i+1;i++)
{
if(i>4)
{
printf("%d",i++);
break;
}
}
printf("%d",i++);
return 0;
} #include
运行结果:56 运行结果:56
要点:进入for循环时,首先初始化条件i=1,接着判断条件i+1是否满足,满足进入循环体,循环结束后i++,再次判断条件i+1是否满足后再次进入循环体。当i>4,即i=5时进入if循环语句,输出5后break,跳出本层循环,输出i++,即i=6,故运行结果为56。
要点:进入for循环时,首先初始化条件i=1,接着判断条件i+1是否满足,满足进入循环体,循环结束后i++,再次判断条件i+1是否满足后再次进入循环体。当i>4,即i=5时进入if循环语句,输出5后break,跳出本层循环,输出i++,即i=6,故运行结果为56。
要点:进入for循环时,首先初始化条件i=1,接着判断条件i+1是否满足,满足进入循环体,循环结束后i++,再次判断条件i+1是否满足后再次进入循环体。当i>4,即i=5时进入if循环语句,输出5后break,跳出本层循环,输出i++,即i=6,故运行结果为56。