一、程序举例
1、输出字符
#include<stdio.h>
int main()
{
char c4 = '\101',c5 = '\116';// \ddd 形式,转义字符,c4:65;c5:78
printf("小向重温C语言第四天\n");
printf("\n");
printf("\t\b%c %c %d\n",c4,c5,c5-c4);//输出:A N 13
printf("123456\b\b\b\b89\n"); //输出:128956
printf("123456\n78\b\b\b\b90\n");//输出:123456,下一行输出 90
return 0;
}
①‘\101’,'\116'是转义字符 \ddd 的形式,ddd是八进制,后面转化为十进制使用。
② \b 转义字符:当前位置后退1个字符,若左边一位是 \n,则不移动。
2、计算逗号表达式
#include<stdio.h>
int main()
{
int a,b,c,d;
c = (b = 12,a = 1);//将最后面一个值赋给 c
d = (a = 11,b =12,c = 1);//将最后面一个值赋给 d
printf("a=%d\tb=%d\tc=%d\td=%d\n",a,b,c,d);//输出:a=11 b=12 c=1 d=1
return 0;
}
从左到右求解,最后将最后一个表达式的值,作为整个逗号表达式的值。
3、运算符优先级
#include<stdio.h>
int main()
{
int a=3,b=4,c=5,x,y;
printf("%d\n",a+b>c&&b==c);//0
printf("%d\n",a||b+c&&b-c+1);//1
printf("%d\n",!(a>b)&&!c||1);//1
printf("%d\n",!(x=a)&&(y=b)&&0);//0
printf("%d\n",!(a+b)+c-1&&b+c/2);//1
return 0;
}
运算优先级:第一优先级:(),[],.,->,(同时出现,从右到左);第二优先级:++,--,-,*(指针),&(取地址运算符),~(按位取反),!,sizeof,(同时出现,从左到右);第三优先级:*(乘),/,%,(同时出现,从左到右);第四优先级:+,-,(从左到右);第五优先级:>>,<<,(从左到右);第六优先级:>,>=,<=,<,(从左到右);第七优先级:==,!=,(从左到右);最后:&,^,|,&&,||,?= (条件运算符),(依次减少)。
4、若一个三位数等于其各位上数字的立方和,则称这个三位数为水仙花数。例如 153 是一个水仙花数,因为153=1*1*1+5*5*5+3*3*3,编写一个程序,输出所有的水仙花数。
#include<stdio.h>
int main()
{
int i; //定义三位数
int j,k,m;//j:个位; k:十位; m:百位
for(i=100;i<1000;i++)
{
j = i%10; //个位
k = i/10%10; //十位
m = i/100; //百位
if(i==j*j*j+k*k*k+m*m*m)
printf("%d\t",i);
}
printf("\n");
return 0;
}
输出:153 370 371 407