搜索
您的当前位置:首页C语言补充题1

C语言补充题1

来源:世旅网
一、 选择题

(一)概述

1.( )为正确变量名

A)pro_5 B)case C)5_pro D)else

2.( )为正确的用户标识符。

A)min-5 B)3_row C)max_at D)union

3.下面叙述正确的是( ) A)程序中必需包含自定义函数

B)main( )函数必须位于源程序文件的开头 C)所有语句都必须以分号“;”结束 D)每行最多只能写两个语句

4.下面叙述错误的是( )

A)注释说明部分只能位于C源程序的最前面 B)C源程序必须包含一个main()函数 C)C源程序可由一个或多个函数组成

D)一个C源程序的执行是从main( )函数开始,直到main( )函数结束

(二)语法基础

5.下面叙述错误的是( )

A)算术运算符中不包含“=”运算符

B)模运算符“%”是C语言基本的算术运算符

C)算术运算符只有“*”,“/”优先级高于关系运算符 D)自增和自减运算符只能用于变量,而不能用于常量或表达式

6.下面叙述中正确的是( ) A)(3+9)++是正确的表达式

B)C语言中的整型与字符型变量混合运算的结果是整型

C)模运算符“%”两边运算数的数据类型是任意的 D)“abc”+“xxx”是正确的表达式

7.若有定义:int i=3, j=6; 则表达式(- -i)*(j++)的值为()。

A)12 B)10 C)18 D)15

8.若有定义:float x=3.5, y=5.5; 则表达式( )的值为2.

A)(x+y)%7 B)(int)(x+y)%7 C)(int)x+y%7 D)int(x+y)%7

9 若有定义 int x=1, y=2, n=3; 则( )为正确表达式

A)x=ny B)x=y*3, y=(x+n)/y C)(x+y)(y+n) D)float(y/n)

10若有定义: int a, 且表达式!a的值为0,则表达式( )的值为1

A)!(a<0||a>0) B)a!=0 C)a=0 D)a= =0

11若有定义:int a=3, b=5, c=8; 则表达式!(a-b)||(c-b)的值为( )。

A)0 B)2 C)3 D)1 12.若有定义: int x, char c=‟A‟;则正确的赋值表达式是( )。(说明:‟A‟的ASCII码的十进制值为65,‟a‟的ASCII码的十进制值为97) A) x=c+‟ABC‟ B)x=c+‟CBA‟ C)x=‟ABC ‟ D)X=c+32 13.( )为非法的字符串常量

A)‟123‟ B)”056” C)” ” D)”case” 14.( )为正确的字符常量

A)‟165 ‟ B)‟\\084‟ C)‟@‟ D)‟bcd‟ 15.()为合法的常量

A)‟b_k‟ B)1.23E+8 C)3.21E-6.5 D)5,326

16.若有定义:int b= -15,则( )为正确的赋值表达式

A)b=*5 B)b+=b*3 C) *b=6 D)b+10= -5

17.若有定义: int x=1, y=2,z=3,则表达式( )的值为0.

A)x18.若有定义: int a=6, b=7, k=0, t=1; 语句(k=a1

D)int a=b=2, c=5;

20.下面叙述正确的是( )

A)++2与3等价 B)++2与- -3等价

C)2/3与2%3等价 D)5/ (int)4.0与5/4等价

21.若有定义float x=3.5, y=3.6; 则表达式( )的值为6

A)x+y B)(int)(x+y) C)(int)x+(int)y D)int(x+y)

22.以下程序段运行后x的值为( ) int a=3, b=6, x; x=(a= =b)?a++:- -b;

A)3 B)4 C)6 D)5 23.若有定义: int a, b=5; 语句a=(b/2)+(b%2); 运行后, a的值为( )

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

24.若有定义:int a=1, b=2, c=3, d=4, t=2, k=2; 语句(t=aA)1.666667 B)1.0 C)2.0 D)0

26.下面运算符中优先级最低的是( )。 A)! B)= C)* D)>

27. 若有定义:int a=3; 语句a+=a-=a*a; 运行后, a的值为( )

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

28. x的值在-20至-5之间为“真”,否则为“假”的正确逻辑表达式为( )

A)-20-20)&&!(x<-5) D)x>-20&&x<-5

29.若有定义:int x, y, z; 语句x=(y=z=3,++y, z+=y); 运行后,x的值为( )。

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

30.若有定义float x; 要从键盘输入数据6.02赋给x, 则应选用( )语句。

A)scanf(“%8.2f”, &x); B) scanf(“%1.2f”, &x); C) scanf(“%4.2f”, &x); D) scanf(“%f”, &x);

31.若有语句int a, charc; scanf(“%3d%c”,&a,&b);

为将整数135赋给a,字符‟6‟赋给c,正确的数据输入方式是( )(说明代表换行,_代表空格) A)1356 B) 1356 C)135_6_ D)135_6

32.若有定义:char c1=‟A‟, c2=‟B‟; 语句printf(“%d+%d=%d”, c1, c2, c1+c2); 运行的结果为( )。(说明‟A‟的ASCII码的十进制值为65) A)A+B=131 B)65+66=131 C)65+66=AB D)A+B=AB

33. 若有定义: int a=8, b=5; 要实现输出形式为:8*5=40,正确的printf( )函数调用语句是( )。 A)printf(“%d*%d=a*b\\n”, a, b); B)printf(“%d*%d=%d\\n”, a, b, a*b); C)printf(“a*b=%d\\n”, a*b); D)printf(“a*b=a*b\\n”);

(三)控制结构

34.以下程序段运行的结果是( ) int s=15; switch(s/4)

{ case 1: printf(“One”); case 2: printf(“Two”); case 3: printf(“Three”); default : printf(“Over”); }

A) Two Over B) One Over C) Three Over D) Three

35.以下程序段运行结果是( )。 int s=15; switch(s/4) { default :

printf(“Over”); case 1:

printf(“One”);

2

break; case 2:

printf(“Two”); }

A)Over One B)Two C)One

D)Over two

36.以下程序段运行后,若从键盘输入5,则运行结果是( ) int a, y=10;

scanf(“%d”, &a); if(a>10) y=a+6; printf(“%d\\n”, y+a); }

A) 15 B)16 C)10 D)11

37.以下程序运行结果是( ) void main( ) { int a, b=2, c=6; a=3;

if(a>6) a=a+6;

else if(a==6) b=a+c; else a=b+c;

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

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

38. 以下程序段运行后,x的值为( ) int i, j, x=0;

for(i=3; i>=1; i- -)

for(j=1; j<=i; j++) x=x+2;

A)10 B)14 C)8 D)12

39.若有定义int i, x; ( )不是死循环 A)for(x=5; x>0; x--) ; B)while(x=1) ; C) for( ; ; i+=2); D)for(i=10; ; i--);

40.以下程序段运行后, x的值为( ) int i=0, x=0;

for( ; i<=5; i++,i++) { x+=3;}

A)9 B)6 C)12 D)15

41.以下程序段运行后x的值为( )。 int i=0, x=2; while (i++<=5) {x+=2; }

A)14 B)8 C)12 D)10

42.下面叙述正确的是( )

A)for循环的循环体可包含多条语句,但必须用花括号{}括起来

B)在for循环中,不能用break语句跳出循环体 C)for循环是先执行循环体语句,后判断表达式 D)for循环只能用于循环次数已经确定的循环

43. 若有定义:int i, x=0; 语句for(i=1; i<=3; i++) x+=2; 与下列( )程序段不等价。 A) i=1;

for( ; i<=3; ) {x+=2; i++; } B)for(i=1; i<=3; ) {x+=2; i++; } C)i=1;

for( ; ; i++) x+=2; D)i=1;

for( ; i<=3; i++) x+=2;

(四)数组

44.下面叙述错误的是( )

A)数组中每一个元素都属于同一个数据类型

B)C语言规定可逐个引用数组元素,但不能一次引用整个数组

C)C语言数组长度在定义数组时可不确定 D)C语言数组名称是数组的首地址

45.若有定义: int a[10], i=2; 则能正确引用数组元素的是( )

A)a[10] B)a(7) C) a[9+i] D)a[10-i]

46.若有定义:int arr[15], n=5; 无法正确引用arr数组元素的是( )。 A)arr[0] B)arr[n] C)arr[15-n] D)arr[10+n]

47.以下程序段运行后,x的值为( ) int a[8]={1,2,3,4,5,6,7,8}, i, x=0; for(i=0; i<8; i++, i++)

3

x=x+a[i];

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

48.C语言中,二维数组元素在内存中的存放顺序是( )

A)按列存放 B)随机存放 C)由用户自己定义 D)按行存放

49.. 以下( )对二维数组arr的初始化是错误的。 A)int arr[2][3]={{1,2},{3,4}};

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

50.以下程序段的运行结果是( ) int t[ ][3]={1,2,3,4,5,6,7,8,9,10,11,12}; printf(“%d\\n”, t[1][1])}

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

51.以下程序段运行后,x的值为( ) int i=0, x=0;

int a[3][3]={1,2,3,4,5,6,7,8,9}; for( ; i<3; i++) x+=a[i][i];

A)12 B)18 C)0 D)15

52.以下程序运行的结果是( ) int fun(int array[3][3]) { int j;

for(j=0; j<3; j++) array[1][j]++; printf(“\\n”); }

main( )

{ int j, a[3][3]={0,1,2,1,0,4,2,4,5}; fun(a);

for(j=0; j<3; j++) printf(“%2d”,a[1][j]); printf(“\\n”); }

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

53.以下程序段的运行结果是( )。 char str[3][2]={„a‟,‟b‟,‟c‟,‟\\0‟,‟e‟,‟f‟}; printf(“%s”, str[0]);

A)abc\\0ef B)a C)abc D)abcef

(五)函数

54.只能向终端输出一个字符的是( ) A)putchar( )函数 B)printf( ) 函数 C)scanf( ) 函数 D)getchar( ) 函数 55.getchar( )函数的功能是获取终端输入的( )。 A)多个字符 B)一个整形变量表达式 C)一个字符 D)一个实型变量值

56.下面叙述正确的是( )

A)预处理命令也是C语句,必须以分号结束 B)宏展开不占用运行时间,只占用编译时间 C)一个源程序只能有一个预处理命令行 D)宏名必须用大写字母表示

57.下面叙述错误的是( )。

A)C源程序中加入一些预处理命令是为了改进程序设计环境,提高编程效率

B)“#define PRICE 30”命令的作用是定义一个与30等价的符号常量PRICE

C)预处理命令行都必须以“#”开头 D)预处理命令行必须以分号结束

58.下面叙述错误的是( )

A)”#include ”命令的作用是在预处理时将stdio.h文件中的实际内容代替该命令 B) 预处理命令行必须以分号结束

C) C源程序中加入一些预处理命令是为了改进程序设计环境,提高编程效率

D)宏定义也是C语句,必须在行末加分号

59.以下程序运行结果是( ) #define X a+b main( )

{ int a=3, b=4, s1; s1=2*X;

printf(“%d\\n”, s1); }

A)10 B)8 C)6 D)14

60.若有定义:#define PI 3,则表达式PI*2*2的值为( )

A)4 B)12 C)不确定 D)322

61.若有定义: #define F 2+3 ,则表达式F*F的值为( )

4

A)17 B)13 C)25 D)11

62..以下程序段运行结果是( ) char str[ ]={“Fujian”}; printf(“%d”, strlen(str)); A)6 B)8 C)9 D)7

63.以下程序段运行后,a的值为( ) int a=2;

a=strcmp(“miss”, “miss”);

A)true B)-1 C)0 D)1

64. 以下程序段的运行结果是( ) char a[ ]=”abcdef”; char b[ ]=”xyz” strcpy(a,b);

printf(“%c”, a[2]);

A) b B)z C)y D)c

65.若有定义:char str1[10],str2[10]=”Fujian”; 能将字符串“Fujian”赋给数组str1的正确语句是() A)strcpy(str1, str2); B)str1=”Fujian”; C)strcpy(str2, str1); D)strcopy(str1, str2);

66.以下程序段的运行结果是( ) char a[ ]=”abc ”; char b[ ]=”xyz”; char c[10]; strcpy(c,a); strcat(c,b); printf(“%s”,c);

A)xyzabc B)abc xyz C)abc D)xyz

67.以下程序的运行结果是( ) int f(int c)

{ c+=2; return c; } main( )

{ int a=2, c=5; a=f(a);

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

A)4 4 B)2 5 C)4 5 D)2 4

68.以下程序段运行结果是( ) fun( )

{static int a=0; a++;

printf(“%d “, a); }

main( ) {int i;

for(i=1; i<=2; i++) fun( ); }

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

69.以下程序段的运行结果是( )。 int a=2, b=3;

int min(int a, int b) { int c;

c=amain( ) { int a=4;

printf(“%d”, min(a,b)); }

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

(六)指针

70.下面叙述错误的是( )

A)可以将一个整数值赋给指针变量 B)一个变量的地址称为该变量的指针 C)一个指针变量只能指向同一类型的变量

D)任何指针变量都可以与空类型NULL进行比较

71.以下程序段运行结果是( ) int x[3]={1, 2,3}; int *p; p=x;

for(p++; p<&x[2]; p++) printf(“%d “, *p);

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

72. 以下程序运行的结果是( ) main( )

{ char a[ ]=”137”, *p; for(p=a; pA) 7 B)137 C)137377 D)13737

5

73.以下程序段运行后,*(p+1)的值为( ) char a[ ]=”good”; char *p; p=a;

A)a[1]的地址 B)‟o‟ C)不确定 D)‟g‟

74.( )能正确定义一个指向函数的指针。 A) (int *)p( ) B)int *p( ) C) int (*p( )) D)int (*p)( )

75.以下程序段的运行结果是( ) int x[ ]={2, 3, 4, 5, 6, 7},*p=x; int i, s=0;

for(i=1; i<5; i++) s+=p[i++]; printf(“%d”, s);

A)6 B)8 C)20 D)14

76.以下程序段运行后, x的值为( ) int a[ ]={1,2,3,4,5, 6, 7,8}; int i, x, *p; x=1; p=&a[1]; for(i=0; i<3; i++) x*=*(p+i);

A)120 B)6 C)1 D)24

77.若有定义:int a[10]={0,1,2,3,4,5,6,7,8,9}, *p=a; 则( )表达式是错误的。

A)a++ B)a[2] C)p++ D)p[2]

78.若有定义

int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}, (*p)[4]; p=a; ( )对数组a元素的引用是正确的

A) *(p[2]+3) B)**(p+4) C)(**p)[4] D)*(p[4])

79.下面程序段运行后,( )对数组a元素的引用是错误的。(其中0≤i<4,0≤j<3) int i, j, (*p)[3];

int a[ ][3]={1,2,3,4,5,6,7,8,9,10,11,12}; p=a;

A)*(*(a+i)+j) B)p[i][j] C)*(*(p+i)[j] D)*(p[i]+j)

80.以下程序运行的结果是( ) main( ) { int x, y;

int *p, *q, *t; x=23; y=45; p=&x; q=&y; t=p; p=q; q=t;

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

A)23,45 B)45, 23 C)23, 23 D)45, 45

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

{int a[3]={1,2,3}; int *num[3]; int **p, i;

for(i=0; i<3; i++) num[i]=&a[i]; p=num;

printf(“%d”, **p); }

A)1 B)3 C)num D)&a[0]

82.若有定义:int a[3][2]; 则表达式&a[2][1]-a的值为( )

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

(七)结构体与共用体

83.以下程序段的运行结果是( ) union

{ int num1; int num2; } s;

s.num1=20; s.num2=30;

printf(“%d”, s.num1);

A)2030 B)50 C)30 D)20

84. 若有定义: union u_type { int x; float y[3]; char z; } a;

则变量a的长度是( )

6

A)4 B)15 C)1 D)12

85.若有定义: struct teacher { int num; char sex; int age; } teacher1;

则下面叙述错误的是( ) A)teacher1是结构类型名 B)struct是结构类型的关键字

C)struct teacher是用户定义的结构类型

D)num、sex、age都是结构变量teacher1的成员

86.若有定义: struct data {char a; float b[3]; long c; }d1;

则变量d1的长度是( )

A)15 B)12 C)17 D)4

87.若有定义: struct teacher { int num;

char name[10]; char sex; int age;

} t1={2001, “Li Ming”,‟M‟, 35};

则下列( )对结构体变量引用是正确的 A) t1.name[0] B) t1->name[0] C) t1.name D)t1->name

88下列程序段运行后,表达式( )的值为3。 struct point {int x; int y; }*p;

struct point a[3]={1,2,3,4,5,6}; p=a;

A)*(p+2) B)p[3].x C)p[1].x D)p[2].x

(八)枚举、自定义类型和位运算

89有定义:enum num{a1,a2=3, a3, a4=10}; 则枚举常量a2, a3的值分别为( )

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

90若有定义:enum day{sun, mon, tue, wed, thu, fri,sat}; 则枚举常量sun、mon的值分别为( ) A)7 0 B)0 1 C)7 1 D)1 2

91若有定义:

typedef int *INTEGER; INTEGER p;

则下面叙述正确的是() A)p是一个整型变量

B)程序中可用INTEGER定义int类型指针变量 C)程序中可用INTEGER定义int类型变量 D)p是与INTEGER相同的类型

(九)文件

92下面程序运行后,文件d_f.dat的内容是( )。 main( )

{ FILE *fp; int i=10, j=20; fp=fopen(“d_f.dat”,”w”); fprintf(fp, “%d ”,i); fclose(fp);

fp=fopen(“d_f.dat”,”a”); fprintf(“%d “,j); fclose(fp); }

A)20 10 B)10 C)10 20 D)20

93 若当前工作目录下有一文本文件test.txt,其内容为“cprogram”(不包含引号),则以下程序段的运行结果是( ) FILE *fp; char *str;

if((fp=fopen(“test.dat”,”r”)!=NULL) str=fgets(str, 5, fp); printf(“%s”, str); fcolse(fp);

A)cpro B)cprog C)gram D)ogram

94()不是文件读库函数

A)fputs( ) B)fgetc( ) C)fread( ) D)fscanf( )

95下面程序运行后,屏幕显示write ok!, 则下面叙述正确的是( )。 main( )

7

{ FILE *fp;

fp=fopen(“data.txt”,”w+”); if(fp!=NULL)

{ fprintf(fp, “%s\\n”, “File write successed!\\n”); fclose(fp);

NUM n;

则( )语句是正确的

A)NUM=2 B)n=2 C)n[0]=2 D)NUM=n

99.若有定义:int a[3][4]={{1,2}{3,4}{5, 6,7}; 则printf(“write ok!\\n”); } }

A)当前工作目录下存在tata.txt文件,其中的内容是”write ok!”

B) 当前工作目录下的tata.txt文件已经打开 C) 当前工作目录下的tata.txt文件已经关闭 D) 当前工作目录下找不到tata.txt文件

96下面程序运行后,屏幕显示File open error!则可能的原因是( ) #include main( ) { FILE *fp; char str[256];

fp=fopen{“test.txt”,”r+”}; if(fp= =NULL)

{ printf(“File open error!”); return ; }

fscanf(fp, “%s”, str); fcolse(fp); }

A)当前工作目录下的test.txt文件是空文件 B)fopen( )的参数是错误的 C)test.txt文件已经打开

D)当前工作目录下没有test.txt文件

补充

97.以下程序段运行后, x的值为( )。 int a[ ]={1, 2, 3}, b[ ]={4, 3, 3}; int *p, *q; int i, x; p=a; q=b;

for(i=0; i<3; i++) if(*(p+i)==*(q+i)) x=*(p+i)*2;

A)6 B)不确定 C)2 D)4

98.若有定义

typedef int NUM[100];

a[1][1]的值为( )。

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

100.以下程序段运行后,s的值为( )。 int a[3][3]={1,2,3,1,2,3,1,2,3}; int i, j, s=0;

for(i=0; i<3; i++) for(j=i; j<3; j++) s+=a[i][j];

A)13 B)12 C)15 D)14

101.( )是正确的数组定义 A)int n; n=5; int arr[n]; B)int N=5, arr[N]; C)int n=5; int arr[n]; D)int arr[10];

8

二、改错题

Cmody131.c

程序cmody131.c的功能是:输入两个整数,输出它们的商和商的第一位小数。例如: 输入: 19 7

输出:2.714286 7 #include void main() {

int a,b,c;

/**/ int f; /**/ clrscr();

printf(\"Please input a b :\"); scanf(\"%d%d\ f=/**/ a/b; /**/

c=(int)((f-(int)f)*10);

printf(\"\\n%f %d\\n\ getch(); }

Cmody132.c

程序cmody132.c,实现打印10到99数中能被3整除且至少有1位是4的数 #include void find(/**/ n /**/) {

int a1,a2; a1=m%10; a2=m/10;

if(m%3==0 &&(/**/ a1==4 && a2==4 /**/)) printf(\"%d\\n\}

void main() { int k;

for(k=10;k<=99;k++) /**/ fun( k ) /**/; getch(); }

Cmody141.c

程序cmody141.c的功能是:输入若干个整数,以零结束。分别统计其中比第一个数小的数的个数以及比第一个数大的数的个数,并输出。例如: 输入:4 11 7 5 8 6 4 30 3 0

输出:3 5

#include void main() {

/**/ int a,Tag; /**/ int num1=0,num2=0; clrscr();

printf(\"please input numbers :\"); scanf(\"%d\ tag=a; while(a)

{ scanf(\"%d\

/**/ if(a) /**/ continue; else if(atag) num2++; }

printf(\"\\n%d %d\\n\ getch(); }

Cmody142.c

程序cmody142.c,用递归算法求1!+3!+5!+7!+9!

#include long int fsum(int n) {

long int k; if(n==1)

/**/ k=0 /**/; else

k=n*fsum(n-1); return (/**/ 1 /**/); }

void main() { int i;

long int sum; sum=0;

for(i=1;i<=9;/**/ i++;i++ /**/) sum+=fsum(i);

printf(\"sum=%ld\\n\ getch(); }

Cmody151.c

程序cmody151.c的功能是输入一个原码表示的8位二进制(最高位为符号位,0表示正数,1表示负数,其余位为无符号数),将其转换成十进制数

9

并输出。例如: 输入:10100101 输出:-37

#include void main() { int i,a=0;

/**/ c1,c2; /**/ clrscr();

printf(\"Enter an 8 bit binary number :\"); c2=getchar();

/**/ for(i=1,i<=7;i++) /**/ { c1=getchar(); a=a*2+c1-'0'; }

/**/ If (c2) /**/ a=(-1)*a; printf(\"\\n%d \\n\ getch(); }

Cmody152.c

程序cmody152.c以每行最多9个数的方式打印10~1000之间所有满足各位数字左右相互对称的数,如66、181,202等 #include void main( ) {

int i,n;

/**/ n = 1; /**/

for(i=10;i<=100;i++) if(i/10==i%10)

{printf(\"%5d\ n++;

if(/**/ n%9=0 /**/) printf(\"\\n\"); }

for(i=100;i<=999;i++)

if(/**/ i/100==i/10 /**/) {printf(\"%5d\ n++;

if(n%9==0)

printf(\"\\n\"); } getch(); }

Cmody161.c

程序cmody161.c的功能是:用插入排序法对输入的10个整数按从小到大排序,输出排序结果。例

如:

输入: 3 5 4 6 8 1 2 1 7 4 输出: 1 1 2 3 4 4 5 6 7 8

#include void main() {

/**/ int a(10); /**/ int i,j,k,x;

printf(\"Enter 10 numbers:\"); scanf(\"%d\ a[0]=x;

for(k=1;k<=9;k++) { scanf(\"%d\ for(i=0;ix) break; if(ifor(j=k;j>i;j--) a[j]=a[j-1]; a[i]=x; }

/**/ for(i=1;i<=10;i++) /**/ printf(\"%d \ printf(\"\\n\"); getch(); }

Cmody162.c

程序cmody162.c中的fun( )函数功能是:运用勾股定理近似地判定一个三角形是否为直角三角形,即给定三角形的边长a,b,c,若能构成直角三角形则返回1,否则返回0. #include #include

int fun( /**/ float a, b, c /**/) {

float t; int mk = 0; if(c{ t = a; a = c; c = t; } if(c{ t = b; b = c; c = t; }

if( fabs( c*c - (a*a+b*b)) < 1.0e-8) mk = 1;

/**/ return (1); /**/ }

10

main() {

float a,b,c;

printf(\"Please input three numbers(a b c):\\n\"); scanf(\"%f%f%f\ if(/**/ fun(a b c) /**/== 1) printf(\"Yes\\n\"); else

printf(\"No\\n\"); getch(); }

Cmody171.c

程序cmody171.c的功能是用选择排序法对输入的10个整数按从小到大排序,输出排序结果。例如:输入:3 5 4 6 8 1 2 1 7 4 输出:1 1 2 3 4 4 5 6 7 8 #include void main() {

int a[10]={0};

/**/ int i, j, k,temp, /**/ printf(\"Enter 10 numbers:\"); /**/ for(k=1;k<10;k++) /**/ scanf(\"%d\ for(i=0;i<9;i++) { k=i;

for(j=i+1;j<10;j++) { if(a[k]>a[j]) k=j; }

if(k!=i)

/**/ {temp=a[i];a[k]=a[i];a[i]=temp;} /**/ }

for(i=0;i<10;i++) printf(\"%d \ printf(\"\\n\"); getch(); }

Cmody172.c

程序cmody172.c中的fmax(float x, float y, float z)函数,实现返回x,y,z中的最大值。 #include void main() {

float a,b,c,max;

float fmax(float,float,float);

printf(\"Please input 3 numbers:\\n\"); scanf(\"%f%f%f\ max=/**/ fmax(a;b;c) /**/;

printf(\"The max number is:%.2f\\n\ getch(); }

/**/float fmax(float x, y, z) /**/ {

float m1,m2; m1=(y>z)?y:z;

m2=/**/ (x>y)?x:y; /**/ return(m2); }

Cmody181.c

程序cmody181.c的功能是:输入1~100之间的整数q,用二分法在有序数组a[20]中查找q,若找到第一个等于q的元素,则输出该元素的数组下标及查找过程中与q比较的次数,若没找到则返回-1. 例如: 输入:58 输出:14,2 include void main()

{ int a[20]={1,3,7,9,12,14,23,26,34,43,45,47,49,56, 58,59,78,79,87,89};

int left,right,mid,q,count; left=0 ;

/**/ right = 19 /**/

printf(\"please input a number:\"); scanf(\"%d\ count=1;

while(left<=right)

{ mid= ( left + right)/2 ; if(q==a[mid]) break;

else if(qif(left<=right)

printf(\"%d %d\\n\ else

printf(\"-1 \\n\"); getch(); }

11

Cmody182.c

程序cmody182.c中的fun( )函数功能是:判断输入的一个点(x,y)是否位于坐标在原点,半径为r(r>0)的圆内。

#include #include

int fun(/**/ float r, x, y /**/) {

if ( sqrt(x*x+y*y) < r ) return ( 1 ); else

return (/**/ -1 /**/ ); }

void main() {

float r=-1,x,y; int bIn; while(r<0)

{printf(\"Please input radius r (r>0):\\n\"); scanf(\"%f\ }

printf(\"Please input the dot(x,y):\\n\"); scanf(\"%f%f\ bIn = fun(r,x,y); if(/**/ bIn = 0 /**/)

printf(\"in the circle!\\n\"); else

printf(\"out of the Circle!\\n\"); getch(); }

三、填空题

Ccon131.c

程序ccon131的功能是:键盘输入两个正整数分别作为区间的上下界,按从大到小的次序输出该区间内能被3整除的数,例如: 输入:3,15 输出:12 9 6 #include #include void main() {

/**/ /**/ a,b,temp; scanf(\"%d,%d\

if (awhile /**/ /**/ {

if(a%3==0)

printf(\" %d \ }

printf(\"\\n\"); getch(); }

Ccon132.c

补充程序ccon132.c,使函数fun(int n)(n从1开始)计算如下分数和,例如n=7时

fun(7)111114117183*70.388 #include

double fun(/**/ /**/) {

double y = 0.0; int i,j;

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

{y = y +/**/ /**/; }

return (/**/ /**/); }

void main() {

clrscr();

printf(\"fun(7) = %8.3lf\\n\ getch(); }

Ccon141.c

程序ccon141.c的功能是输出如下图形: * * * * * * * * * * * * * * * * * * * * * * * * * #include void main()

12

{

int m,n;

for(m=1; /**/ /**/ m++) { printf(\"\\n\");

for(n=1;n<= /**/ /**/ n++) printf(/**/ /**/); for(n=9;n>=m*2-1;n--) printf(\"* \"); }

getch(); }

Ccon142.c

补充程序ccon142.c,使其中函数fun(int m)输出将3元纸币换成1角与2角的各种组合。 #include main() {

void fun(int); int v=300;

fun(/**/ /**/); getch(); }

void fun(int m) {

int c1,c2;

for(c1=1;/**/ /**/ ;c1++) { for(c2=1;c2<=15;c2++)

if(c1*10+c2*20==/**/ /**/ ) printf(\"c1=%d,c2=%d\\n\ } }

Ccon151.c

程序ccon151.c的功能是:对输入的用一个运算符(+,-,*,/)连接两个整数的数学表达式进行相应计算,并输出结果。例如: 输入:3*2 输出:3*2=6

将程序ccon151.c填写完整。 include #include void main() {

int num1,num2,ans,flag; char op;

clrscr();

printf(\"Please input an expression:\");

scanf(\"%d%c%d\ /**/); flag=0;

/**/ /**/ {

case '+': ans=num1+num2; break; case '-': ans=num1-num2; break; case '*': ans=num1*num2; break; case '/': ans=num1/num2; break; default:

{ printf(\"Error!\\n\"); flag=1; } }

if /**/ /**/ printf(\"%d %c %d = %d\\n\ getch(); }

Ccon152.c

补充程序ccon152.c,使函数ch_pw( )实现将输入的字符串加密,方法为:字母‟a‟转换成‟d‟, 字母‟s‟转换成‟f‟, 字母‟d‟转换成‟a‟, 字母‟f‟转换成‟s‟,其他字符保持不变。

例如:输入原文为 world fast 21 则输出密文为 worla sdft 21 #include #include void main() {

char src[40],tag[40]; void ch_pw( );

printf(\"Please input a string: \"); gets(src);

strcpy(tag,src); ch_pw( tag );

printf(\"\\nThe source string: %s\\n\ printf(\"\\nThe target string: %s\\n\ getch(); }

void ch_pw(/**/ /**/) {

char tab[4][2]={{'a','d'},{'s','f'},{'d','a'},{'f','s'}}; int j=0,i; while( str[j] ) {

13

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

if(str[j]==tab[i][0]) {

/**/ /**/=tab[i][1] ; break; } }

/**/ /**/ ; } }

Ccon161.c

程序ccon161.c的功能是:输入一个字符序列,依次输出其中所有字母,例如: 输入:ab23c%$+De 输出:abcDe

将程序ccon161.c填写完整 #include #include void main() {

char str[80]; char c; int i;

/**/ /**/

printf(\"\\nPlease input the string: \"); while((c=getchar())!='\\n') {

if(c>='A'&&c<='Z'||c>='a'&&c<='z') /**/ /**/ }

str[i]= /**/ /**/ puts(str); getch(); }

Ccon162.c

补充程序ccon162.c,使函数inv( )实现将键盘依次输入的N个整数,按逆序依次输出。 如输入:6 21 32 11 8 52 9 77 15 输出:15 77 9 52 8 11 32 21 6 #include #include #define N 9

void ivs(int a[ ]) {int i,temp;

for(i=0;/**/ /**/;i++) {temp=a[i]; a[i]=a[N-1-i];

/**/ /**/; } }

void main() {int arr[N],i;

printf(\"Please input %d numbers:\\n\ for(i=0; iscanf(\"%d\ ivs(/**/ /**/);

printf(\"\\nInverse order is: \\n\"); for(i=0; iprintf(\"%d \ printf(\"\\n\" ); getch(); }

Ccon171.c

程序ccon171.c的功能是:统计输入字符序列中非字母字符的个数。例如 输入:ab23%$+De 输出:5

将程序ccon171.c填写完整。 #include #include void main() {

/**/ /**/ str[80]; int i,len, sum=0;

printf(\"\\nPlease input the string: \"); gets(str);

len = strlen(str); for(i=0; iif(str[i]>='A'&&str[i]<='Z'||str[i]>='a'&&str[i]<='z') /**/ /**/ else

/**/ /**/ }

printf(\"%d\\n\ getch(); }

Ccon172.c

14

补充程序ccon172.c ,使函数hcf( )实现“辗转相除法”求键盘输入的两个正整数的最大公约数。 输入:6 15 输出:H.C.F=3 #include #include void main() {

int hcf(int,int); int a,b,k;

printf(\"Enter a b: \"); scanf(\"%d%d\ k=hcf(/**/ /**/); printf(\"H.C.F=%d \\n\ getch(); }

int hcf(int x,int y) {

int r;

r=x%y; while( r!=0 ) { x=y;

y=/**/ /**/; r=x%y ; }

return (/**/ /**/); }

Ccon181.c

程序ccon181.c的功能是:将键盘输入字符串中的„1‟~„9‟数字字符逐个转换成它的前一个数字,遇到„0‟转换成„9‟.例如:

输入:ab56cd09EF12GH43 输出:ab45cd98EF01GH32 #include #include void main() {

char s1[100], s2[100]; int i,len;

printf(\"Please input string: \\n\"); gets(s1);

len = strlen(s1); for(i=0; iif( s1[i] >= '1' && s1[i] <= '9')

/**/ /**/ else if( s1[i] == '0' )

/**/ /**/ else

s2[i] = s1[i]; }

s2[i] =/**/ /**/; puts(s2); getch(); }

Ccon182.c

补充程序ccon182.c,使函数sct( )实现将程序中的两个字符串”Nothing ”, ”final”连接在一起,并输出:Nothing final include #include

void sct(char s1[],/**/ /**/) {char * p1,*p2;

p1=/**/ /**/; p2=s2;

while(*p1) p1++; while(*p2)

*(p1++) = *(p2++); }

void main() {

char str1[60]=\"Nothing \ sct(/**/ /**/ ,str2); printf(\"\\n%s\\n\ getch(); }

四、 编程题

Cprog132.c

打开考生文件夹中的cprog132.c,完成int fun(int a[ ], int n, float *f)函数,实现将数组a中所有元素的平均值存放在指数参数f所指向的变量中,函数返回值为数组中大于或等于平均值的元素个数。 #include

int fun(int a[],int n,float *f) {

/**/

15

/**/ }

void main() {

int a[] = {23,40,8,32,18,2,9,16,27}; int i,k = sizeof(a)/sizeof(int); int count=0; float aver=0.0;

printf(\"Array a:\\n\"); for(i=0;iprintf(\"%d \ printf(\"\\n\");

count=fun(a,k,&aver);

printf(\"aver is %f, count is %d\\n\ getch(); }

Cprog142.c

打开考生文件夹中的cprog142.c,完成其中的find(int a[ ], int n, float x)函数,其功能是找出数组a中各元素与x差值的绝对值最小的元素,并返回该元素值。 include #include

int find(int a[],int n,float x) {

/**/

/**/ }

void main() {

int a[] = {23,40,8,32,18,2,9,16,27}; int i,k,n = sizeof(a)/sizeof(int); float x=20.3;

printf(\"Array a:\\n\"); for(i=0;iprintf(\"%d \ printf(\"\\n\"); k=find(a,n,x);

printf(\"It is %d\\n\ getch(); }

Cprog152.c

打开程序cprog152.c,完成其中的函数fun(int bg, int fn), 实现返回2个自然数之间所有素数的总个数。

#include #include int fun(int bg, int fn) { /**/ /**/ }

void main( ) { int count;

count=fun(100,500);

printf(“\\n The total of prime is %d”, count); getch( ); }

Cprog162.c

打开考生文件夹中的cprog162.c,完成其中的fun(int n)函数,其功能是根据整型参数n(n从1开始)返回如下公式的计算值。

16

11111} fun(n)13253748n(2n1)

/**/

#include double fun(int n) {

/**/

/**/ }

void main() {

int n;

printf(\"Input n: \"); scanf(\"%d\

printf(\"fun(%d)=%lf\\n\ getch(); }

Cprog172.c

打开程序cprog172.c, 完成其中的bTrue( int a[ ][ ], int n)函数,其功能是判断一个矩阵是否为对称矩阵,若矩阵对称返回1,不对称返回0。说明:矩阵a是一个二维数组,若其中的第k行第j列 的元素与第j行第k列的元素相等,则称其为对称矩阵,否则为非对称矩阵。 #include #include

int bTrue(int a[][4],int n) { /**/

void main() {

int a[4][4],i,j; int bT;

printf(\"Input array a:\\n\"); for(i=0; i<4; i++) for(j=0; j<4; j++)

scanf(\"%d\ bT = bTrue(a,4); if( bT == 1 )

printf(\"Yes\\n\"); else

printf(\"No\\n\"); getch(); }

Cprog182.c

打开程序cprog182.c ,完成其中的fun(int a[ ], int n) 函数,其功能是找出数组a中与所有元素的平均值偏差最大的元素,并返回该元素值。 #include #include int fun(int a[],int n) {

/**/

/**/ }

void main() {

int a[] = {10,22,8,33,17,5,9,13,27};

17

int i,n = sizeof(a)/sizeof(int); int k;

printf(\"Array a:\\n\"); for(i=0;iprintf(\"%d \ printf(\"\\n\"); k=fun(a,n);

printf(\"It is %d\\n\ getch(); }

-------------------------------------------------- Cprog131.c

fun1(x)3xsinxtgx1.5x

Cprog141.c

fun1(x)exsin(x6)

x21

Cprog151.c

sinxx3fun1(x)xx3cos(2x1)x3Cprog161.c

32.5xx3fun1(x)sinx3xx3Cprog171.c

2.5cos(x)x10fun1(x)xsinx3x2x10Cprog181.c

3lgx3x100fun1(x)sinx3x100x100--------------------------------------------------------

Cprog131.c {double y;

y=(3*x*sin(x)+tan(x))/(1.5+fabs(x)); return y; } Cprog141.c {double y;

y=(exp(x)+sin(x-6))/(x*x+1); return y; } Cprog151.c {double y;

if(x<3) y=sin(x); else if(x==3) y=x; else y=cos(2*x+1); return y; } Cprog161.c {double y;

if(x<3) y=pow(2.5+fabs(x), 1.0/3)/(sin(x)+3); else y=x; return y; } Cprog171.c {double y;

if(x<10) y=sqrt(2.5+cos(x))/(x*sin(x)+3); else y=x*x; return y; } Cprog181.c {double y;

if(x<100) y=(3*log10(x)-3)/(sin(x)+3); else y=x-100; return y; }

18

参考答案

(一) 选择题

1-10)A C C A C B A B B B 11-20)D D A C B B D A B D 21-30)C D D D A B A D A D 31-40)B B B C A A D D A A 41-50)A A C C D D B D B C 51-60)D A C A C B D B A B 61—70)D A C B A B C A A A 71-80)B C B D B D A A C A 81-90)A C C D A C A C D B 91-100)B C A A C D A C C D 101) D

(二) 改错题

Cmody131.c

/**/ int f; /**/→ float f; /**/ a,b /**/→&a, &b /**/ a/b /**/→(float)a/b Cmody132.c /**/ n/**/ →int m

/**/a1= =4&&a2= =4/**/→a1= =4||a2= =4 /**/fun(k) /**/→find(k) Cmody141.c

/**/ int a, Tag;/**/ →int a, tag; /**/ a/**/ →&a

/**/ if(a)/**/ →if(a= =0||a= =tag) Cmody142.c

/**/ k=0/**/ →k=1 /**/ 1/**/ →k

/**/ i++; i++/**/ →i++, i++ Cmody151.c

/**/ c1,c2/**/ →char c1,c2

/**/ for(i=1,i<=7; i++)/**/ →for(i=1; i<=7; i++) /**/ If(c2)/**/ →if(c2= =‟1‟) Cmody152.c

/**/ n=1/**/ →n=0

/**/ n%9=0/**/ →n%9= =0

/**/ i/100= =i/10/**/ →i/100= =i%10 Cmody161.c

/**/ int a(10);/**/ →int a[10]; /**/ x/**/ →&x

/**/ for(i=1; i<=10; i++)/**/ →for(i=0; i<10; i++) Cmody162.c

/**/ float a, b, c/**/ →float a, float b, float c /**/ return (1); /**/ →return (mk); /**/ fun(a b c)/**/ →fun(a, b, c) Cmody171.c

/**/ int i, j, k,temp, /**/ →int i,j, k, temp;

/**/ for(k=1; k<10; k++)/**/ →for(k=0; k<10; k++) /**/{ temp=a[i]; a[k]=a[i]; a[i]=temp;}/**/ → { temp=a[k]; a[k]=a[i]; a[i]=temp;} Cmody172.c

/**/ fmax(a; b; c)/**/ →famx(a, b, c)

/**/ float fmax(float x, y, z)/**/ →float fmax(float x, float y, float z)

/**/ (x>y)?x:y;/**/ →(x>m1)?x:m1; Cmody181.c

/**/ right=19/**/ →right=19; /**/ q/**/ →&q

/**/ count-- ;/**/ →count++; Cmody182.c

/**/ float r, x, y/**/ →float r, float x, float y /**/ -1/**/ →0

/**/ bIn=0/**/ →bIn!=0

(三) 填空题

Ccon131.c /**/int /**/

/**/temp=a; a=b; b=temp;/**/ /**/ (- -a>b)/**/ Ccon132.c /**/ int n /**/

/**/1.0/(8+3*i) /**/ /**/ y/**/ Ccon141.c /**/m<=5 ;/**/ /**/2*(m-1); /**/ /**/ “ “/**/ Ccon142.c /**/v /**/

/**/ c1<=30/**/ /**/m /**/ Ccon151.c

/**/ &num1, &op, &num2/**/ /**/ switch(op)/**/ /**/ (flag= =0)/**/ Ccon152.c

/**/ char str[ ]/**/ /**/str[j] /**/

19

/**/j++ /**/ Ccon161.c /**/i=0; /**/

/**/ str[i++]=c;/**/ /**/ „\\0‟;/**/ Ccon162.c /**/i/**/a[N-1-i]=temp /**/ /**/arr /**/ Ccon171.c /**/ char /**/ /**/continue; /**/ /**/ sum++;/**/ Ccon172.c /**/a,b /**/ /**/r /**/ /**/ y/**/ Ccon181.c

/**/ s2[i]=s1[i]-1;/**/ /**/s2[i]=‟9‟ ;/**/ /**/ „\\0‟/**/ Ccon182.c

/**/char s2[ ] /**/ /**/s1 /**/ /**/ str1/**/

(四) 编程题

Cprog132.c {int i, k=0;

float sum=0, aver;

for(i=0; ifor(i=0; i=aver) k++; return k; }

Cprog142.c { int i, k=0;

float min=fabs(x-a[0]); for(i=1; iif(fabs(a[i]-x)Cprog152.c

{ int t, i, j, k,count=0;

if(bg>fn) {t=bg; bg=fn; fn=t; }

for(i=bg; i<=fn; i++) { k=sqrt(i);

for(j=2; j<=k; j++) if(i%j==0) break; if(j>k) count++; }

return count ; }

Cprog162.c

{ double sum=0, t; int i, sign=1;

for(i=1; i<=n; i++) {t=sign*1.0/(i*(2*i+1)); sum+=t; sign=-sign; }

return sum; }

Cprog172.c { int i, j, flag=1; for(i=0; iif(a[i][j]!=a[j][i]) {flag=0; break;} return flag; }

Cprog182.c { int i, k=0;

float sum=0, aver, max;

for(i=0; imax=fabs(a[0]-aver); for(i=1; iif(fabs(a[i]-aver)>max)

{ max=fabs(a[i]-aver); k=i;} return a[k]; }

k=i;} 20

因篇幅问题不能全部显示,请点此查看更多更全内容

Top