文档库 最新最全的文档下载
当前位置:文档库 › C习题集

C习题集

C习题集
C习题集

C程序习题集

1、C语言程序的基本单位是____

A) 程序行B) 语句C) 函数D) 字符

2、C语言程序的三种基本结构是____

A、顺序结构,选择结构,循环结构

B、递归结构,循环结构,转移结构

C、嵌套结构,递归结构,顺序结构

D、循环结构,转移结构,顺序结构

3、C语言规定,程序中各函数之间

A) 既允许直接递归调用也允许间接递归调用

B) 不允许直接递归调用也不允许间接递归调用

C) 允许直接递归调用不允许间接递归调用

D) 不允许直接递归调用允许间接递归调用

4、C语言中可处理的文件类型是( )

A) 文本文件和数据文件

B)文本文件和二进制文件

C) 数据文件和二进制文件

D)数据代码文件

5、C语言可执行程序的开始执行点是( )

A) 程序中第一条可执行语句

B) 程序中第一个函数

C) 程序中的main函数

D) 包含文件中的第一个函数

6、C语言提供的合法的数据类型关键字是

A)double B) short C) integer D) char

7、C语言中,运算对象必须是整型数的运算符是

A) % B) \ C) %和\ D) * *

8、C语言中函数返回值的类型是由( )决定。

A) return语句中的表达式类型

B) 调用函数的主调函数类型

C) 调用函数时临时

D) 定义函数时所指定的函数类型、

9、C语言中数组名作为参数传递给函数,作为实在参数的数组名被处理为_____。

A、该数组的长度。

B、该数组的元素个数。

C、该数组中各元素的值。

D、该数组的首地址。

10、C语言中数组下标的下限是________。

A、1

B、0

C、视具体情况

D、无固定下限

11、C语言中提供的合法关键字是____

A、swith

B、cher

C、case

D、default

12、C语言中文件的存取方式是________。

A、顺序存取

B、随机存取

C、顺序存取、随机存取均可

D、顺序存取、随机存取均不可

13、C语言中最简单的数据类型包括

A) 整型、实型、逻辑型B) 整型、实型、字符型

C) 整型、字符型、逻辑型D) 整型、实型、逻辑型、字符型

14、sizeof(float)是( )

A) 一种函数调用B) 一个不合法的表示形式C) 一个整型表达式

D) 一个浮点表达式

15、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是

A) input x,y,z; B) scanf("%d%d%d",&x,&y,&z);

C) scanf("%d%d%d",x,y,z); D) read("%d%d%d",&x,&y,&z);

16、表达式:10!=9的值是

A) true B) 非零值C) 0 D) 1

17、表示关系x<=y<=z的c语言表达式为

A) (X<=Y)&&(Y<=Z) B) (X<=Y)AND(Y<=Z) C) (X<=Y<=Z)

D) (X<=Y)&(Y<=z)

18、程序片段:在TC20中, int i=65536; printf("%d\n",i);的输出结果是____

A) 65536 B) 0 C) 有语法错误,无输出结果D) -1

19、当调用函数时,实参是一个数组名,则向函数传送的是____

A) 数组的长度B) 数组的首地址C) 数组每一个元素的地址D) 数组每个元素中的值

20、对嵌套子程序调用说法正确的是____。

A、外层子程序可以调用所有的内层子程序

B、内层了程序只可以调用包含本身的外层子程序,不可以隔层调用

C、外分程序必须能完全套住内分程序

D、以上说法均不正确

21、对于基类型相同的两个指针变量之间,不能进行的运算是

A) < B) = C) + D) -

22、合法的C语言中,合法的长整型常数是

A) '\t' B) "A" C) 65 D) A、

23、假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是

A) 3 B) 6 C) 10 D) 20

24、假定有以下变量定义: int k=7 ,x=12; 则能使值为3的表达式是

A x%=(k%=5)

B x%=(k-k%5)

C x%=k-k%5

D (x%=k)-(k%=5)

25、请读程序片段(字符串内没有空格): printf("%d\n",strlen("ATS\n012\1\\"));的输出结果是

A) 11 B) 10 C) 9 D) 8

26、请选出合法的C语言赋值语句

A) a=b=58 B) i++; C) a=58,b=58 D) k=int(a+b);

27、若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是

A) -3 B) 9 C) -12 D) 6

28、若int类型占两个字节,则以下语句输出为________。int k=-1; printf("%d,u%\n",k,k);

A、-1,-1

B、-1,65536

C、-1,32768

D、-1,65535、

29、若变量a是int类型,并执行了语句:a=‘A'+1、6;,则正确的叙述是

A) a的值是字符C B) a的值是浮点型C) 不允许字符型和浮点型相加D) a的值是字符‘A’的ASCII值加上1。

30、若变量已正确说明为float类型,要通过语句scanf("%f %f %f ",&a,&b,&c);给a赋于10、0,b 赋予22、0,c赋予33、0,不正确的输入形式是:

A) 10 B) 10、0,22、0,33、0 22 33 C) 10、0 D) 10 22 22、0 33、0 33

31、若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为

A) a<>0 B) !a C) a=0 D) a、

32、若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是

A)1 B)2 C)2.0 D)2.5

33、若有定义:int a=8,b=5,c;,执行语句c=a/b+0.4;

c的值为

A) 1.4 B) 1 C) 2.0 D) 2

34、若有定义:int x,y;char a,b,c;并有以下输入数据(此处< CR> 代表换行符,/u代表空格): 则能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C 的正确程序段是

A) scanf("x=%d y+%d",&x,&y);a=getchar();b=getchar();c=getchar();

B) scanf("%d %d",&x,&y);a=getchar();b=getchar();c=getchar();

C)scanf("%d%d%c%c%c,&x,&y,&a,&b,&c); D) scanf("%d%d%c%c%c%c%c%c:&x,&y,&a,&a,&b,&b,&c,&c);

35、若有定义和语句: char s[10]:s="abcd";printf("%s\n",s); 则结果是(以下u代表空格)

A) 输出abcd B) 输出a C) 输出abcduuuuu D) 编译不通过

36、若有以下程序段,int c1=1,c2=2,c3; c3=1.0/c2*c1; 则执行后,c3中的值是

A) 0 B) 0.5 C) 1 D) 2

37、若有以下定义: char a; int b; float c; double d; 则表达式a*b+d-c值的类型为

A) float B) int C) char D) double

38若有以下定义和语句char c1='b',c2='e'; printf("%d,%c\n",c2-c1,c2-'a'+"A"); 则输出结果是:

A)2,M B)3,E C)2,E D)输出项与对应的格式控制不一致,输出结果不确定

39、若有以下函数调用语句:fun(a+b,(x,y),fun(n+k,d,(a,b)));在此函数调用语句中实参的个数是

A)3 B)4 C)5 D)6

40、若执行下面的程序时从键盘上输入3和4,则输出是____

A)14 B)16 C) 18 D) 20

main( ) { int a,b,s; scanf("%d %d",&a,&b); s=a

41、若执行下面的程序时从键盘上输入5,则输出是

A) 7 B) 6 C) 5 D) 4

main() { int x; scanf("%d",&x); if(x++>5) printf("%d\n",x); else printf("%d\n",x--);}

42、若执行以下程序时从键盘上输入9,则输出结果是A) 11 B) 10 C) 9 D) 8 main( ) { int n; scanf("%d",&n); if(n++)

43、设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为____

A) 0 B) 1 C) 2 D) 3

44、设int a=12,则执行完语句a+=a-=a*a后,a的值是

A) 552 B) 264 C) 144 D) -264

45、设int b=2;表达式(b>>2)/(b>>1)的值是

A) 0 B) 2 C) 4 D) 8

46、设a,b和c都是int型变量,且a=3,b=4,c=5,则下列表达式中,值为0的表达式是________

A)'a'&&'b' B)a<=b C)a||b+c&&b-c D)!a

47、设x、y、z和k都是int型变量,则执行表达式:x=(y=4,z=16,k=32)后,x的值为

A 4

B 16

C 32

D 52

48设x=3,y=-4,z=6,写出表达式的结果。!(x>y)+(y!=z)||(x+y)&&(y-z)

A、0

B、1

C、-1

D、6

49、设x和y均为int 型变量,则以下语句:x+=y;y=x-y;y=x-y;x-=y;的功能是

A、把x 和y按从大到小排列

B、把x和y按从小到大排列

C、无确定结果

D、交换x和y中的值

50、设有int x=11; 则表达式(x++ * 1/3) 的值是

A) 3 B) 4 C) 11 D) 12

51、设有如下的变量定义: int i =8,k ,a,b ; unsigned long w=5; double x=1.42,y=5.2; 则以下符合C语言语法的表达式是

A、a+=a-=(b=4)*(a=3) B x%(-3); C a=a*3=2 D y=float(i)

52、设有如下定义: char *aa[2]={"abcd","ABCD"}; 则以下就法中正确的是

A) aa数组成元素的值分别是"abcd"和ABCD"

B) aa是指针变量,它指向含有两个数组元素的字符型一维数组

C) aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址

D) aa数组的两个元素中各自存放了字符'a'和'A'的地址

53、设有如下定义: int x=10,y=3,z; 则语句printf("%d\n",z=(x%y,x/y)); 的输出结果是

A) 1 B) 0 C) 4 D) 3

54、设有数组定义: char array [ ]="China"; 则数组array所占的空间为A) 4个字节B) 5个字节

C) 6个字节D) 7个字节

55、设有说明语句:char a='\72';则变量a

A) 包含1个字符B) 包含2个字符C) 包含3个字符D) 说明不合法

56、设有以下语句:int x=03,y=02,z=01;那么语句printf("%d",x|y&~Z)的执行结果()。

(A) 1 B) 2 C) 3 D) 0

57、下列if语句中,不正确的是________。

A、if(x>y);

B、if(x==y) x+=y;

C、if(x!=y) scanf("%d",&x) else x=1;

D、if(x)

58、下列变量定义中合法的是

A) float _a=1.le-1; B) double b=1+5e2.5; C) long do=0xfdaL;

D) float 2_and=1.e-3;

59、下列标识符中不合法的是_______

A、s_name

B、ox C _3 D、3DS、

60、下列不正确的转义字符是

A) '\\' B) '\" C) '074' D) '\0'

61、请读程序: main() { int a=1,b=2; printf("%d\n",a=a+1,a+6,b+2);} 则上面程序的输出结果是____

A、2

B、3

C、4

D、1

62、请读程序: int i=0,j=0,a=6; if((++i>0)||(++j>0))a++; printf("i=%d,j=%d,a=d%\n",i,j,a); 则上面程序的输出结果是____

A、i=0,j=0,a=6

B、i=1,j=0,a=7

C、i=1,j=1,a=6

D、i=1,j=1,a=7

63、下列程序段的输出结果为________?

int y=1; while(y--); printf("y=%d\n",y);

A、y=-1

B、y=0

C、死循环

D、y=9

64、下列程序执行后的输出结果是

A) 3 B) 6 C) 9 D) 随机数

main() { int a[3][3], *p,i; p=&a[0][0]; for(i=p; i

65、下列程序执行后的输出结果是

A) G B) H C) I D) J

main() { int x='f'; printf("%c \n",'A'+(x-'a'+1)); }

66、下列程序执行后的输出结果是(小数点后只写一位)

A) 6 6 6、0 6、0 B) 6 6 6、7 6、7 C) 6 6 6、0 6、7 D) 6 6 6、7 6、0

main() { double d; float f; long l; int i; i=f=1=d=20/3; printf("%d %ld %f %f \n", i,l,f,d); }

67、下列可作为C语言赋值语句的是

A)x=3,y=5 B)a=b=6 C)i--; D)y=int(x);

68、下列描述中不正确的是

A) 字符型数组中可以存放字符串

B) 可以对字符型数组进行整体输入、输出

C) 可以对整型数组进行整体输入、输出

D) 不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值

69、下列说法中正确的是________。

A、在switch语句中一定要使用break语句

B、在switch语句中不一定要使用break语句

C、break语句是switch语句的一部分

D、break只能用于switch语句中

70、下列运算符其优先级最高的是________。

A、||

B、&&

C、+

D、=

71、下面的DO循环中,一共循环()次。M=5 N=1 DO N=N+1 WHiLE (N<=M )

(A) 1 (B) 6 C) 4 D) 5

72、请读程序: #include main() { int a=1,b=4,c=2; float x=5.5,y=9.0,z; z=(a+b)/c+sqrt((double)y)*1.2/c+x; printf("%f\n",z); }

则上面程序的输出结果是____

A、数据溢出

B、9.3

C、9.300000

D、0.93

73、请读程序: int a,b,c; a=(b=(c=10)+5)-5; printf("a,b,c=d%,d%,d%",a,b,c); c=a=0; b=(a+10); printf("a,b,c=%d,d%,d%",a,b,c);

则上面程序的输出结果是____

A、a,b,c=0,10,10 a,b,c=10,15,10

B、a,b,c=10,15,10 a,b,c=10,15,10

C、a,b,c=10,15,10 a,b,c=0,10,0

D、a,b,c=10,15,10 a,b,c=10,15,15

74、写出下列语句执行后a,b的值。int a=7,b=6; b=(++b)+(a++);

A、a=8,b=14

B、a=7,b=8

C、a=14,b=14

D、a=8,b=8

75、请读程序: m=1234.123; printf=("%-8.3f\n",m); printf=("%10、3f\n",m); 则上面程序的输出结果是____

A、1234、12300 1234、123

B、1234、123 1234、123

C、1234、123 1234、12300

D、1234、12300 1234、123

76、一个C语言的语句至少应包一个________

A、{}

B、逗号

C、分号

D、什么不要

77、一个完整的C源程序是________。

A、要由一个主函数(或)一个以上的非主函数构成

B、由一个且仅由一个主函数和零个以上(含零)的非主函数构成

C、要由一个主函数和一个以上的非主函数构成

D、由一个且只有一个主函数或多个非主函数构成

78、已知整型变量a=13和b=6,则a&b的值是________,a^b的值是________

A、4 13

B、4 11

C、1 11

D、4 13

79、以下for语句构成的循环执行了()次。

# include #define N 4 #define M N+1 # define NUM (M+1)*M/2 main( ) {int i,n=0; for (i=1;i<=num;i++) {n++; printf("%d",n); } }

(A) 5 (B) 6 (C) 8 (D) 9

80、以下程序的输出结果是____ # include main( ) { printf("%d\n",NULL); }

(A) 不确定的(B) 0(C) -1 (D) 1

81、在调用函数时,以下描述中正确的是________。

A、调用函数时,实参可以是表达式

B、调用函数时,将为形参分配内存单元

C、调用函数时,实参与形参的原型必须一致

D、调用函数时,实参与形参可以用内存单元

82、有以下程序段int k=0 while(k=1)k++; while 循环执行的次数是

A) 无限次B) 有语法错,不能执行C) 一次也不执行D) 执行1次

83、有以下函数char fun(char *p) { return p; } 该函数的返回值是

A) 无确切的值B) 形参p中存放的地址值C) 一个临时存储单元的地址D) 形参p自身的地址值

84、语句printf("%d\n",12&012 );的输出结果是____

A) 12 B) 8 C) 6 D) 012

85、语句:printf("%d",(a=2)&&(b= -2);的输出结果是____

A) 无输出B) 结果不确定C) -1 D) 1

86、运算完下面的C语言程序段以后,a的值是______,b的值是______。

int x=10,y=9; int a,b,c; a=(--x==y++)?--x:++y; b=x++; c=y;

A、6 9 13

B、8 7 11

C、8 9 10 D 8 7 10

87、在C语言程序中,注释部分从哪开始,到哪结束?

A、从(到)结束

B、从REM开始无结束志标志

C、无起始标志

D、从/*开始,*/结束

88、在C语言提供的合法的关键字是

A) swicth B) cher C) Case D) default

89、在C语言中,不正确的int类型的常数是____

A) 32768 B) 0 C) 037 D) 0xAF

90、在C语言程序中,当while语句构成的循环中的条件为______时,结束循环。

A、0

B、1

C、true

D、非0

91、在C语言中,函数的隐含存储类别是

A) auto B) static C) extern D) 无存储类别

92、在C语言中,合法的长整型常数是

A) OL B) 4962710 C) 324562& D) 216D

93、在C语言中,合法的字符常量是

A) '\084' B) '\x43' C) 'ab' D) "\0"

94、在C语言中,若对函数类型未加明显式说明,则函数的隐含类型是____类型

A) void B) double C) int D) char

95、在C语言中,形参的缺省存储类是

A) auto B) register C) static D) extern

96、在C语言中,要求运算数必须是整型的运算符是

A) % B) / C) < D) !

97、在宏定义#define PI 3.14159中,用宏名PI代替一个

A) 单精度数B) 双精度数C) 常量D) 字符串

98、在C语言程序中,可以用做变量名的是____

A) 1e5 B) a1 C) int D) *p

99、在以下一组运算符中,优先级最高的运算符是

A)<= B)= C)% D)&&

100、字符(char)型数据在微机内存中的存储形式是____

A) 反码B) 补码C) EBCDIC码D) ASCII码

C程序答案1——10 CAABC BADDB 11——20 DCBCB DABBC 21——30 CADDC BCDDB 31——40 BCBDD ADBAB 41——50 BBCDA Xcbda 51——60 ADDCA CDADC 61——70 ABABA ACCBC 71——80 DCCAB CBBCB 81——90 DABBD CDDAA 91——100 CABCA ACBCD

计算机C语言趣味的程序设计——题目百例

Contest - 2011级C语言课程大作业 Start Time: 2012-02-19 16:25:00 End Time: 2012-03-01 22:00:00 Current Time: 2012-2-23 15:51:18 Status:Running Public

写在最前: 本文档中的题目;在不不同的编译器中可能会有提示错误,呵呵,小小的动动手改下变量的定义就可以运行了……………….. 由于能力不足..有题目未解决的…或者有错误的我会…认真听取大家的..意见的…. 呵呵……..有一两个….偷了下懒哦……… 提供原题目还有本人自己的解答的源代码。感谢大家的。。。。建议……………. 问题A: 趣味程序设计_狼追兔子 时间限制: 1 Sec 内存限制: 128 MB 提交: 341 解决: 63 [提交][状态][讨论版] 题目描述 一只兔子躲进了n个环形分布的洞的某一个中。狼在第一个洞没有找到兔子,就隔一个洞,到第三个洞去找;也没有找到,就隔两个洞,到第六个洞去找。以后每次多一个洞去找兔子……这样下去,如果一直找不到兔子,请问兔子可能在哪个洞中? 输入 有多组测试数据,读取到文件结尾符为止。每组测试数据输入n(2≤n≤100),即洞穴个数。输入到文件结尾符为止。 输出 兔子可能藏匿的洞。如果不止一个,按从小到大的顺序输出。如果不存在,输出空行。

样例输入 10 8 15 样例输出 2 4 7 9 2 4 5 7 8 9 11 12 14 提示 用一个数组a[10],对应的元素a[0],a[1],a[2]……a[9]对应表示10个洞,初值均置1。通过一个循环用“穷举法”找兔子,第n次查找对应第(n-1)%10个洞,如果在第(n-1)%10个洞中没有找到兔子,因此将数组元素a[(n-1)%10]置0值。循环完成后,检查a数组各元素(各个洞)的值,若其值仍为1,则兔子可能藏身该洞中。 #include #include int ok[110]; int main() { int n,s,i,find; while(scanf("%d",&n)!=EOF) { memset(ok,0,sizeof(ok)); for(i=1;i<=200;i++) if(!ok[find=(i*(i+1)/2)%n]) if(find==0) ok[n]=1; else ok[find]=1; for(s=0,i=1;i<=n;i++) s+=ok[i]; for(i=1,find=0;i<=n;i++) if(!ok[i]) { if(find!=(n-s-1)) { printf("%d ",i);find++;

KeilC的运算符

Keil C的运算符 一、算术运算符:执行算术运算功能的操作符号。 表1:算术运算符 符号功能范例说明 + 加A=x+y 将x与y的变量的值相加,其和存入A变量 - 减B=x-y 将x变量的值减去y变量的值,其差存入B变量 * 乘C=x*y 将x与y的变量的值相乘,其积存入C变量 / 除D=x/y 将x变量的值除以y变量的值,其商数存入D变量 % 取余数E=x%y 将x变量的值除以y变量的值,其余数存入E变量 二、关系运算符:处理两个变量的大小关系 表2:关系运算符 符号功能范例说明 == 相等X==y 比较x与y变量的值是否相等,相等则其结果为1,否则为0 != 不相等X!=y 比较x与y变量的值是否相等,不相等则其结果为1,否则为0 > 大于X>y 若x变量的值大于y变量的值,其结果为1,否则为0 < 小于X= 大于等于X>=y 若x变量的值大于或等于y变量的值,其结果为1,否则为0 <= 小于等于X<=y 若x变量的值小于或等于y变量的值,其结果为1,否则为0 三、逻辑运算符 表3:逻辑运算符 符号功能范例说明 & 与运算(x>y)&&(y>z)若x变量的值大于y变量的值,且y变量的值大于z变量的 值,其结果为1,否则为0 || 或运算(x>y)||(y>z)若x变量的值大于y变量的值,或y变量的值大于z变量的 值,其结果为1,否则为0 ! 非(反向)运算!(x>y)若x变量的值大于y变量的值,其结果为0,否则为 1 四、布尔运算符 表4:布尔运算符 符号功能范例说明 & 按位与运算A=x&y 将x与y变量的每个位进行AND运算,其结果存入A变量 | 按位或运算B=x|y 将x与y变量的每个位进行OR运算,其结果存入B变量 ^ 异或运算C=x^y 将x与y变量的每个位进行XOR运算,其结果存入C变量 ~ 取反运算D=x~y 将x变量的值进行NOT运算,其结果存入D变量 << 左移E=x<> 右移F=x>>n 将x变量的值右移n位,其结果存入F变量 五、赋值运算符 表5:赋值运算符 符号功能范例说明 = 赋值A=x 将x变量的值存入 A += 加法赋值B+=x 将B变量的值与x变量的值相加运算,其和存入B,等同于B=B+x -= 减法赋值C-=x 将C变量的值减去x变量的值运算,差值存入C,等同于C=C-x *= 乘法赋值D*=x 将D变量的值与x变量的值相乘运算,积存入D,等同于D=D*x

c语言趣味编程实例

1、编程序求5X+2Y+Z=50 的所有非负整数解。 #include int main() { int x, y, z; int count = 0; for (x = 0; 5 * x <= 50;x++) for (y = 0; 2 * y <= 50; y++) for (z = 0; z <= 50; z++) { if (5 * x + 2 * y + z == 50) { count++; printf("%d :", count); printf("x=%d,y=%d,z=%d", x, y, z); printf("\n"); } } return 0; } 2、把25个字母A、B、C、···、X、Y按如下要求打印出来:从最中间的字母M 开始打印,然后一左一右依次打印出其它字母,即M,L,N,K,O,...。 要求:初始化时按字母表顺序赋值。 #include int main() { char x[] = "ABCDEFGHIJKLMNPQRST"; int k; int n = 0; while (x[n]) { n++; if (x[n] == 'M') { k = n;break; } } printf("%c,",x[k]); for (int i = 1; i <= 12; i++) if (i <= 11) printf("%c,%c,", (x[k] - i), (x[k] + i)); else printf("%c,%c。", (x[k] - i), (x[k] + i)); printf("\n");

C语言经典编程

猴子吃桃 1、题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。 1.程序分析:采取逆向思维的方法,从后往前推断。 2.程序源代码: main() { int day,x1,x2; day=9; x2=1; while(day>0) {x1=(x2+1)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/ x2=x1; day--; } printf("the total is %d\n",x1); } 回文数问题 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。 1. 程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法) 2.程序源代码: main( ) { long a,b,c,d,e,x; scanf("%ld",&x); a=x/10000;/*分解出万位*/ b=x%10000/1000;/*分解出千位*/ c=x%1000/100;/*分解出百位*/ d=x%100/10;/*分解出十位*/ e=x%10;/*分解出个位*/ if (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a); else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b); else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c); else if (d!=0) printf("there are 2, %ld %ld\n",e,d); else if (e!=0) printf(" there are 1,%ld\n",e); } 杨辉三角 题目:打印出杨辉三角形(要求打印出10行如下图) 1.程序分析: 1 1 1

C语言标准库函数

标准库函数 本附录描述了标准C支持的库函数①。使用此附录时,请记住下列要点。 为了简洁清楚,这里删除了一些细节。如果想看全部内容,请参考标准。本书的其他地方已经对一些函数(特别是printf函数、scanf函数以及它们的变异函数)进行了详细介绍,所以这里 只对这类函数做简短的描述。为了获得关于某个函数更详细的信息(包括如何使用这个函数的示 例),请见函数描述右下角用楷体列出的节号。 每个函数描述结尾都有其他与之相关函数的列表。相似函数非常接近于正在描述的函数。相关函数经常会和在描述的函数联合使用。(例如,calloc函数和realloc函数与malloc函数“类似”, 而free函数则与malloc函数“相关”。)也可参见的函数和在描述的函数没有紧密联系,但是却 可能有影响。 如果把函数行为的某些方面描述为由实现定义的,那么这就意味着此函数依赖于C库的实现方式。 函数将始终行为一致,但是结果却可能会由于系统的不同而千差万别。(换句话说,请参考手册了 解可能发生的问题。)另一方面,未定义的行为是一个不好的消息:不但函数的行为可能会因系统 不同而不同,而且程序也可能会行为异常甚至崩溃。 中许多函数的描述提到了定义域错误和取值范围错误。在本附录的末尾对这两种错误进行了定义。 601 下列库函数的行为是会受到当前地区影响的: 字符处理函数(除了isdigit函数和isxdigit函数)。 格式化输入/输出函数。 多字节字符和字符串函数。 字符串转换函数。 Strcoll函数、strftime函数和strxfrm函数。 例如,isalpha函数实际上检测字符是否在a到z之间或者在A到Z之间。在某些区域内也把其他字符看成是字母次序的。本附录描述了在"C"(默认的)地区内库函数的行为。 一些函数实际上是宏。然而,这些宏的用法和函数完全一样,所以这里不对它们区别对待。 abort 异常终止程序 void abort(void); 产生SIGABRT信号。如果无法捕获信号(或者如果信号处理函数返回),那么程序会异常 终止,并且返回由实现定义的代码来说明不成功的终止。是否清洗输出缓冲区,是否关 闭打开的流,以及是否移除临时文件都是由实现定义的。 相似函数exit函数、raise函数 相关函数assert函数、signal函数 也可参见atexit函数 26.2节abs 整数的绝对值 int abs(int j); 返回整数j的绝对值。如果不能表示j的绝对值,那么函数的行为是未定义的。 ①这些材料经ANSI许可改编自American National Standards Institude ANSI/ISO 9899?1990。这个标准的副本可从 ANSI购买(ANSI, 11 West 42nd Street, New York, NY 10036)。

CC语言趣味程序设计编程百例精解

C-C++语言趣味程序设计编程百例精解() ?81.角谷猜想 日本一位中学生发现一个奇妙的“定理”,请角谷教授证明,而教授无能为力,于是产生角谷猜想。猜想的内容是:任给一个自然数,若为偶数除以2,若为奇数则乘3加1,得到一个新的自然数后按照上面的法则继续演算,若干次后得到的结果必然为1。请编程验证。 *问题分析与算法设计 本题是一个沿未获得一般证明的猜想,但屡试不爽,可以用程序验证。题目中给出的处理过程很清楚,算法不需特殊设计,可按照题目的叙述直接进行证。 *程序说明与注释 #include<stdio.h> int main() { int n,count=0; printf("Please enter number:"); scanf("%d",&n); /*输入任一整数*/ do{ if(n%2)

n=n*3+1; /*若为奇数,n乘3加1*/ printf("[%d]:%d*3+1=%d\n",++count,(n-1)/3,n); } else { n/=2; /*若为偶数n除以2*/ printf("[%d]: %d/2=%d\n",++count,2*n,n); } }while(n!=1); /*n不等于1则继续以上过程*/ } 82.四方定理 数论中著名的“四方定理”讲的是:所有自然数至多只要用四个数的平方和就可以表示。 请编程证此定理。 *问题分析与算法设计 本题是一个定理,我们不去证明它而是编程序验证。 对四个变量采用试探的方法进行计算,满足要求时输出计算结果。 *程序说明与注释 #include<stdio.h> #include<stdlib.h> int main()

怎么样在KEIL_C软件中调试程序

首先建立工程。选[Project\New Project],选择工程保存的路径,及为工程命名。例如将其存放在D:\新建文件夹(2),命名为123。输入完工程名后会打开一个如下图所示的对话框,在这里我们选择CPU的型号,根据我们选用的CPU芯片的不同,这里的设置不同。在这里我们选用 Atmel\AT89C51。 接下来弹出一个如下图的对话框。该对话框提示你是否要把标准8051的启动代码添加到工程中去。如用C语言写程序,一般选“否”,但是,如果用到了某些增强功能需要初始化配置时,则可选“是”。在这里,我们选“否”,即不添加启动代码。 新建文件。在[File\New]建一个文件,将程序写入。这里以一个00-99秒计时器程序为例。程序如下 #include unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92, 0x82,0xf8,0x80,0x90}; //共阳数码管段0-9 unsigned char Second; delay10ms() //延时10毫秒 { unsigned int i,j; for(i=0;i<10;i++) for(j=0;j<120;j++); } leds() //显示子函数 { P0_0=0; //选通P0_0数码管 P2=table[Second/10]; //送段值 delay10ms(); //延时 P2=0xff; //消影 P0_0=1; //消除P0_0选通状态 P0_1=0; //选通P0_0数码管 P2=table[Second%10]; //送段值 delay10ms(); //延时 P2=0xff; //消影 P0_1=1; //消除P0_0选通状态 } void delay1s(void) //延时1秒 { unsigned char j; for(j=50;j>0;j--) leds(); } void main(void) { Second=0; //显示置0 while(1) //主循环 { delay1s();// 延时 Second++; //自加 if(Second==60) //判断是否到60

1C语言入门_3简单函数_3形参和实参解读

第 3 章 简单函数 3. 形参和实参
下面我们定义一个带参数的函数, 我们需要在函数定义中指明参数的个数和每个 参数的类型,定义参数就像定义变量一样,需要为每个参数指明类型,参数的命 名也要遵循标识符命名规则。例如: 例 3.4. 带参数的自定义函数
#include
void print_time(int hour, int minute) { printf("%d:%d\n", hour, minute); }
int main(void) { print_time(23, 59); return 0; }
需要注意的是, 定义变量时可以把相同类型的变量列在一起,而定义参数却不可 以,例如下面这样的定义是错的:
void print_time(int hour, minute) {

printf("%d:%d\n", hour, minute); }
学习 C 语言的人肯定都乐意看到这句话:“变量是这样定义的,参数也是这样 定义的,一模一样”,这意味着不用专门去记住参数应该怎么定义了。谁也不愿 意看到这句话:“定义变量可以这样写,而定义参数却不可以”。C 语言的设计 者也不希望自己设计的语法规则里到处都是例外, 一个容易被用户接受的设计应 该遵循最少例外原则(Rule of Least Surprise)。其实关于参数的这条规定也不 算十分例外,也是可以理解的,请读者想想为什么要这么规定。学习编程语言不 应该死记各种语法规定,如果能够想清楚设计者这么规定的原因(Rationale), 不仅有助于记忆,而且会有更多收获。本书在必要的地方会解释一些 Rationale, 或者启发读者自己去思考, 例如上一节在脚注中解释了 void 关键字的 Rationale。 [C99 Rationale]是随 C99 标准一起发布的,值得参考。 总的来说,C 语言的设计是非常优美的,只要理解了少数基本概念和基本原则就 可以根据组合规则写出任意复杂的程序, 很少有例外的规定说这样组合是不允许 的,或者那样类推是错误的。相反,C++的设计就非常复杂,充满了例外,全世 界没几个人能把 C++的所有规则都牢记于心,因而 C++的设计一直饱受争议, 这个观点在[UNIX 编程艺术]中有详细阐述。 在本书中,凡是提醒读者注意的地方都是多少有些 Surprise 的地方,初学者如 果按常理来想很可能要想错, 所以需要特别提醒一下。而初学者容易犯的另外一 些错误, 完全是因为没有掌握好基本概念和基本原理,或者根本无视组合规则而 全凭自己主观臆断所致, 对这一类问题本书不会做特别的提醒,例如有的初学者 看完第 2 章 常量、变量和表达式之后会这样打印π 的值:
double pi=3.1416; printf("pi\n");
之所以会犯这种错误,一是不理解 Literal 的含义,二是自己想当然地把变量名 组合到字符串里去, 而事实上根本没有这条语法规则。如果连这样的错误都需要 在书上专门提醒,就好比提醒小孩吃饭一定要吃到嘴里,不要吃到鼻子里,更不 要吃到耳朵里一样。 回到正题。我们调用 print_time(23, 59)时,函数中的参数 hour 就代表 23,参 数 minute 就代表 59。确切地说,当我们讨论函数中的 hour 这个参数时,我们 所说的“参数”是指形参(Parameter),当我们讨论传一个参数 23 给函数时, 我们所说的“参数”是指实参(Argument),但我习惯都叫参数而不习惯总把 形参、实参这两个文绉绉的词挂在嘴边(事实上大多数人都不习惯),读者可以 根据上下文判断我说的到底是形参还是实参。 记住这条基本原理: 形参相当于函

趣味c语言编程100例

趣味 c 语言编程100 例 【程序 1】 题目:有 1、2、3、4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、 2、3、4。组成所有的排列后再去 掉不满足条件的排列。 2.程序源代码: main() { int i,j,k; printf("\n"); for(i=1;i<5;i++) / *以下为三重循环 */ for( j=1;j<5;j++) for (k=1;k<5;k++) { if (i!=k&&i!=j&&j!=k) /* 确保 i 、 j、 k 三位互不相同 */ printf("%d,%d,%d\n",i,j,k); } } 程序 2】 题目:企业发放的奖金根据利润提成。利润 (I) 低于或等于 10 万元时,奖金可提 10% ;利润高于 10 万元,低于 20 万元时,低于 10 万元的部分按 10% 提成,高于 10 万元的部分,可可提成 7.5% ; 20 万到 40 万之间时,高于 20 万元的部分,可提成 5% ; 40 万到 60 万之间时高于

40 万元的部分,可提成 3% ;60 万到 100 万之间时,高于 60 万元的部分,可提成 1.5% ,高于 100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总 数? 1. 程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。 2. 程序源代码: main() { long int i; int bonus1,bonus2,bonus4,bonus6,bonus10,bonus; scanf("%ld",&i); bonus1=100000*0.1;bonus2=bonus1+100000*0.75; bonus4=bonus2+200000*0.5; bonus6=bonus4+200000*0.3; bonus10=bonus6+400000*0.15; if(i<=100000) bonus=i*0.1; else if(i<=200000) bonus=bonus1+(i-100000)*0.075; else if(i<=400000) bonus=bonus2+(i-200000)*0.05; else if(i<=600000) bonus=bonus4+(i-400000)*0.03;

如何学好并精通C语言

程序员之路——如何学习C语言并精通C语言 程序员之路——如何学习C语言 学习C语言不是一朝一夕的事情,但也不需要花费十年时间才能精通。如何以最小的代价学习并精通C 语言是本文的主题。请注意,即使是“最小的代价”,也绝不是什么捷径,而是以最短的时间取得最多的收获,同时也意味着你需要经历艰苦的过程。 一、要读就读好书,否则不如不读 所有初学者面临的第一个问题便是:如何选择教材。好的开始是成功的一半,选择一本优秀的教材是事半功倍的关键因素。不幸的是,学校通常会帮你指定一本很差劲的C语言课本;而幸运的是,你还可以再次选择。 大名鼎鼎的谭浩强教授出了一本《C语言程序设计》,据说发行量有超过400万,据我所知,很多学校都会推荐这本书作为C语言课本。虽然本人的名字(谭浩宇)跟教授仅仅一字之差,但我是无比坚定地黑他这本书的。这本书不是写给计算机专业的学生的,而是给那些需要考计算机等级考试的其它专业学生看的。这本书的主要缺点是:例子程序非常不专业,不能教给你程序设计应该掌握的思考方式;程序风格相当地不好,会让你养成乱写代码的恶习;错误太多,曾经有人指出过这本书的上百个错误,其中不乏关键的概念性错误。好了,这本书我也不想说太多了,有兴趣大家可以百度一下:) Kernighan和Ritchie的《The C Programming Language》(中译名《C程序设计语言》)堪称经典中的经典,不过旧版的很多内容都已过时,和现在的标准C语言相去甚远,大家一定要看最新的版本,否则不如不看。另外,即使是最经典最权威的书,也没有办法面面俱到,所以手边常备一本《C语言参考手册》是十分必要的。《C语言参考手册》就是《C Reference Manual》,是C语言标准的详细描述,包括绝大多数C标准库函数的细节,算得上是最好的标准C语言的工具书。顺便提一句,最新的《C程序设计语言》是根据C89标准修订的,而《C语言参考手册》描述的是C99标准,二者可能会有些出入,建议按照C99标准学习。还有一本《C和指针》,写得也是相当地不错,英文名是《Pointers on C》,特别地强调指针的重要性,算是本书的一个特点吧。不过这本书并不十分适合初学者,如果你曾经学过C语言,有那么一些C语言的基础但又不是很扎实,那么你可以尝试一下这本书。我相信,只要你理解了指针,C语言便不再神秘。 如果你已经啃完了一本C语言教材,想要更进一步,那么有两本书你一定要看。首先是《C Traps and Pitfalls》(中译名《C陷井与缺陷》),很薄的一本小册子,内容非常非常地有趣。要注意一点,这本书是二十多年前写成的,里面提到的很多C语言的缺陷都已被改进,不过能够了解一些历史也不是什么坏事。然后你可以挑战一下《Expert C Programming》(中译名《C专家编程》),书如其名,这本书颇具难度,一旦你仔细读完并能透彻理解,你便可以放心大胆地在简历上写“精通C语言”了。 切记一个原则,不要读自己目前还看不懂的书,那是浪费生命。如果你看不懂,那你一定是缺失了某些必需基础知识。此时,你要仔细分析自己需要补充哪些内容,然后再去书店寻找讲述的这些内容的书籍。把基础知识补充完毕再回头来学习,才会真正的事半功倍。 二、Unix/Linux还是Windows,这是个很大的问题 不同的编程环境会造就出不同思维的程序员。Windows的程序员大多依赖集成开发环境,比如Visual Studio,而Unix程序员更加钟爱Makefile与控制台。显而易见,集成开发环境更容易上手,在Windows上学习C语言,只需要会按几个基本的Visutal C++工具栏按钮就可以开始写Hello, World!了,而在Unix下,你需要一些控制台操作的基本知识。有人也许认为Unix的环境更简洁,但习惯的力量是很大的,大家都很熟悉Windows的基本操作,而为了学习C语言去专门装一个Unix系统,似乎有点不划算。 对于一个只懂得Windows基本操作、连DOS是什么都不知道的新手而言,尽快做一些有趣而有意义的事情才是最重要的。用C语言写一个小程序远比学习ls、cat等命令有趣,况且我们要专注于C语言本身,就不得不暂时忽略一些东西,比如编译链接的过程、Makefile的写法等等等等。 所以我建议初学者应该以Visual C++ 6.0(不是VisualC++ .NET)或者Dev C++作为主要的学习环境,而且千万不要在IDE的使用技巧上过多纠缠,因为今后你一定要转向Unix环境的。Visual C++ 6.0使用很方便,调试也很直观,但其默认的编译器对C标准的支持并不好,而Dev C++使用gcc编译器,对C99的标准都支持良好。使用顺带提一下,很多大学的C语言课程还在使用Turbo C 2.0作为实验环境,这是相当不可取的,原因其一是TC 2.0对C标准几乎没有支持,其二是TC 2.0编译得到的程序是16位的,这对今后理解32位的程序会造成极大的困扰(当然,用djgpp之类的东西可以使TC

keilC编程用法

51单片机C语言学习 学习单片机实在不是件易事,一来要购买高价格的编程器,仿真器,二来要学习编程语言,还有的单片机选择真是件让人头脑的事。在众多单片机中51架构的芯片风行很久,学习资料也相对很学的较好的选择之一。51的编程语言常用的有二种,一种是汇编语言,一种是C语言。汇编语言码生成效率很高但可读性却并不强,复杂一点的程序就更是难读懂,而C语言在大多数情况下其机成效率和汇编语言相当,但可读性和可移植性却远远超过汇编语言,而且C语言还可以嵌入汇编来效性的代码编写问题。对于开发周期来说,中大型的软件编写用C语言的开发周期通常要小于汇编综合以上C语言的优点,我在学习时选择了C语言。以后的教程也只是我在学习过程中的一些学习笔,在这里加以整理和修改,希望和大家一起分享,一起交流,一起学习,一起进步。 *注:可以肯定的说这个教程只是为初学或入门者准备的,笔者本人也只是菜鸟一只,有望各手指点错误提出建议。 第一课建立您的第一个C项目 使用C语言肯定要使用到C编译器,以便把写好的C程序编译为机器码,这样单片机才能执行程序。KEIL uVISION2是众多单片机应用开发软件中优秀的软件之一,它支持众多不同公司的MCS 芯片,它集编辑,编译,仿真等于一体,同时还支持,PLM,汇编和C语言的程序设计,它的界面微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。因发51应用的工程师或普通的单片机爱好者,都对它十分喜欢。 以上简单介绍了KEIL51软件,要使用KEIL51软件,必需先要安装它。KEIL51是一个商业的于我们这些普通爱好者可以到KEIL中国代理周立功公司的网站上下载一份能编译2K的DEMO版软可以满足一般的个人学习和小型应用的开发。(安装的方法和普通软件相当这里就不做介绍了)安装好后,你是不是迫不及待的想建立自己的第一个C程序项目呢?下面就让我们一起来建立序项目吧。或许你手中还没有一块实验板,甚至没有一块单片机,不过没有关系我们可以通过KE

C++高级参考手册04

第4章初始化与清除 第2章利用了一些分散的典型C语言库的构件,并把它们封装在一个s t r u c t中,从而在库的应用方面做了有意义的改进。(从现在起,这个抽象数据类型称为类)。 这样不仅为库构件提供了单一一致的入口指针,也用类名隐藏了类内部的函数名。在第3章中,我们介绍了存取控制(隐藏实现),这就为类的设计者提供了一种设立界线的途径,通过界线的设立来决定哪些是用户可以处理的,哪些是禁止的。这意味着数据类型的内部机制对设计者来说是可控的和能自行处理的。这样让用户也清楚哪些成员是他们能够使用并加以注意的。 封装和实现的隐藏大大地改善了库的使用。它们提供的新的数据类型的概念在某些方面比从C中继承的嵌入式数据类型要好。现在C ++编译器可以为这种新的数据类型提供类型检查,这样在使用这种数据类型时就确保了一定的安全性。 当然,说到安全性,C ++的编译器能比C编译器提供更多的功能。在本章及以后的章节中,我们将看到许多C ++的另外一些性能。它们可以让我们程序中的错误暴露无遗,有时甚至在我们编译这个程序之前,帮我们查出错误,但通常是编译器的警告和出错信息。所以我们不久就会习惯:在第一次编译时总听不到编译器那意味着正确的提示音。 安全性包括初始化和清除两个方面。在C语言中,如果程序员忘记了初始化或清除一个变量,就会导致一大段程序错误。这在一个库中尤其如此,特别是当用户不知如何对一个s t r u c t 初始化,甚至不知道必须要初始化时。(库中通常不包含初始化函数,所以用户不得不手工初始化s t r u c t)。清除是一个特殊问题,因为C程序员一旦用过了一个变量后就把它忘记了,所以对一个库的s t r u c t来说,必要的清除工作往往被遗忘了。 在C ++中,初始化和清除的概念是简化类库使用的关键所在,并可以减少那些由于用户忘记这些操作而引起的许多细微错误。本章就来讨论C ++的这些特征。 4.1 用构造函数确保初始化 在s t a s h和s t a c k类中都曾调用i n i t i a l i z e()函数,这暗示无论用什么方法使用这些类的对象,在使用之前都应当调用这一函数。很不幸的是,这要求用户必须正确地初始化。而用户在专注于用那令人惊奇的库来解决他们的问题的时候,往往忽视了这些细节。在C ++中,初始化实在太重要了,所以不能留给用户来完成。类的设计者可以通过提供一个叫做构造函数的特殊函数来保证每个对象都正确的初始化。如果一个类有构造函数,编译器在创建对象时就自动调用这一函数,这一切在用户使用他们的对象之前就已经完成了。对用户来说,是否调用构造函数并不是可选的,它是由编译器在对象定义时完成的。 接下来的问题是这个函数叫什么名字。这必须考虑两点,首先这个名字不能与类的其他成员函数冲突,其次,因为该函数是由编译器调用的,所以编译器必须总能知道调用哪个函数。S t r o u s t r u p的方法似乎是最容易也是最符合逻辑的:构造函数的名字与类的名字一样。这使得这样的函数在初始化时自动被调用。 下面是一个带构造函数的类的简单例子:

Keil C 简介

Getting Started with μVision2 The Keil Software 8051 development tools listed below are programs you use to compile your C code, assemble your assembly source files, link and locate object modules and libraries, create HEX files, and debug your target program. μVision2 for Windows? is an Integrated Development Environment that combines project management, source code editing, and program debugging in one single, powerful environment.? The C51 ANSI Optimizing C Cross Compiler creates relocatable object modules from your C source code.? The A51 Macro Assembler creates relocatable object modules from your 8051 assembly source code.? The BL51 Linker/Locator combines relocatable object modules created by the C51 Compiler and the A51 Assembler into absolute object modules.? The LIB51 Library Manager combines object modules into libraries that may be used by the linker.? The OH51 Object-HEX Converter creates Intel HEX files from absolute object modules.? The RTX-51 Real-time Operating System simplifies the design of complex, time-critical software projects.? Software Development Cycle When you use the Keil Software tools, the project development cycle is roughly the same as it is for any other software development project. 1. Create a project, select the target chip from the device database, and configure the tool settings. 2. Create source files in C or assembly. 3. Build your application with the project manager. 4. Correct errors in source files. 5. Test the linked application. μVision2 IDE The μVision2 IDE combines project management, a rich-featured editor with interactive error correction, option setup, make facility, and on-line help. Use μVision2 to create your source files and organize them into a project that defines your target application. μVision2 automatically compiles, assembles, and links your embedded application and provides a single focal point for your development efforts. LIB51 Library Manager The LIB51 library manager allows you to create object library from the object files created by the compiler and assembler. Libraries are specially formatted, ordered program collections of object modules that may be used by the linker at a later time. When the linker processes a library, only those object modules in the library that are necessary to create the program are used. BL51 Linker/Locator

C语言库函数参考手册

C语言库函数参考手册 转载说明:可能有些函数已经过时,但从学习的角度来看,还是有一定的参考价值。 分类函数,所在函数库为ctype.h int isalpha(int ch) 若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0 int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或数字('0'-'9') 返回非0值,否则返回0 int isascii(int ch) 若ch是字符(ASCII码中的0-127)返回非0值,否则返回0 int iscntrl(int ch) 若ch是作废字符(0x7F)或普通控制字符(0x00-0x1F) 返回非0值,否则返回0 int isdigit(int ch) 若ch是数字('0'-'9')返回非0值,否则返回0 int isgraph(int ch) 若ch是可打印字符(不含空格)(0x21-0x7E)返回非0值,否则返回0 int islower(int ch) 若ch是小写字母('a'-'z')返回非0值,否则返回0 int isprint(int ch) 若ch是可打印字符(含空格)(0x20-0x7E)返回非0值,否则返回0 int ispunct(int ch) 若ch是标点字符(0x00-0x1F)返回非0值,否则返回0 int isspace(int ch) 若ch是空格(' '),水平制表符('\t'),回车符('\r'), 走纸换行('\f'),垂直制表符('\v'),换行符('\n') 返回非0值,否则返回0 int isupper(int ch) 若ch是大写字母('A'-'Z')返回非0值,否则返回0 int isxdigit(int ch) 若ch是16进制数('0'-'9','A'-'F','a'-'f')返回非0值, 否则返回0 int tolower(int ch) 若ch是大写字母('A'-'Z')返回相应的小写字母('a'-'z') int toupper(int ch) 若ch是小写字母('a'-'z')返回相应的大写字母('A'-'Z') 数学函数,所在函数库为math.h、stdlib.h、string.h、float.h int abs(int i) 返回整型参数i的绝对值 double cabs(struct complex znum) 返回复数znum的绝对值 double fabs(double x) 返回双精度参数x的绝对值 long labs(long n) 返回长整型参数n的绝对值 double exp(double x) 返回指数函数ex的值 double frexp(double value,int *eptr) 返回value=x*2n中x的值,n存贮在eptr中double ldexp(double value,int exp); 返回value*2exp的值 double log(double x) 返回logex的值 double log10(double x) 返回log10x的值 double pow(double x,double y) 返回xy的值 double pow10(int p) 返回10p的值 double sqrt(double x) 返回+√x的值 double acos(double x) 返回x的反余弦cos-1(x)值,x为弧度double asin(double x) 返回x的反正弦sin-1(x)值,x为弧度double atan(double x) 返回x的反正切tan-1(x)值,x为弧度double atan2(double y,double x) 返回y/x的反正切tan-1(x)值,y的x为弧度

复试C语言常考趣味程序设计

狼追兔子 1 巧夺偶数 2 五猴分桃 3 高次方数 4 借书方案 5 过桥问题 6 数制转换7 打渔晒网8 喝酒问题9 哥德巴赫猜想10 打印日历11 抓交通肇事逃逸犯12 反序数13 新郎新娘14 称重砝码15 求车速16 谁是窃贼17 出售金鱼18 百钱百鸡19 谜语博士20 猜牌术(-)21 舍罕王的失算22 怎样存钱利最大23 猜牌术(二)24 爱因斯坦的数学题25 取火柴游戏26 平分鱼和筐27 可逆素数28 三色球问题29 抢n游戏30 问题A: 趣味程序设计_狼追兔子 时间限制: 1 Sec 内存限制: 128 MB 提交: 341 解决: 63 [提交][状态][讨论版] 题目描述 一只兔子躲进了n个环形分布的洞的某一个中。狼在第一个洞没有找到兔子,就隔一个洞,到第三个洞去找;也没有找到,就隔两个洞,到第六个洞去找。以后每次多一个洞去找兔子……这样下去,如果一直找不到兔子,请问兔子可能在哪个洞中? 输入 有多组测试数据,读取到文件结尾符为止。每组测试数据输入n(2≤n≤100),即洞穴个数。输入到文件结尾符为止。 输出 兔子可能藏匿的洞。如果不止一个,按从小到大的顺序输出。如果不存在,输出空行。 样例输入 10 8 15

样例输出 2 4 7 9 2 4 5 7 8 9 11 12 14 提示 用一个数组a[10],对应的元素a[0],a[1],a[2]……a[9]对应表示10个洞,初值均置1。通过一个循环用“穷举法”找兔子,第n次查找对应第(n-1)%10个洞,如果在第(n-1)%10个洞中没有找到兔子,因此将数组元素a[(n-1)%10]置0值。循环完成后,检查a数组各元素(各个洞)的值,若其值仍为1,则兔子可能藏身该洞中。 #include #include int ok[110]; int main() { int n,s,i,find; while(scanf("%d",&n)!=EOF) { memset(ok,0,sizeof(ok)); for(i=1;i<=200;i++) if(!ok[find=(i*(i+1)/2)%n]) if(find==0) ok[n]=1; else ok[find]=1; for(s=0,i=1;i<=n;i++) s+=ok[i]; for(i=1,find=0;i<=n;i++) if(!ok[i]) { if(find!=(n-s-1)) { printf("%d ",i);find++; } else printf("%d",i); } printf("\n"); } return 0; } 问题B: 趣味程序设计_巧夺偶数 时间限制: 1 Sec 内存限制: 128 MB

相关文档