当前位置:文档之家› C语言练习题

C语言练习题

C语言练习题
C语言练习题

一、单项选择题

1.以下有4组用户标识符,其中合法的一组是()。

A) for B) 4d C) f2_G3 D) WORD-sub

2.以下选项中合法的字符常量是()。

A) "B" B) '\t' C) 68 D) D

3.假定x和y为double型,则表达式x=2, y=x+1/2的值是()。

A) 2.500000 B) 2 C) 2.000000 D) 3.000000

4.若变量已正确定义并赋值,下面符合C语言语法的表达式是()。

A) a:=b+1 B) a=b=c+2 C) int 18.5%3 D) a=a+7=c+b

5.C语言中运算对象必须是整型的运算符是()。

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

6.若变量已正确定义并赋值,下面符合C语言语法的表达式是()。

A)a = 9+b = 5+c B)a = 9+b; c = a+9; C)a=12.5%3 D)a = (9+b, c++)

7.若有以下程序段,则执行后,c3的值是()。

int c1=1, c2=2, c3;

c3=1.0/c2*c1;

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

8.设x、y均为整型变量,且x=10 y=3,则语句printf("%d, %d\n",--x, y++) ; 的输出结果是()。

A)9, 4 B)9, 3 C)10, 4 D)10, 3

9.若num、a、b和c都是int型变量,则执行表达式num=(a=4,b=12,c=a-b)后num的值为()。

A)-8 B)4 C)12 D)8

10.若有说明语句:char *str="\t\?c\\Language\n" ; ,则指针str所指字符串的长度为()。

A)13 B)15 C)17 D)该语句不正确

11.以下对结构体类型变量rcard 的定义中不正确的是()。

A) #define REC struct card B) struct card

REC { int id; float sala; { int id; float sala; };

}rcard; struct card rcard;

C) struct card D) struct

{ int id; float sala; }; { int id; float sala; } rcard;

card rcard;

12.设ch是char类型变量,其值是'A',则以下表达式的值是()。

ch = (ch>=?A?&& ch<=?Z?) ? (ch+32) : ch

A)Z B)A C)a D)z

13.在一个源程序文件中定义的全局变量的作用域为()。

A)本文件的全部范围

B)主函数及其所调用的函数

C)离定义该变量的位置最近的函数

D)从定义该变量的位置开始至本文件结束

14.若有定义:char a[20], b[20]; ,以下能为a、b正确进行赋值的语句是()。

A)gets(a, b) ; B)gets(a) ; gets(b) ;

C)getchar(a) ; getchar(b); D)scanf(“%s%s” , a[ ] , b[ ] ) ;

15.若有说明语句:int a[2][3], m, n; 且0≤m≤1,0≤n≤2,则以下对数组元素的正确引用形式是()。

A)a[m]+n B)(a+m)[n] C)*(a+m)+n D)*(*(a+m)+n)

16.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);

17.在C语言中,二维数组元素在内存中的存放规则是:()。

A)所有元素都连续存放,并按行存放

B)所有元素都连续存放,并按列存放

C)同一行元素连续存放

D)同一列元素连续存放

18.若有定义:int c[5], *p=c; ,则以下对c数组元素地址的正确引用是()。

A)p+5 B)c++ C)&c+1 D)&c[0]

19.t为int类型,进人下面的循环之前,t的值为0

while (t=-8)

{ ……}

则以下叙述中正确的是()。

A) 循环控制表达式的值为0 B) 循环控制表达式的值为1

C) 循环控制表达式不合法D) 以上说法都不对

20.若有说明语句:int x1=3, x2=0, x3=0; ,以下程序段()。

if(x1=x2+x3) printf("* * * *");

else printf("# # # #");

A)输出* * * * B)输出# # # # C)存在语法错误D)无输出结果

21.若用fopen函数创建一个新的二进制文件,要求文件既能读也能写,则应选用的文件方式字符串是()。

A)"wb+" B)"w+" C)"rb+" D)"r+"

22.设x、y均为整型变量,且x=10 y=3,则以下语句的输出结果是()。

printf("%d,%d\n", --x, y++);

A) 10,4 B) 9,3 C) 9,2 D) 10,2

23.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是()。

A) 地址传递B) 单向值传递

C) 由实参传给形参,再由形参传回实参D) 传递方式由用户指定

24.以下对一维数组a的正确说明是()。

A)char a(10); B)int a[ ]; C)int k=5, a[k]; D)char a[ ]={'1','a','%'}; 25.若执行fopen函数时发生错误,则函数的返回值是()。

A)随机数B)1 C)NULL D)EOF

26.若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是()。

A) i=*p; B) *p=j; C) i=&j; D) i=**p;

27.以下定义语句中,错误的是()。

A) int a[]={1,2}; B) char *a[3]; C) char s[10]="test"; D) int n=5, a[n]; 28.当定义一个结构体变量rcard时,系统分配给它的内存是()。

A)结构体中第一个成员所需的内存容量

B)结构体中最后一个成员所需的内存容量

C)结构体成员中占内存量最大者所需的容量

D)结构体中各成员所需内存容量的总和

29.以下程序存在语法错误,关于错误原因的正确说法是()。

main( )

{ void search_n(int A);

int A[5]={5, 4, 0, 7, 1}, b;

……

b=search_n(A);

……

}

A)void search_n( ); 是函数调用语句,不能使用void说明

B)函数声明和函数调用语句之间有矛盾

C)变量名不能使用大写字母

D)函数名不能使用下划线

30.若k为整型变量,则以下for循环的执行次数是()。

for(k=2; k! =0;)

printf(“%d”, k--);

A)无限次B)0次C)1次D)2次

31.若有以下调用语句,则不正确的fun函数的首部是()。

main( )

{ ……

int a[50], n ;

……

fun(n, a) ;

……

}

A)void fun (int m, int a ) B)void fun (int m, int x[ ] )

C)void fun (int m, int *s) D)void fun (int m, int x[50 ] )

32.以下关于预处理的叙述中不正确的是()。

A)预处理命令行必须位于源程序的开始部位

B)预处理命令是在正式编译之前先行被处理的

C)一条有效的预处理命令行必须单独占据一行

D)C源程序中凡是以“#”号开始的控制行都是预处理命令行

33.若有定义:int *p [3]; ,则以下叙述正确的是()。

A)p是一个指针数组,数组p有3个元素,每个元素是指针

B)p是一个指针变量,它可以指向一个一维数组中的任意元素

C)p是一个指针变量,它可以指向一个含有3个整型元素的一维数组

D)(*p)[3]等价于*p [3]

34.以下选项中,不能正确赋值的是()。

A) char s1[10];s1="Ctest"; B) char s2[ ]={'C', 't', 'e','s', 't'};

C) char s3[20]="Ctest"; D) char *s4="Ctest\n"

35.判断char型变量c1是否为大写字母的正确表达式是()。

A)'A'<=c1<='Z'B)(c1>='A') & (c1<='Z')

C)(c1>='A') && (c1<='Z') D)('A'<=c1) AND ('Z'>=c1)

36.C语言规定:在源程序中,main函数的位置()。

A)必须在最开始B)必须在最后

C)可以任意D)必须在被调用的函数前面

37.若有以下说明和语句,则对结构体变量std中成员的引用方式不正确的是()。

struct work

{ int id;

int name;

}std, *p;

p=&std;

A)std.id B)(*p)->id C)(*p).id D)p->id

38.若有语句char s1[10], s2[10]="abcdef" ; ,则能将字符串abcdef赋给数组s1的正确语句是()。

A)s1 = "abcdef" ; B)s1 = s2 ; C)strcpy(s1,s2) ; D)strcpy(s2,s1) ;

39.设有定义:char s[20]="ABCDEF"; ,则数组s在内存中所占字节数是()。

A) 6 B) 7 C) 20 D) 不确定

40.以下正确的函数定义形式是()。

A)double fun(int x, int y) B)double fun(int x; int y)

{ [函数体语句] } { [函数体语句] }

C)double fun(int x, int y); D)double fun(int x, y)

{ [函数体语句] } { [函数体语句] }

41.为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:else子句总是与()。

A)缩排位置相同的if配对B)其之前最近且不带else的if配对

C)其之前最近的if配对D)第一个if配对

42.有如下程序,该程序的输出结果是()。

main( )

{ float x=2.0, y;

if(x<0.0) y=0.0;

else if(x<10.0) y=1.0/x;

else y=1.0;

printf(“%f\n”,y); }

A) 0.000000 B) 0.250000 C) 0.500000 D) 1.000000 43.有如下程序,该程序段的输出结果是()。

main( )

{ int n=9;

while(n>6) {n--; printf("%d", n);} }

A) 987 B) 876 C) 8765 D) 9876 44.以下程序的输出结果是()。

main()

{ char c='a';

printf("%c",c+25); }

A) z B) Z C) a+25 D) y

45.以下程序的运行结果是()。

#include "stdio.h"

main()

{ union

{ long a; int b; char c;

struct{int x; int y; }ss;

}m;

printf("%d\n", sizeof(m));

}

A)2 B)4 C)6 D)8 46.判断字符串str1是否大于字符串str2,应当使用()。

A)if(str1>str2) B)if(strlen(str1)>strlen(str2))

C)if(strcmp(str1>str2)) D)if(strcmp(str1, str2)>0)

47.若有定义:int x[5] = {0, 2, 4}; ,则数组x在内存中所占字节数是()。

A)3 B)6 C)10 D)不能确定48.下面对typedef的叙述中不正确的是()。

A)用typedef不能定义变量名

B)用typedef可以定义新的数据类型

C)使用typedef有利于程序的通用和移植

D)用typedef只是将已存在的类型用一个新的标识符来代表

49.以下程序的输出结果是()。

main( )

{ int i, a[10];

for(i=9; i>=0; i--)

a[i]=10-i;

printf("%d",a[8]);}

A) 8 B) 5 C) 2 D) 3

50.以下程序的输出结果是()。

main( )

{ char st[20]= "hello";

printf("%d \n",sizeof(st));}

A) 6 B) 20 C) 13 D) 5 51.以下程序的输出结果是()。

main( )

{ int a, b;

for(a=1, b=1; a<=100; a++)

{ if(b>=7) break;

if (b%3==1) {b+=3; continue; }

}

printf("%d\n",a); }

A) 101 B) 3 C) 5 D) 4 52.以下函数值的类型是()。

int fun (float x)

{ float y;

y=3*x-4;

return y;}

A) int B) 不确定C) void D) float 53.有如下程序,该程序的执行结果是()。

main( )

{ int i, sum;

for(i=1; i<=3; i++) sum+=i;

printf("%d\n",sum); }

A) 6 B) 不确定的值C) 死循环D) 0 54.有如下程序,该程序的输出的结果是()。

int func(int a, int b)

{ return(a+b);}

main( )

{ int x=2, y=5, r;

r=func(x, y);

printf("%d\n", r); }

A) 6 B) 7 C) 8 D) 9 55.有如下程序,该程序的输出结果是()。

main( )

{ int x=1,a=0,b=0;

switch(x)

{ case 0: b++;

case 1: a++;

case 2: a++;b++;}

printf(“a=%d,b=%d\n”,a,b); }

A) a=2,b=1 B) a=1,b=1 C) a=1,b=0 D) a=2,b=2 56.有如下程序,运行该程序的输出结果是()。

main( )

{ int y=3, x=3, z=1;

printf("%d, %d\n", (++x, y++), z+2); }

A) 3, 4 B) 4, 2 C) 4, 3 D) 3, 3 57.有如下程序,该程序的执行结果是()。

main( )

{ int x=20;

do

{ printf(“%d”,x--);}while(!x);

}

A) 19 B) 20 C) 不输出任何内容D) 陷入死循环58.以下程序的输出结果是()。

main( )

{ int a=3;

printf("%d\n",a+(a+=a*a));}

A) -6 B) 12 C) 24 D) -12 59.阅读以下程序:

main()

{ int x;

scanf("%d",&x);

if(x--<7) printf("%d",x);

else printf("%d",x++);}

程序运行后,如果从键盘上输入7,则输出结果是()。

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

60.有如下程序,该程序的输出结果是()。

main( )

{ int a=2,b=-1,c=2;

if(b<0) c=0;

else c++;

printf("%d\n",c);

}

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

61.一个C语言程序是由()。

A) 主程序和若干子程序组成B) 函数组成

C) 若干过程组成D) 若干子程序组成

62.设变量a是整型,f是实型,i双精度型,则表达式10+’a’+i*f值的数据类型为()。

A) int B) float C) double D) 不确定

63.当接受用户输入的含空格的字符串时,应使用()函数。

A) scanf( ) B) gets( ) C) getchar( ) D) puts( )

64.若a是float型变量,b是unsigned型变量,以下输入语句中合法的是()。

A) scanf("%6.2f%d",&a,&b); B) scanf("%f%u",&a,&b);

C) scanf("%f%3o",&a,&b); D) scanf("%f%f",&a,&b);

65.以下有关宏替换的叙述不正确的是()。

A) 宏替换不占用运行时间B) 宏名无类型

C) 宏替换只是字符替换D) 宏名必须用大写字母表示

66.设x为int型变量,则执行语句x=10; x+=x; 后,x的值为()。

A) 10 B) 20 C) 40 D) 30

67.设int a[ ]={10,20,30,40,50,60};则下列说法中,正确的是()。

A) 数组名a是a数组的首地址B) a表示了数组元素a[1]的地址

C) 允许进行a++运算D) 允许进行a=a-1运算

68.若有说明:int a[3][4];则对a数组元素的正确引用是()。

A) a[3][4] B) a[1, 3] C) a[1+1][1+2] D) a(2)(1)

69.循环体至少被执行一次的语句为()。

A) for循环B) while循环C) do-while循环D) 任一种循环

70.C语言用()表示逻辑“真”的值。

A) true B) t或y C) 非零D) 整数0

71.有如下函数调用语句:func ( rec1, rec2+rec3, rec4, rec5);

则定义子函数func时,形参个数为( )。

A) 3 B) 4 C) 5 D) 有语法错

72.循环for(i=0,j=10;i=j=10;i++,j--)的循环体执行次数是()。

A) 0 B) 1 C) 10 D) 无限

73.英文小写字母d的ASCII码为100,英文大写字母D的ASCII码为()。

A) 50 B) 66 C) 52 D) 68

74.设a=1, b=2, c=3, d=4, 则表达式“a

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

75.设有数组定义:char array [ ]="China"; 则数组array所占的空间为()。

A) 4个字节B) 5个字节C) 6个字节D) 7个字节

76.能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是()。

A) (x>1)&&(x<10)||(x>200)&&(x<2l0)

B) (x>=1) || (x<=10) || (x>=200) || (x<=210)

C) (x>=1)&&(x<=10) || (x>=200)&&(x<=2l0)

D) (x>=1) || (x<=10)&&(x>=200)||(x<=210)

77.定义如下变量和数组:

int i;

int x[3][3]={{1,2,3},{4,5,6},{7,8,9}};

则语句for(i=0; i<3; i++) printf("%2d", x[i][2-i]); 的输出结果是()。

A) 3 5 7 B) 1 4 7 C) 1 5 9 D) 3 6 9

78.C语言规定:函数返回值的类型是由()。

A) return语句中表达式类型决定B) 调用该函数时的主调函数类型决定

C) 调用该函数时系统临时决定D) 在定义该函数时所指定的函数类型决定

79.如果在一个函数中的复合语句中定义了一个存储类型为auto的变量,则该变量()。

A) 只在该复合语句中有效B) 在该函数中有效

C) 在程序范围内均有效D) 它是非法变量

80.下列选项中,非法的C语言转义字符是()。

A) '\t ' B) '\018 ' C) '\n ' D) '\xff '

81.C语言中运算对象必须是整型的运算符是()。

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

82.以下程序的输出结果是()。

main()

{ int x=1, a=0, b=0;

switch(x)

{ case 0: b++;

case 1: a++; break;

case 2: a++; b++;

}

printf("a=%d, b=%d\n", a, b);

}

A) a=2, b=1 B) a=1, b=1 C) a=1, b=0 D) a=2, b=2

83.用fopen()函数打开一个已存在的文本文件,在保留已有数据同时又可读可写,则文件打开模式为()。

A) "a+"B) "a"C) "w+"D) "r +"

84.如果a和b是两个字符串,判断a和b是否相等,应当使用如下形式()。

A) (a==b) B) (a=b) C) (strcpy(a,b)==0) D) (strcmp(a,b)==0) 85.执行以下程序后,y的值是()。

#include

main()

{ int a[]={2,4,6,8,10};

int y=1,x,*p;

p=&a[1];

for(x=0;x<3;x++)

y = *p*x;

printf("%d\n",y);

}

A) 6 B) 8 C) 10 D) 4 86.以下程序执行后,sum 的值是( )。

main()

{ int i , sum=0;

for(i=1;i<6;i++) sum+=i; printf("%d\n",sum); } A) 15 B) 14 C) 不确定 D) 0 87.下面的符号常量定义中,正确的是( )。

A) #define PI 3.14; B) #include PI 3.14; C) #define PI=3.14 D) #define PI 3.14 88.当定义一个结构体变量时,系统分配给它的内存是(

A) 各成员所需内存量的总和

B) C) 结构中第一个成员所需内存量 D) 结构中最后一个成员所需内存量 89.C 语言提供的合法保留字是( )。

A) swicth B) cher C) Char D) default 90.以下程序的输出结果是( )。

int fun(int x,int y) { int z; z=x*y;

return z; } main()

{ int a=5, b=7; int c; c=fun(a,b);

printf("%d\n", c); } A) 35 B) 12 C) 20 D) 75 91.若n 、i 、j 和k 都是int 型变量,则执行下面语句后,n 的值为( )。

n =(i =5,j =15,k =30); A) 5 B) 15 C) 30 D) 50 92.在下列变量中,( )不是局部变量。

A) register 类 B) 外部static 类 C) auto 类 D) 函数形参

93.若已知int a[3][4], (*p)[4]; p=a; 那么对数组a 的第2行第2列的正确引用是( )。

A) a[2][2] B) p[5] C) a[9] D) p[1][1] 94.存储以下数据,占用存储字节最少的是( )。

A) 0 B) '0' C) "0" D) 0.0 95.假设在程序中 a 、b 、c 均被定义成整型,所赋的值都大于1,则下列能正确表示代数式 的表达式是( )。 A) 1.0/a*b*c B) 1/(a*b*c) C) 1/a/b/(float)c D) 1.0/a/b/c

abc

1

96.能将高级语言编写的源程序转换成目标程序的是()。

A) 编辑程序B) 编译程序C) 解释程序D) 连接程序97.以下程序的运行结果是()。

#include

main()

{ char c1,c2;

c1=97; c2=98;

printf("%c %c\n",c1,c2);

printf("%d %d\n",c1,c2);}

A) 97 98 B) a b C) 97 98 D) a b

97 98 97 98 a b a b 98.两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是()。

#include

main()

{ int x;

scanf("%d",&x);

if(x>5) printf("%d",x);

else printf("%d\n",x--);

}

A) 7和5 B) 6和3 C) 7和4 D) 6和4 99.以下对二维数组a进行正确初始化的是()。

A) int a[2][3]={{1,2},{3,4},{5,6}}; B) int a[][3]={1,2,3,4,5,6};

C) int a[2][]={1,2,3,4,5,6}; D) int a[2][]={{1,2},{3,4}};

二、填空题

1.以下程序段的功能是统计文件Letter.txt中小写字母'a' 的个数,请填空。

FILE *fp; char m; long n=0;

if((fp=fopen("Letter.txt","r"))= =NULL)

exit(0);

while(!feof(fp))

{ m= ;

if(m= ='a') ;

}

printf("n=%ld\n", n);

fclose( );

2.若有定义:double x[5][3]; ,则x数组的数组元素中,列下标的最大值为。3.设y是int型变量,请写出判断y为奇数的表达式。

4.下面程序的功能是计算1+3+……+99的和,请填空。

main()

{ int i, sum;

;

for(i=1; i<50; i++)

;

printf(“sum=%d\n”,sum);

}

5.int a=5, b= -6; 表达式a-b< a+b的结果为。

6.以下程序段的功能是统计从键盘输入的字符中数字字符的个数,用字符“*”结束输入,请填空。

int n=0, c;

c = getchar( );

while( )

{ if ( ) n++;

c=getchar();

}

7.能正确表示逻辑关系:a≥10 或a≤0的C语言表达式是。

8.在C程序中,数据可以用两种代码形式存取,它们是和。

9.以下函数用于求二维数组arr(4行3列)中各元素的最小值,请填空。

min_value(int arr[ ][3])

{ int i, j, min;

min=arr[0][0];

for(i=0; ; i++)

for(j=0; ; j++)

if(arr[i][j]

return (min);

}

10.若有定义:int a[ ]={1, 2, 3, 4 ,5 ,6}, *p=a; ,则*(p+3)的值是 ,*(a+2)的值是。11.设x、y、z、均为int类型变量,且x =3,y = -4,z = 5,请写出下面表达式对应的结果。

表达式:(x&&y || z) = = (x || y&&z ) 结果:

12.以下函数的功能是找出x, y, z三个数中的最小值,请填空。

int func(int x, int y, int z)

{ int min;

min = x

return min;

}

13.已定义int m; char str[20]; ,使用库函数scanf为变量m和字符数组str赋值的语句是:scanf(" ", ); 。

14.设有以下变量说明:

int a=5, b=10;

float x=3.5, y=10.8;

请根据以下输出格式和结果,完成printf语句中的填空。

输出结果:a= 5,b=10,x+y=14.30 (注:“ ”表示空格)

输出语句:printf(”“, ) ;

15.以下程序的输出结果是。

main( )

{ int x,y,z=246;

x=z/100%9;

y=(-1)&&(-1);

printf("%d,%d\n", x, y); }

16.若有以下结构体类型声明:

struct STRU

{ int a ; char c ; double d ; } ;

请填空,完成对结构体变量book的定义,并给book赋初值:100,?A?,10.0 17.以下函数的功能是计算(x+y)2的结果,请填空。

float func(float x, float y)

{ float z;

z = ;

return z;

}

18.以下程序的功能是将字符串“ABCDEFG”以倒序形式打印出来,请填空。

main()

{ int i; char *p="ABCDEFG";

for(i=strlen(p)-1; ; i--)

printf("%c", );

}

19.若有以下定义和语句:

int a[5]={1, 3, 5, 7, 9}, *p;

p=&a[2];

则:++(*p)的值是。

20.将以下嵌套的if语句改写成对应的switch语句,使其完成相同的功能。请填空。

(假设已定义int mark ; mark的取值在1至100之间。)

if语句:

if(mark>=90) k=?A?;

else if(mark>=80) k=?B?;

else if(mark>=70) k=?C?;

else if(mark>=60) k=?D?;

else k=?E?;

switch语句:

switch( )

{ k=?A? ; break ;

case 8: k=?B? ; break ;

case 7: k=?C? ; break ;

case 6: k=?D? ; break ;

k=?E?; }

21.若x是int型变量,且x=9,则表达式x %2 + (x+1) %4 的值为。

22.执行语句printf ( “%c”, ?A?+ ?6?-…3?); 后,屏幕上显示。

23.若采用十进制的表示形式,则064为,0xA8为。

24.执行以下程序后,显示结果为。

#include

#define N 1000

main( )

{ int i;

float a[5], sum=0, avg;

for (i=0;i<5;i++)

a[i]=N+i;

for (i=0;i<5;i++)

sum+=a[i];

avg=sum/5;

printf("\nsum=%f, avg=%f", sum, avg); }

25.运算符%、/、=、&&中,运算对象必须是整型数据的运算符是。

26.C程序注释部分两侧的分界符是。

27.C语言中,表达式1/3的结果为。

28.以下程序将数组a的5个字符和数组b的7个字符写到名为mfile.dat的二进制文件中,请填空。

#include

main( )

{ FILE *fp;

char a[5]="12345", b[7]="abcdefg";

if((fp=fopen(" ","wb"))==NULL)

exit(0);

fwrite(a, sizeof(char), , fp );

fwrite(b, , 1, fp);

fclose(fp);

}

29.若有定义:int a[3][4]={{1, 2}, {0}, {4, 6, 8, 10}} ;

则初始化后,a[0][3]得到的初值是,a[1][1]得到的初值是。

30.请写出下面各printf语句的结果。

printf("%s\n", strcat("ABCD","1234"));

printf("%d\n", strlen("CHINA")+strlen("C"));

printf("%d\n", strcmp("the", "THE"));

31.程序读入20个整数,统计非负数个数,并计算非负数之和.

#include "stdio.h"

main()

{ int i,a[20], count,;

s=count=0;

for(i=0;i<20;i++)

scanf("%d", );

for(i=0;i<20;i++)

{ if(a[i]<0)

;

;

count++;

}

printf("s=%d\t count=%d\n",s, );

}

32.定义了二维数组a[2][2],a数组中有个元素。

33.C语言程序总是从开始执行。

34.打开文件使用fopen()函数,关闭文件使用函数。

35.定义int a[]={1, 2, 3, 4, 5, 6}, *p=a; 表达式(*++p)++的值是。

36.在函数内部定义的变量是,在函数之外定义的变量称为。变量的指针就是变量的,存放变量地址的变量就是。

37.结构化程序设计中的三种基本结构是顺序结构、、。

38.在C语言中,一个函数由两部分组成,它们分别是函数首部和组成。

39.同一数组中,数组元素之间是通过来加以区分的。

40.以下程序是求数组a各元素的平均值,请填空。

#include

main()

{ ;

int a[6]={56,76,98,45,87,69},i,sum;

float av;

/*显示数组各元素*/

for(i=0;i<6;i++)

printf("%5d",* );

printf("\n");

;

av= ;

/*显示计算结果(显示到小数点后2位)*/

;

}

func_sum(int *p,int n) { int i, ;

for(i=0; ;i++)

s=s+ ;

; }

三、阅读程序,写出结果

1.以下程序的运行结果是()。

main( )

{ char s[ ]="9876", *p;

for(p=s ; p

printf("%s\n", p); } 2.以下程序的输出结果是()。

fun(int x)

{ static int a=3;

a+=x;

return a;

}

main( )

{ int x=2, y1, y2 ;

y1=fun(x) ;

y2=fun(x) ;

printf("%d, %d\n", y1, y2) ;

}

3.下面程序的运行结果是()。

main( )

{ int i, f[10];

f[0]=f[1]=1;

for(i=2; i<10; i++)

f[i]=f[i-2]+f[i-1];

for(i=0; i<10; i++)

{ if(i%4==0) printf("\n");

printf("%3d", f[i]); } }

4.以下程序的运行结果是()。

struct

{ int a; int b;

struct {int x; int y; }ins;

}outs;

main( )

{ outs.a=11; outs.b=4;

outs.ins.x=outs.a+outs.b;

outs.ins.y=outs.a-outs.b;

printf("%d, %d", outs.ins.x, outs.ins.y);

}

5.以下程序的运行结果是()。

main()

{ int a,b,k=4,m=6,*p1=&k, *p2=&m;

a=p1==&m;

b=(*p1)/(*p2)+7;

printf("a=%d\n",a);

printf("b=%d\n",b); }

6.以下程序是关于学生成绩处理的程序(假设有5个学生,每个学生考4门课),请写出以下程序的运行结果()。

main()

{ int score[5][4]={{62,87,67,95},{95,85,98,73},{66,92,81,69},

{78,56,90,99},{60,79,82,89}};

int j, k, flag;

for(j=0; j<5; j++)

{ flag=0;

for(k=0; k<4; k++)

if(score[j][k]<60) flag=1;

if(flag= =1)

{ for(k=0; k<4; k++)

printf("%5d", score[j][k] );

}

}

}

7.以下程序的输出结果是()。

int a=3, b=5;

int max(int a, int b)

{ int c;

c = a>b?a:b;

return(c);

}

main( )

{ int a=8;

printf("%d\n",max(a, b));

}

8.以下程序中,“ ”表示空格,写出其输出结果()。

void my_copy(char *p1, char *p2)

{ while(*p2!='\0')

*p1++=*p2++;

*p1='\0';

}

main( )

{ char s1[20], s2[ ]="Good Luck!";

my_copy(s1,s2+5);

printf("s1=%s\ts2=%s\n", s1, s2);

}

9.以下程序的输出结果是()。

main()

{ int a[3][3]={1, 3, 6, 7, 9, 11, 14, 15, 17}, sum=0, i, j;

for(i=0; i<3; i++)

for(j=2; j>=0; j--)

if((i+j)= =2) sum=sum+a[i][j];

printf("sum=%d\n", sum);

}

10.以下程序的输出结果是()。

#define ADD(x) x+x

main( )

{ int a=3, b=1 , m=16;

m /= ADD(a+b);

printf(“m=%d\n”, m);

}

四、编程题

1.编写程序,统计输入的字符串中字母、数字、空格和其他字符各有多少个。2.编写程序,求出10个整数中的最大值,平均值,及负数的个数。

3.编写程序,把一个给定的字符数组逆置。(如:"DTGAB" 逆置为"BAGTD")4.编写程序,把10个整数按从大到小的次序排序。

5.编写程序,判断输入的任意整数是否为素数,并输出判断结果。

6.编写程序,求1+1/3+1/5+……+1/101的值,输出时保留小数点后两位。

一、选择题

二、填空题

1、fgetc(fp) n++ fp

2、2

3、y%2==1或y%2!=0

4、sum=1 sum=sum+(2*i+1)

5、0

6、c!=?*? c>=?0?&&c<=?9?

7、a>=10||a<=0

8、ASCII码二进制码9、i<4 j<3 arr[i][j]

10、4 3 11、112、x : y min : z

13、%d%s &m,str 14、a=%2d, b=%d, x+y=%.2f\n a, b, x+y

15、2, 1 16、book = {100, …A?, 10.0 } 17、(x+y)*(x+y)

18、i>=0 *(p+i)或p[i] 19、6 20、mark/10 case 9 : default

21、322、D23、52 168

24、sum=5010.000000, avg=1002.00000025、%26、/* */ 27、0

28、mfile.dat 5或strlen(a) 7或sizeof(b)

29、0 0 30、ABCD1234 6 32

31、S &a[i] continue s+=a[i] 32、433、main函数

34、fclose() 35、3

36、局部变量全局变量地址指针变量

37、选择结构循环结构38、函数体39、下标

40、int func_sum(int *p, int n) (a+i) sum=func_sum(a, 6)

(float)sum/6 printf(“平均值:% .2f\n”, av)

int s=0 i < n p[i]或*(p+i) return s

三、阅读程序,写出结果

1、9876

2、5,7

3、 1 1 2 3

4、15,7

876 5 8 13 21

34 55

5、a=0

6、78 56 90 99

7、8

b=7

8、s1=Luck! s2=Good Luck!

9、29 10、2

计算机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++;

c语言习题及答案_爱课程mooc

第一章 题目内容: 使用printf()在屏幕上输出hello world! 提示: #include <> int main() { printf("hello world!\n"); return 0; } 输入格式: 无 输出格式: 输出提示信息:"hello world!\n" 输入样例: 输出样例: hello world! #include <> int main() { printf("hello world!\n"); return 0; } 在屏幕上输出多行信息(3分) 题目内容: 使用printf()函数在屏幕上输出以下多行信息: hello world! hello hit!

hello everyone! 提示: 在printf()函数中转义字符‘\n’表示换行。 输入格式: 输出格式: 输出提示信息: "hello world!\n" "hello hit!\n" "hello everyone!\n" 输入样例: 输出样例: hello world! hello hit! hello everyone! #include <> int main() { printf("hello world!\n"); printf("hello hit!\n"); printf("hello everyone!\n"); return 0; } 计算半圆弧的周长及半圆面积(3分) 题目内容: 编程并输出半径r=的半圆弧的周长及该半圆的面积,的取值为。要求半径r和必须利用宏常量表示。 输入格式: 无 输出格式: 半圆的面积输出格式:"Area=%f\n" 半圆弧的周长输出格式:"circumference=%f\n" 输入样例: 输出样例: Area=

C语言练习试题和答案

单项选择题: 1.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从 C开始执行。 A) 程序中第一条可执行语句 B) 程序中第一个函数 C) 程序中的main函数 D) 包含文件中的第一个函数 3、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B )。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 [i] t 6.下列C语言用户标识符中合法的是( B)。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是(C)。 A) %x B) a+b C) a123 D) 123 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# 语言中的简单数据类型包括(D)。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是C。 A) B)2 C)1 D)3 11.如果int a=3,b=4;则条件表达式"a

c语言复习题(有答案)●

思考题 不仅要会做这些题,更重要的是要掌握其相关知识点一、一般填空题 1-1、调用fopen函数打开一文本文件,在“打开模式”这一项中,为输出(写)而打开需填入【1】. 1-2、调用fopen函数打开一文本文件,在“打开模式”这一项中,为追加而打开需填入【1】. 1-3、fopen函数的原形在头文件【1】中. 1-4、getchar函数的原形在头文件【1】中. 1-5、sqrt函数的原形在头文件【1】中. 1-6、如果函数不要求带回值,可用【1】来定义函数返回值为空. 答案:w或w+;a或a+;stdio.h ; stdio.h ; math.h ;void . 2-1、字符串“\1011234\\at”的长度(字符数)是【1】. 2-2、字符串“abc\103\\bcd”的长度(字符数)是【1】. 2-3、字符串“1\\t\x43\abx44”的长度(字符数)是【1】. 2-4、“a“在内存中占【1】个字节. 2-5、‘a’在内存中占【1】个字节. 2-6、“\71“在内存中占【1】个字节. 2-7、一维数组下标的最小值是【1】;数组char a[]=“china” ;在内存应占【1】个字节。 答案:8; 8; 9; 2;1;2 ;0;6. 3-1、设x=(5>1)+2, x的植为【1】. 3-2、表达式‘B’+15+‘\x41’+011+0x10的值是【1】. 3-3、表达式‘b’+5+‘\x42’+011+0x10的值是【1】. 答案:3;171;194; 4-1、假设所有变量都为整型,表达式(a=2,b=5,a>b?a++:b++,a+b)的值是【1】. 4-2、if(!a)中的表达式!a等价于【1】. 4_3、已知a=1,b=2,c=3,执行if(a>b>c) b=a;else b=c;a=4;b=8;后,b的值是【1】. 答案:8;a==0;8; 5-1、若所用变量都已定义,下列程序段的执行结果是【1】. for(i=1;i<=5;i++);printf(“OK\n”); 5-2、执行语句char s[3]=”ab”,*p;p=s;后,*(p+2)的值是【1】. 5-3、若有以下定义和语句:int a[4]={0,1,2,3},*p; p=&a[2]; ,则*--p的值是【1】. 5-4、下列程序的输出结果是【1】,main(){int a=011;printf(“%d\n”,++a);} 答案:OK;’\0’;1;10 6-1、若宏定义为:#define y(x) 2+x, 则表达式a=3*y(3)的值为【1】. 6-2、若宏定义为:#define y(x) 2+x, 则表达式a=4*y(2)的值为【1】. 6-3、若宏定义为:#define y(x) 2/x, 则表达式a=4+3*y(3)的值为【1】. 答案:9;10;6 . 二、单项选择题 1-1、若以"a+"方式打开一个已存在的文件,则以下叙述正确的是()。 A:文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作 B:文件打开时,原有文件内容不被删除,位置指针移到文件开头,可作重写和读操作 C:文件打开时,原有文件内容被删除,只可作写操作 D:以上各种说法皆不正确 1-2、若执行fopen函数时发生错误,则函数的返回值是()。

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 如图所示,在真空中有一半径为a 的3/4圆弧形的 导线,其中通以稳恒电流I ,导线置于均匀外磁场B 中,且B 与导线所在平 面垂直.则该载流导线bc 所受的磁力大小为_________________. aIB 2 2.有一半径为a ,流过稳恒电流为I 的1/4 圆弧形载流导线bc ,按图示方式置于均 匀外磁场B 中,则该载流导线所受的安培力大小为_______________________. aIB I c a

3.通有电流I的长直导线在一平面内被弯成如图形状,放于垂直进入纸面的均匀磁场 B 中,求整个导线所受的安 培力(R 为已知). 解:长直导线AC 和BD 受 力大小相等,方向相反且在同一直线上,故合力为 零.现计算半圆部分受力,取电流元l I d , B l I F ?=d d 即 θd d IRB F = 由于对称性 0d =∑x F ∴ RIB IRB F F F y y 2d sin d 0 ====??π θθ 方向沿y 轴正向 ? ? B 1F

4.如图所示,载有电流I 1和I 2的长直导线ab 和cd 相互平 行,相距为3r ,今有载有电流I 3的导线MN = r ,水平放置, 且其两端MN 分别与I 1、I 2的 距离都是r ,ab 、cd 和MN 共面,求导线MN 所受的磁力大小和方向. 解:载流导线MN 上任一点处的磁感强度大小为: ) (21 0x r I B +π= μ)2(22 0x r I -π- μ MN 上电流元I 3d x 所受磁力: x B I F d d 3=) (2[ 1 03x r I I +π=μx x r I d ]) 2(21 0-π- μ ?-π- +π=r x x r I x r I I F 0 2 01 03d ]) 2(2) (2[ μμ -+π=?r x x r I I 013 0d [2μ]d 20 2 ?-r x x r I I I 2

C语言练习题(带答案)-绝对经典题目不看后悔

1单选题 1.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从C开始执行。 A) 程序中第一条可执行语句B) 程序中第一个函数 C) 程序中的main函数D) 包含文件中的第一个函数 3、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B)。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 A.-a1 B.a[i] C.a2_i D.int t 5~8题为相同类型题 考点:标识符的命名规则 (1)只能由字母、数字、下划线构成 (2)数字不能作为标识符的开头 (3)关键字不能作为标识符 选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3) 6.下列C语言用户标识符中合法的是(B)。 A)3ax B)x C)case D)-e2 E)union 选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1); 7.下列四组选项中,正确的C语言标识符是(C)。 A)%x B)a+b C)a123 D)123 选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2) 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键

C语言练习题(带答案)

一、单项选择题 1.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从C开始执行。 A) 程序中第一条可执行语句B) 程序中第一个函数 C) 程序中的main函数D) 包含文件中的第一个函数 3、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B )。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 A.-a1 B.a[i] C.a2_i D.int t 6.下列C语言用户标识符中合法的是(B)。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是(C)。 A)%x B)a+b C)a123 D)123 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 9.C语言中的简单数据类型包括(D)。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是C。 A)2.5 B)2 C)1 D)3 11.如果int a=3,b=4;则条件表达式"a

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语言课后习题

习题第三章 #include <> #include <> int main() { int d,p; double r,a,m; scanf("%d %d %lf",&d,&p,&r); a=(p/(p-d*r)); # m=log(a)/log(1+r); if(p>0&&d>0) { if(d<=m*p) printf("%.1f",m); else printf("God"); } else printf(""); ) return 0; }

勾股数 #include <> int main() { int a,b,c,n; scanf("%d",&n); for(a=1;a<=n;a++) { { for(b=1;b<=n;b++) { for(c=1;c<=n;c++) { if(c*c==a*a+b*b) { if(a<=b) { printf("%d %d %d\n",a,b,c); 《 } } } }

} return 0; } 第四章 … 计算分段函数值 #include <> int main() { float x,y; scanf("%f",&x); if(x<1) y=x; else if(x>=1&&x<10) y=2*x-1; else if(x>=10) y=3*x-11; printf("%.2f",y); ^ return 0; } 找出三个数中最大的数 #include <> int main() { int a,b,c,max;

scanf("%d%d%d",&a,&b,&c); max=a>ba:b; ! if(c>max) max=c; printf("%d",max); return 0; } 10844成绩等级评分 #include <> int main() { 。 int x; scanf("%d",&x); if(x>=0&&x<=100) { switch(x/10) { case 10: case 9: printf("A");break; case 8 : printf("B");break; case 7 : printf("C");break; …

C语言练习题集(带答案解析)

精品文档 1. ( A )是构成C 语言程序的基本单位。 A 、函数 B 、过程 C 、子程序 D 、子例程 2. C 语言程序从 ____ C ________ 开始执行。 A ) 程序中第一条可执行语句 B )程序中第一个函数 C )程序中的main 函数 D )包含文件中的第一个函数 3、以下说法中正确的是( C )。 A 、 C 语言程序总是从第一个定义的函数开始执行 B 、 在 C 语言程序中,要调用的函数必须在 main ()函数中定义 C 、 C 语言程序总是从 main ()函数开始执行 D 、 C 语言程序中的 main ()函数必须放在程序的开始部分 4. 下列关于C 语言 的说法错误的是( B ) 。 A ) C 程序的工作过程是编辑、编译、连接、运行 B ) C 语言不区分大小写。 C ) C 程序的三种基本结构是顺序、选择、循环 D ) C 程序从main 函数开始执行 5. 下列正确的标识符是(C )。 A. -a1 B.a[i] C.a2_i 6. 下列C 语言用户标识符中合法的是( B )。 A) 3ax B)x C)case D)-e2 E)u nion 7. 下列四组选项中,正确的 C 语言标识符是 (C )。 A ) %x B ) a+b C ) a123 D ) 8、 下列四组字符串中都可以用作 A 、print _3d db8 aBc B C 、str_1 Cpp pow while D 9. C 语言中的简单数据类型包括( A 、整型、实型、逻辑型 C 、整型、字符型、逻辑型 C 语言程序中的标识符的是( A ) 、I\am one_half start$it 3pai 、Pxq My->book line# His.age D )。 B 、整型、实型、逻辑型、字符型 D 、整型、实型、字符型 10. 在C 语言程序中,表达式 5%2的结果是—C_ A)2.5 B)2 C)1 D)3 11. 如果int a=3,b=4 ;则条件表达式"a

C语言试题与答案

大学C语言考试题库 第1章 C语言概述习题 1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. A B. B C. D D. E (2) 在 C 语言中,每个语句必须以 D 结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (3) 标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D.自动保存源文件 (5) 下列说法中正确的是( B )。 A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C. 由于C 程序是高级语言程序,因此输入后即可执行 D. 由于 C 程序是高级语言程序,因此它由命令组成 (6) 下列说法中正确的是( A )。 A. C 语言程序由主函数和 0 个或多个函数组成 B. C 语言程序由主程序和子程序组成 C. C 语言程序由子程序组成 D. C 语言程序由过程组成 (7) 下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2. 填空题 (1) C 语言只有 32 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系

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()

C语言思考题

1、机器语言:机器语言及其指令是计算机能够直接识别的执行的一组二进制代码。一条机器指令通常由操作码和操作数两部分构成。 2、汇编指令:是机器语言的符号化表示MOV 3、汇编语言:由汇编指令、汇编伪指令及汇编语言的语法规则组成。 4、汇编语言源程序:用汇编语言编写的程序 5、汇编程序:把汇编语言源程序翻译成目标程序的加工程序MASM 6、二、十、十六进制转换(掌握<256)练习1:117=(1110101)B练习2:1000 1011 B=(139)D练习3:1011 1000 0000 0101 B=(B805)H 7、机器数:是指计算机中的数据,可以分为无符号数和有符号数字长为N位时无符号数表示范围0≤N≤2N-1 当N=8时0≤N≤255 8、原码(8位):最高位为符号位(正数用0表示,负数用1表示),其他位为数值位 如X=+45=+0010 1101B [X]原=0010 1101B 如X=-45=-0010 1101B [X]原=1010 1101B 9、补码(8位):正数的补码与原码相同,负数的补码是将符号位取1,数值位逐位取反,未位加1。如X=+45=+0010 1101B [X]补=0010 1101B 如X=-45=-0010 1101B [X]补=1101 0011B 10、补码运算:是指对一个补码表示的数按位求反后再在末尾加1,可以得到与此数相应的符号相反的数的补码。例、已知[117]补=0111 0101B,[-117]补=1000 1011B,对[117]补作补码运算。解:因为[117]补=0111 0101B,按位求反后得1000 1010B,末尾加1得1000 1011B=[-117]补。[X+Y]补=[X]补+[Y]补[X-Y]补=[X]补+[-Y]补 12、BCD码:BCD码用4位二进制数表示1位十进制数。常用8421BCD码例:写出十进制314所对应的BCD码 13、8086/8088CPU:16位微处理器和16位数据总线,20位地址总线(寻址空间为1MB)。8088微处理器内部16位数据,外部8位数据,也称准16位机。8086/8088CPU的组成(功能方面):运算器、控制器、寄存器组 14、寄存器是CPU内部临时存放数据的部件,速度比内存快。(1)数据寄存器4个16位寄存器AX,BX,CX,DX,每个寄存器还可以拆成2个8位寄存器使用。 AX累加器:算术运算寄存器,用于存放操作数或运算结果。I/O指令中通过AX与外部交换数据。在乘除运算中指定存放被乘数与被除数,系统功能调用号。AX累加器可以分为AH、AL分别使用。 BX基址寄存器:可作为通用寄存器使用。在计算内存地址是,常作基址寄存器,作为通用寄存器还可以分为BH、BL分别使用。 CX数据寄存器:可作为通用寄存器使用。在循环和串操作指令中作隐含计数器。作为通用寄存器还可以分为CH、CL分别使用。 DX数据寄存器:可作为通用寄存器使用。在I/O操作中,DX用来存放I/O端品地址。在乘除法运算中与AX组合一起存放双字型数据。作为通用寄存器还可以分为DH、DL 分别使用。 (2)变址寄存器(2 个16位):SI 源变址寄存器.DI 目的变址寄存器 BP基址寄存器:用于存放栈中的操作数的偏移地址。SP堆栈指针寄存器:用来指示栈顶的当前位置(偏移地址)。 IP 指令指针寄存器(程序计数器):用于存放下一条指令所在偏移地址。与CS配合,用来确定程序中下一条指令的物理地址。 15、PSW程序状态字寄存器(标志寄存器):8088微处理器使用16位中的9位设置了9个标志。标志位SF、OF、CF、ZF的含义0010 1001B+1110 1000B=1 0001 0001B CF=1 OF=0 SF=0 ZF=0 16、段地址寄存器:段表示一块内存空间(大小可变),最大为64K字节,最小为16字

C语言课堂练习习题集

1 《C 语言程序设计》自主学习检验题汇编 第一、二章 C 程序与算法 单项选择题 1. 将汇编语言编写的程序翻译成目标程序的程序是( ) A)解释 B)编译 C)汇编 D)目标 2. 不属于面向机器语言的是 ( ) A)符号语言 B)二进制语言 C)汇编语言 D)C 语言 3. 将高级语言编写的程序翻译成目标程序的程序是()。 A)解释 B)编译 C)汇编 D)二进制 4. 不属于高级语言的是()。 A)BASIC B)C C)ALGOL D)符号语言 5. 程序段的基本结构中,不包含()。 A)函数结构 B)循环结构 C)顺序结构 D)分支结构 6、C 语言源程序的最小单位是( )。 A 、程序行 B 、语句 C 、函数 D 、字符 7、以下说法正确的是( )。 A 、 在C 语言中,要调用的函数必须在main()函数中定义 B 、 C 语言程序总是从第一个定义的函数开始执行 C 、 C 语言程序中,main()函数必须放在程序的开始部分 D 、 C 语言程序总是从main()函数开始执行 8、以下对C 语言描述中正确的是( )。 A 、 C 语言源程序中可以有重名的函数 B 、 C 语言源程序中要求每行只能书写一条语句

2 C 、 C 语言源程序中,注释可以出现在任何位置 D 、 最小的C 源程序中没有任何内容 9、对C 语言源程序执行过程描述正确的是( )。 A 、 从main() 函数开始执行,到main()函数结束 B 、 从程序的第一个函数开始执行,到最后一个函数结束 C 、 从main 函数开始执行,到源程序的最后一个函数结束 D 、 从第一个函数开始执行,到main 函数结束。 填空题 1. 能完成某个任务的、有始有终的C 语言__ _称为C 程序。 2. 用来编写程序的计算机语言称为____。 3. 高级语言编写的程序称为____。 4. 用C 语言编写的源程序简称为“C 程序”,扩展名规定为“____”。 5. C 程序经过“编译”后将获得扩展名为“OBJ ”的____。 6. C 程序经过编译后获得的中间代码文件还需要经过____,才能成为可执行的“程序”, 目标程序的扩展名规定为"EXE"。 7、ANSI C 标准中共规定了 个关键字, 条控制语句。 8、一个执行的C 语言源程序至少应包含一个 。 9. 选择结构是____选择某个操作来执行的—种程序结构。 10. 选择结构可以分为____、双分支结构和多分支结构。 11. 循环结构又可分为当型循环、____及次数型循环。

C语言复习题

C 语言程序设计复习题 一、选择题 1.下列选项中可作为C 语言合法常量的是(a )。 A)-80 B)-080 C)-8e1.0 D)-80.0e 2.下列不能定义的用户标识符是(d )。 A)Main B)_0 C)_int D)sizeof 3.下列选项中,不能作为合法常量的是(b )。 A)1.234e04 B)1.234e0.4 C)1.234e+4 D)1.234e0 4.有定义语句:int b; char c[10];,则正确的输入语句是(b )。 A)scanf("%d%s",&b,&c); B)scanf("%d%s",&b,c); C)scanf("%d%s",b,c); D)scanf("%d%s",b,&c); 5.设有变量定义int a,b,d=25;则语句a= d/10%9, b=a&&(-1);执行之后a、b变量的值为 (b) A)a=6,b=1 B)a=2,b=1 C)a=6,b=0 D)a=2,b=0 6.下列程序段的输出结果是(d )。 int i=1,j=2,k=3; if(i+ + = =1&&(+ +j= =3‖k+ + = =3)) printf("%d %d %d\n",i,j,k); A)1 2 3 B)2 3 4 C)2 2 3 D)2 3 3 7.若整型变量a、b、c、d 中的值依次为:1、4、3、2。则条件表达式a

趣味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语言课后习题答案(最终)

第0章习题 1. 将下列十进制数分别转化为二进制数、八进制数和十六进制数: (1)128 (2)511 (3)1024 (4)65535 (5)1048575 答: (1)10000000、200、80 (2)111111111、777、1FF (3)10000000000、2000、400 (4)1111111111111111、177777、FFFF (5)11111111111111111111、3777777、FFFFF 2. 将下列二进制数转化为十进制数和十六进制数: (1)1100110101B (2)101101.1011B 答: (1)821、335 (2)45.6875、2D.B 3. 写出下列数的原码、反码、补码:15、-20、-27/32 答: (1)00001111、00000000、00001111 (2)10010100、11101011、11101100 (3)1.1101100、1.0010011、1.0010100 4. 16位无符号定点整数的数值表示范围为多少?8位补码的表示范围是多少?16位补码的表示范围是多少? 答: 0~65535、-128~127、-32768~32767 5.1968年Dijkstra提出结构化程序设计的思想的原因是什么?简要回答结构化程序设计的经典定义。 答: 结构化程序设计概念的提出主要是源于程序结构的层次性与模块化使得构造出来的软件具有良好的可理解性和可维护性,随着软件规模的扩大与复杂性的提高,程序的可维护性成为程序设计者们关注的重要问题之一。 如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。 6.C程序在内存中存储在哪儿?计算机的内存空间是如何分区的?分区存放不同类型的数据的目的是什么? 答:

C语言例题及课后练习题汇总

1.在屏幕上显示一句话“欢迎学习C语言”。 2.求一个数的平方。 3.输入两个数,输出其中最大数。 4.编写一个C程序,输入三个整数,输出其中最大数。 5.编写一个C程序,从键盘上输入矩形的长和宽,屏幕上显示对应的矩形周长和面积。6. 编写一个C程序,输出9的阶乘的结果。 7.从键盘输入一个大写字母,输出其对应的小写字母。 8.用条件运算符实现:输入一个英文字母,如输入小写字母,输出其对应的大写形式,如输入大写字母,则原样输出。 9. 编程题:从键盘输入三个数a、b、c,输出平均值aver。 10. 计算工资税额。有一种工资纳税制度的规定为:如果工资超过50000元,缴纳的税额为工资总额的50%;如果工资超过10000元,纳税比例为工资总额的30%;如果工资超过7000元,纳税比例为工资总额的20%;如果工资超过5000元,纳税比例为工资总额的10%;如果工资少于等于5000元,不需纳税。设计一个程序,按照工资数额算出需要缴纳的税额。11.由键盘输入一个字符,判断是数字、英文字母还是其他字符。用if语句实现。 12. 由键盘输入一个成绩,然后输出相应的等级“优”、“良”、“中”、“及格”、“不及格”。 13. 从键盘输入1~7之间的数字,输出表示一个星期中对应的某一天的英文单词。 14. 计算器程序。用户输入运算数和四则运算符,输出计算结果。 15.输入两个数,判断两个数的关系是“大于”、“等于”或者“小于”,并输出结果。16.从键盘任意输入三个数,按照从小到大顺序输出。 17.编写程序判断输入的一个正整数是否既是5又是7的倍数。若是,则输出yes;若否,则输出no。 18. 用while循环输出1+2+…+100的结果。 19. 从键盘输入整数n,求1+2+…+n的结果并输出。 20. 求水仙花数。如果一个三位数的百位数、十位数和个位数的立方和等于这个数,那么这个数就被称为水仙花数。 21. 求2+4+…+100的结果并输出。 22. 用for循环输出1+2+…+100的结果。 23. 计算Fibonacci数列的前30项,并输出。 24. 求具有abcd=(ab+cd)2性质的四位数。比如:3025具有这样的性质,将它平分成两段30和25,然后加和取平方值,即 (30+25)2,恰好等于3025本身。请求出这种性质的全部四位数。 25. 编程题:求100+99+…+1的结果并输出。 26.编程题:从键盘输入一个值,统计1到这个数之间不能被3整除的数的个数,并输出这些数。 27. 从键盘输入一个数n,判断n是否是素数。 28. 统计1~50之间不能被3整除的数的个数并输出这些数字。 29. 输出下列图形。

相关主题
文本预览