C语言学习历程(六)几个有趣的循环和关键字的小程序

1.#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;

}

这个程序的小知识点在于break和i++的用法,break表示中断当前循环,i++表示先输出i值,再将i+1;

2.int main()
{
int i,k;
for(i=0;k=-1,k=1;i++,k++)
{
printf(“……\n”);
}
return 0;
}
第二个程序的注意点在于for循环语句的判断条件,k=-1和k=1是这个循环的判断条件,顺序执行下来,最后k=1,赋值成功,判断语句的值为1,因此循环条件成立,每循环一次,k都会赋值为1;所以此判断条件永远是1,无限循环;

#define SQR(x) x*x
int main()
{
int a;
int k=3;
a=++SQR(k+1);
printf(“%d\n”,a);
return 0;
}
第三个程序的知识点在于,宏定义define的用法,首先,define只会进行替换,而不会计算,所以++SQR(k+1)=++k+1*k+1,所以结果为4+1*4+1=9;

int main()
{
int i=1;
printf(“%d,%d\n”,sizeof(++i),i);
return 0;

}
第四个程序的知识点在于关键字sizeof(i++),由于sizeof()是计算内存大小,对立面的变量数值不会改变,并且立面的运算不会成立,因此i++没有执行,所以i不变。

int main()
{
int i,j,t;
int a[5]={3,1,5,4,2};
for(i=0;i<4;i++)
{
for(j=i+1;j<5;j++)
{
if(a[i]>a[j])
{
t=a[i],a[i]=a[j],a[j]=t;
}
}

}
for(i=0;i<5;i++)
{
printf("%d",a[i]);

}

return 0;
}
最后是一个简单的冒泡排序,注意点在于要将一个元素与后面的每一个元素比较一次,需要使用两次循环,其次就是循环的时候要注意次数,当前四个元素已经比较完时,此排序已经完成,就不需要再去判断第五个了,否则会多循环一次,多占用内存空间。最后是整型数组的输出,必须要用循环一个一个元素来输出。

你可能感兴趣的:(C语言)