C编程标幺
如果真正掌握了C 语言,你就能很轻易的回答上来。这个问题就请读者试着回答一下吧。本章不会像关键字一样一个一个深入讨论,只是将容易出错的地方讨论一下。
表(2.1)标准C 语言的基本符号

C 语言的基本符号就有20 多个,每个符号可能同时具有多重含义,而且这些符号之间相互组合又使得C 语言中的符号变得更加复杂起来。
你也许听说过“国际C 语言乱码大赛(IOCCC)”,能获奖的人毫无疑问是世界顶级C程序员。这是他们利用C 语言的特点极限挖掘的结果。下面这个例子就是网上广为流传的一个经典作品:
#i nclude <stdio.h>
main(t,_,a)char *a;{return!0<t?t<3?main(-79,-13,a+main(-87,1-_,
main(-86,0,a+1)+a)):1,t<_?main(t+1,_,a):3,main(-94,-27+t,a)&&t==2?_<13?main(2,_+1,"%s %d %d
"):9:16:t<0?t<-72?main(_,t,"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw'
iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c ;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/"):t<-50?_==*a?putchar(31[a]):main(-65,_,a+1):main((*a=='/')+t,_,a+1):0<t?main(2,2,"%s"):*a=='/'||main(0,main(-61,*a,"!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:
uwloca-O;m.vpbks,fxntdCeghiry"),a+1);}
还没发狂?看来你抵抗力够强的。这是IOCCC 1988 年获奖作品,作者是Ian Phillipps。
毫无疑问,Ian Phillipps 是世界上最顶级的C 语言程序员之一。你可以数数这里面用了多少个符号。当然这里我并不会讨论这段代码,也并不是鼓励你也去写这样的代码(关于这段代码的分析,你可以上网查询)。
B. C语言编程
10个C语言新手编程时常犯的错误及解决方式
C语言的最大特点是:功能强、使用方便灵活。C编译的程序对语法检查并不象其它高级语言那么严格,这就给编程人员留下“灵活的余地”,但还是由于这个灵活给程序的调试带来了许多不便,尤其对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误。看着有错的程序,不知该如何改起,小编通过对C的学习,积累了一些C编程时常犯的错误,写给各位学员以供参考。
1、将字符常量与字符串常量混淆。
char c;
c="a";
在这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。C规定以“\”作字符串结束标志,它是由系统自动加上的,所以字符串“a”实际上包含两个字符:‘a'和‘\0',而把它赋给一个字符变量是不行的。
2、输入数据时,企图规定精度。
scanf("%7.2f",&a);
这样做是不合法的,输入数据时不能规定精度。
3、输入字符的格式与要求不一致。
在用“%c”格式输入字符时,“空格字符”和“转义字符”都作为有效字符输入。
scanf("%c%c%c",&c1,&c2,&c3);
如输入a b c
字符“a”送给c1,字符“ ”送给c2,字符“b”送给c3,因为%c只要求读入一个字符,后面不需要用空格作为两个字符的间隔。
4、输入输出的数据类型与所用格式说明符不一致。
例如,a已定义为整型,b定义为实型
a=3;b=4.5;
printf("%f%d\n",a,b);
编译时不给出出错信息,但运行结果将与原意不符。这种错误尤其需要注意。
5.switch语句中漏写break语句。
例如:根据考试成绩的等级打印出百分制数段。
switch(grade)
{
case 'A':printf("85~100\n");
case 'B':printf("70~84\n");
case 'C':printf("60~69\n");
case 'D':printf("<60\n");
default:printf("error\n");
}
由于漏写了break语句,case只起标号的作用,而不起判断作用。因此,当grade值为A时,printf函数在执行完第一个语句后接着执行第二、三、四、五个printf函数语句。正确写法应在每个分支后再加上“break;”。例如
case 'A':printf("85~100\n");break;
6、定义数组时误用变量。
int n;
scanf("%d",&n);
int a[n];
数组名后用方括号括起来的是常量表达式,可以包括常量和符号常量。即C不允许对数组的大小作动态定义。7、在不应加地址运算符&的位置加了地址运算符。
scanf("%s",&str);
C语言编译系统对数组名的处理是:数组名代表该数组的起始地址,且scanf函数中的输入项是字符数组名,不必要再加地址符&。应改为:
C. 简单的C语言编程
#include <stdio.h>
#include <string.h>
void main()
{
char a1[19], a2[19];
char b1[13], b2[13];
char c1[9], c2[9];
a1[18] = a2[18] = '\0';
c1[8] = c2[8] = '\0';
printf("input the first id:\n");
scanf("%s", a1);
printf("input the second id:\n");
scanf("%s", a2);
strcpy(b1, &a1[6]);
printf("%s\n", b1);
strcpy(b2, &a2[6]);
strncpy(c1, b1, 8);
strncpy(c2, b2, 8);
printf("first :%s\n", c1);
printf("second:%s\n", c2);
if(strcmp(c1, c2) == 0)
printf("age: the first = the second\n");
else if(strcmp(c1, c2) > 0)
printf("age: the first < the second\n");
else
printf("age: the first > the second\n");
}
D. c语言编程用的符号有哪些是什么意思
1、C语言常用编程符号:
%取余数 5%3=2
&位的和 2&3=2
|位或 2|3=3
!非 !2=0
&&和 3&&5为真 4&&0 为假
||或 3||0为真 0||0为假
+= 相当于 a+=b a=a+b,其他相似 如*= -= /=
<< 位向左移
>>位向右移
sizeof 确定占的空间大小 sizeof(int)
>< >= <=这就是大于小于大于等于,小于等于
a?b:c判断,如果a为真,则返回b,否则返回c
!=不等于
++ ——自增自减,a--相当于a=a-1
2、运算符优先级:

E. C语言编程中%4.2f是什么意思
输出一个浮点型数据,最小宽度为4个字符宽(包括小数点在内),不足4位右对齐,左补空格,小数点后保留两位小数。
如:
printf("%4.2f", 1.2 ); //输出结果 1.20
printf("%4.2f", 1.195 ); //输出结果 1.20
printf("%4.2f", 1.194 ); //输出结果 1.19
printf("%4.2f", 12.195 ); //输出结果 12.20

(5)C编程标幺扩展阅读:
printf格式说明:
可以在"%"和字母之间插进数字表示最大场宽。例如: %3d 表示输出3位整型数, 不够3位右对齐。
%9.2f 表示输出场宽为9的浮点数, 其中小数位为2, 整数位为6,小数点占一位, 不够9位右对齐。
%8s 表示输出8个字符的字符串, 不够8个字符右对齐。
如果字符串的长度、或整型数位数超过说明的场宽, 将按其实际长度输出。
但对浮点数, 若整数部分位数超过了说明的整数位宽度, 将按实际整数位输出;
若小数部分位数超过了说明的小数位宽度, 则按说明的宽度以四舍五入输出。
另外, 若想在输出值前加一些0, 就应在场宽项前加个0。
例如: %04d 表示在输出一个小于4位的数值时, 将在前面补0使其总宽度为4位。
如果用浮点数表示字符或整型量的输出格式, 小数点后的数字代表最大宽度,小数点前的数字代表最小宽度。
例如: %6.9s 表示显示一个长度不小于6且不大于9的字符串。若大于9, 则第9个字符以后的内容将被删除。
(2). 可以在"%"和字母之间加小写字母l, 表示输出的是长型数。
例如: %ld 表示输出long整数
%lf 表示输出double浮点数
(3). 可以控制输出左对齐或右对齐, 即在"%"和字母之间加入一个"-" 号可
说明输出为左对齐, 否则为右对齐。
例如: %-7d 表示输出7位整数左对齐
%-10s 表示输出10个字符左对齐
参考资料:网络——printf()
F. c语言编程有什么特殊符号,代表什么,比如\b代表退格,新手一个,求知
ASCII码值(十进制)
\a 响铃(BEL) 007 \b 退格(BS) 008 \f 换页(FF) 012
\n 换行(LF) 010 \r 回车(CR) 013 \t 水平制表(HT) 009
\v 垂直制表(VT) 011 \\ 反斜杠 092 \? 问号字符 063
\' 单引号字符 039 \" 双引号字符 034 \0 空字符(NULL) 000
\ddd 任意字符 三位八进制 \xhh 任意字符 二位十六进制
G. 关于C语言编程 的下标是指什么
在C语言中,下标用于数组的访问(读或写)。
当定义一个数组时,形式为
TYPE array_name[NUM];
即定义一个元素类型为TYPE,共计NUM个元素的数组,名为array_name。
对于标准C语言(ANSI C), 数组长度NUM必须为常量,但是目前大多数编译器均扩展到可以支持变量。
当访问数组元素时,就需要使用下标,格式为
array_name[index]
其中[index]就是数组的下标,含义为数组array_name的第index元素。
在C语言中,index是从0开始计数的,所以对于NUM个元素的数组,合法下标范围为0~NUM-1。
H. 短路计算C语言程序
注 马约卡群岛上的一个小镇。
在高山中我迷了路,
我沉湎于沉沦的幸福,整个身心
而当他这样说的时候他的表情完全是他的声音的准确复制。
月亮是我永恒的情人,
还是显映着现在的哈哈
I. C语言——短路电流计算——翻译
disp(Xjs1(k));disp(Is(k));disp(Isy(k));
end
