C语言程序设计

1.

设由文件指针变量fp关联的数据文件中,数据按照9494列的方式排列,每个数据长度为32个字节。应用中要求读取文件中第16行第1列的数据,那么在读数据之前应该进行的操作是( )。

A

fseek(fp,94*15*32,SEEK_SET);

B

fseek(fp,94*15*32,SEEK_END);

C

fseek(fp,94*15*32,SEEK_CUR);

D

fseek(fp,-94*15*32,SEEK_SET);

参考答案

A

2.

下面程序执行时输入的数据是:1 2 3 4 5,那么输出的结果是(  )。 
#include<stdio.h> 
void main() 

int a[5],i,*p=a,**p1=&p; 
for(i=0;i<5;i++) 
scanf("%d",*p1+i); 
for(i=4;i;i--) 
printf("%2d",*(a+i)); 
printf("\n"); 

A

1 2 3 4 5

B

1 2 3 4

C

5 4 3 2 1

D

5 4 3 2

参考答案

D

3.

对于下面的文件内容和程序,正确的结论是(  )。 
//
以下是文件mydoc.txt的内容 
int s; 
s=100; 
//
以下是C程序内容 
#include <stdio.h> 
void main() 

#include "mydoc.txt" 
printf("s=%d\n",s); 

A

程序有错,文件包含语句写在主函数体内

B

程序没有错误,输出是:s=100

C

程序没有语法错误,但没有输出数据

D

程序有错,两个文件包含预处理语句使用了不同的括号括住文件名

参考答案

B

4.

对于下面的C代码段,结论是(  )。 
char s[100]= "abcdefg"; 
s= "1234567" 

A

没有错误,字符串s的内容为1234567

B

没有错误,字符串内容为abcdefg

C

没有错误,字符串内容为abcdefg1234567

D

有语法错误,字符串内容为abcdefg

参考答案

D

5.

C语言中定义枚举类型使用的关键字是(   )。

A

enum

B

struct

C

union

D

typedef

参考答案

A

6.

C程序中,如果要从读出一个图形文件的数据进行处理,最好使用标准函数(  )。

A

fgetc

B

fgets

C

fscanf

D

fread

参考答案

D

7.

下面关于宏的叙述中,错误的是(  )。

A

宏的作用域从其定义处开始

B

宏名只要满足标识符规则即可

C

宏可以用#undef预处理撤销

D

宏名的首字符必须要大写

参考答案

D

8.

C程序中,可以定义全局变量位置是(  )。

A

所有函数的外面

B

主函数内部

C

主函数形式参数表中

D

前两个函数之间

参考答案

A

9.

C语言中,要表达整型变量x能够被3整除时条件成立语义,应该使用(  )。

A

x%3

B

!(x%3)

C

x%3==1

D

x%3==2

参考答案

B

10.

定义一个联合体(共用体)类型变量时,系统分配给该变量的存储空间是(   )。

A

联合体变量中第一个成员所需要的存储空间

B

联合体变量中占用最大存储空间成员所需要的存储空间

C

联合体变量中最后一个成员所需要的存储空间

D

联合体变量中所有成员需要存储空间的总和

参考答案

B

11.

设有如下所示C语句,若要使p指向结构体变量中的成员n,正确的赋值语句是(   )。 
struct T 
{ int n; 
double x; 
}d,*p 

A

p=&d.n

B

*p=d.n

C

p=(struct T *)&d.n

D

p=(struct T *)d.n

参考答案

C

12.

下面程序的功能是(  )。 
#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 
void main() 
{ char s[20]; 
int i; 
srand((unsigned)time(NULL)); 
for(i=0;i<19;i++) 
s[i]='a'+rand()%26; 
s[i]='\0'; 
puts(s); 

A

产生长度为20的字符串并输出

B

产生长度为18的字符串并输出

C

产生长度为19的字符串并输出

D

产生全部由字符'a'构成字符串并输出

参考答案

C

13.

下面程序执行后的输出结果是(  )。 
#include <stdio.h> 
#include <math.h> 
void ptr1(); 
void ptr2(); 
void main() 

printf("000"); 
ptr1(); 
ptr2(); 
printf("\n"); 

void ptr1() 

printf("111"); 
ptr2(); 

void ptr2() 

printf("222"); 

A

000222111222

B

111222000222

C

000111222222

D

222222000111

参考答案

C

14.

数学公式x1/2+x4+lg(x)+ex的正确C表达式书写形式是(  )。

A

x*(1/2)+pow(x,4)+lg10(x)+exp(x)

B

sqrt(x)+pow(4,x)+lg10(x)+exp(x)

C

sqrt(x)+pow(x,4)+lg(x)+pow(x)

D

sqrt(x)+pow(x,4)+lg10(x)+exp(x)

参考答案

D

15.

下面程序执行后的输出结果是(  )。 
#include <stdio.h> 
#include <string.h> 
typedef char FN[50]; 
void main() 

FN fn1="d:\\abc",fn2="\\mydata.txt",fn; 
strcpy(fn,fn1); 
strcat(fn,fn2); 
puts(fn); 

A

d:\\abc

B

\\mydata.txt

C

d:\\abc\\mydata.txt

D

d:\abc\mydata.txt

参考答案

D

16.

下面关于单链表的描述中,不正确的是(  )。

A

单链表可以动态增长

B

单链表中插入数据时,不需要移动插入点之后的结点

C

单链表中删除数据时,不需要移动删除结点之后的结点

D

单链表和数组一样,必须事先确定结点的个数

参考答案

D

17.

下面程序段运行后,变量abc的值依次是(  )。 
int a,b,c; 
a=1,c=(a++,b=2,b/2,a+10); 

A

1,1,11

B

1,2,12

C

2,2,11

D

2,2,12

参考答案

D

18.

下面关于malloc标准库函数的描述中,错误的是(  )。

A

通过malloc函数可以在程序运行过程中分配存储

B

malloc函数是返回整型指针值的函数

C

malloc函数是返回空类型指针的函数

D

malloc函数的参数是分配空间的字节数

参考答案

B

19.

关于指向函数的指针变量,下面说法正确的是(  )。

A

指向函数指针变量的类型是整型,那么它也可以指向整型变量

B

指向函数指针变量的值是所指向函数所占用的存储单元地址

C

指向函数的指针变量只能指向一个特定的函数

D

指向函数的指针变量可以指向某一类特征相同的函数

参考答案

D

20.

下面程序段执行后,变量si的值分别是(  )。 
int i,s; 
i=1,s=0; 
while( s+=i++,i<=10) 

A

5510

B

5511

C

4510

D

5511

参考答案

B

21.

设有C语句:double x,*p1=&x,**p2=&p1;,那么与变量x等价的是(  )。

A

p2

B

*p2

C

**p2

D

&p2

参考答案

C

22.

C语言中,表达式y*=(a+b)等价于( )。

A

y=y*a+b

B

y=y+a*b

C

y=y*(a+b)

D

y=y*b+a

参考答案

C

23.

下面关于结构体指针变量的描述中,正确的是(  )。

A

定义一个结构体类型指针变量,可以用于存放同类型结构体变量在内存中的起始地址

B

定义一个结构体类型指针变量,可以存放同一程序中任意结构体类型变量地址

C

在函数的形式参数表中,不能有结构体类型指针变量作为形式参数

D

表示结构体变量的地址时,不需要使用取地址运算符,而是用结构体变量名直接表示

参考答案

A

24.

对于下面C语句序列,错误的叙述是(  )。 
char a[100],*s1=a; 
char *s2; 

A

可以使用gets函数为a输入数据

B

可以使用gets函数为s1输入数据

C

不能使用gets函数为s2输入数据

D

可以使用scanf函数为s1s2输入数据

参考答案

D

25.

设有定义:double (*f)(int a,float b,double c);,那么能够被指针变量f指向函数的原型是(  )。

A

double fun1(int a,int b,int c);

B

double fun2(float a,int b,double c);

C

int fun3(int a,float b,double c);

D

double fun4(int ,float,double);

参考答案

D

26.

C语言中,表达式18/4*sqrt(4.0)/8的数据类型是(  )。

A

int

B

float

C

double

D

不确定的

参考答案

C

27.

在下面的叙述中不正确的是(   )。

A

a&=b等价于a=a&b

B

a|=b等价于a=a|b

C

a!=b等价于a=a!b

D

a^=b等价于a=a^b

参考答案

C

28.

C语言中,定义一个指向文件的指针的正确语句形式是(   )。

A

void *sp;

B

FILE *sp;

C

FILE &sp;

D

void &sp;

参考答案

B

29.

函数调用语句:fseek(fp,-20L,2);的含义是(    )。

A

将文件位置指针移到距离文件头20个字节处

B

将文件位置指针从当前位置向后移动20个字节

C

将文件位置指针从文件末尾处后退20个字节

D

将文件位置指针移到离当前位置20个字节处

参考答案

C

30.

设有C语句序列:int a[5],b[10]; int p[2]={a,b};,那么不能够表示b数组3号元素值的是(  )。

A

b[3]

B

*(b+3)

C

p[1][3]

D

p[0][3]

参考答案

D

31.

C语句:typedef int (*FP)(int a,int b);的意思是(  )。

A

定义一个整型指针变量FP

B

声明一个返回整型指针的FP函数原型

C

定义一个指向函数的指针变量FP

D

构造一个指向函数的指针类型FP

参考答案

D

32.

计算机处理高级语言书写的程序时,通常使用( )。

A

解释或编译两种方式

B

直接运行方式

C

分步运行方式

D

解释和编译两种方式

参考答案

A

33.

设有C语句序列:float x; double y;,如果将变量y的值赋值给变量x,(  )。

A

y值本身的精度没有超过float能够表达的精度时,赋值结果会损失精度

B

无论变量y的值如何,变量x都可以正确地接受赋值

C

无论变量y的值如何,变量x都不能正确地接受赋值

D

y值本身的精度已经超过了float能够表达的精度时,赋值结果会损失精度

参考答案

D

34.

下面程序段运行后,变量af的值依次是(  )。 
int a=13; 
double f=12.545; 
a=a%(int)f; 

A

0,12.545000

B

13 12.545000

C

1,12.545000

D

1,12

参考答案

C

35.

C程序中有对全局变量xy的定义如下所示,那么关于全局变量xy的作用域讨论中,正确的是(  )。 
double x; 
static double y; 

A

xy的作用域都不能扩充

B

xy的作用域都可以扩充到同一程序的其他源文件中去

C

xy的作用域都只能在它们所在源文件中扩充

D

xy的作用域都可以在本源文件中扩充,且x的作用域还可以扩充到其他源文件

参考答案

D

36.

下面程序执行后的输出结果是(  )。 
#include <stdio.h> 
int main() 

int a=30,b=60; 
a^=12345; 
b^=54321; 
a^=12345; 
b^=54321; 
printf("a=%d,b=%d\n",a,b); 
return 0; 

A

a=30,b=30

B

a=60,b=60

C

a=60,b=30

D

a=30,b=60

参考答案

D

37.

下面程序执行后的输出结果是(  )。 
#include <stdio.h> 
#include <string.h> 
void main() 

char s[100]="abcdefg",s2[100]="ABCD"; 
strcat(s+3,s2+2); 
puts(s+1); 

A

bcCD

B

bcABCD

C

bcdefgCD

D

abcdefgCD

参考答案

C

38.

下面关于变量的可见性和存在性描述正确的是(   )

A

一个变量是可见的,那么它一定是存在的。

B

一个变量是存在的,那么它一定是可见的。

C

主函数中定义的变量比子函数中定义的变量作用域大。

D

函数内定义的静态变量比函数内定义的动态变量作用域大。

参考答案

A

39.

下面程序执行后的输出结果是(  )。 
#include <stdio.h> 
struct T 

int a; 
int b; 
}; 
void swap(struct T a,struct T *b); 
void main() 

struct T x={10,20},y={30,40}; 
swap(x,&y); 
printf("%d,%d,%d,%d\n",x.a,x.b,y.a,y.b); 

void swap(struct T a,struct T *b) 

struct T t; 
t=a; 
a=*b; 
*b=t; 

A

20,10,40,30

B

30,40,10,20

C

40,30,20,10

D

10,20,30,40

参考答案

D

40.

下面所列变量类别中,能够作为返回指针值函数返回对象的是(  )。

A

寄存器变量

B

全局变量

C

局部变量

D

函数形式参数

参考答案

B

41.

下面程序执行后的输出是( )。 #include #include #define M1 "Hello" #define M2 ",world!" #define Msg1 0 #define Msg2 0 void main() { char s[100]="HHHH"; #ifdef Msg1 strcat(s,M2); #elif Msg2 strcpy(s,M1); #else strcpy(s,strcat(strcpy(s,M1),M2)); #endif puts(s); }

A

HHHH

B

Hello,world!

C

HHHHHello

D

HHHH,world!

参考答案

D

42.

下面关于联合体变量空间的描述中,正确的是(  )。

A

联合体变量的所有成员分量都具有自己的空间

B

联合体变量的空间需求是所有成员空间要求之和

C

虽然联合体变量所有成员不会同时出现,但仍然可以对它们进行初始化

D

联合体变量中,空间要求最大的成员分量决定了联合体变量的空间需求

参考答案

D

43.

下面所列定义联合体类型变量的方法中,错误的是(  )。

A

先定义类型,然后定义该类型的变量

B

在定义联合体类型同时定义若干变量

C

只定义若干个某种形式的联合体变量

D

先定义联合体变量,然后根据变量定义类型

参考答案

D

44.

下面程序段执行后,变量xy的值依次是(  )。 
int x=1234,y=0; 
do 
{ y=x%10; 
x/=10; 
}while(x); 

A

04

B

40

C

10

D

01

参考答案

D

45.

下面代码段执行后的输出结果是(  )。 
int a[9]={10,20,30,40,50,60,70,80,90}; 
int i; 
for(i=0;i<9;i++) 
if(i%2) 
a[i]-=5; 
else 
a[i]*=2; 
printf("%d,%d\n",a[3],a[6]); 

A

140,35;

B

25,120;

C

45,160;

D

35,140

参考答案

D

46.

C程序中,带参主函数的函数首部形式为(    )。

A

void main(argc,argv)

B

void main(char argc, int *argv[])

C

void main(int a, char *b[])

D

void main(int argc; char *argv[])

参考答案

C

47.

设有C语句:char y[]={'a','b','c','d','e','f','g'};,则下面叙述中不正确的是(   )。

A

y是一个字符数组

B

y数组的元素个数为7

C

表达式y[3]= '\n '合法

D

语句序列int k=6;y[k]-=32; 不合法

参考答案

D

48.

设有C语句:char arr[5][5];,那么数组元素arr[4][3]存放的起始位置距该数组存放起始地址的字节数是(   )。

A

23

B

240

C

25

D

22

参考答案

A

49.

下面对牛顿迭代法的描述中,错误的是(  )。

A

牛顿迭代法是常见的求高阶方程根的方法之一

B

使用牛顿迭代法,不需要任何高等数学的知识

C

使用牛顿迭代法时,需要指定一个粗略解

D

使用牛顿迭代法,需要了解导函数知识

参考答案

B

50.

int a=3b=2,则表达式a^b>>2的十进制值是(    )。

A

2

B

6

C

4

D

3

参考答案

D

51.

设有C语句序列:int a[3][5],(*p)[5]; p=a;, 那么不能够表示a数组33列元素值的是(  )。

A

a[3][3]

B

*(*(p+3)+3)

C

*(p[3]+3)

D

*(*p+3+3)

参考答案

D

52.

下面关于单链表的描述中,错误的是(  )。

A

单链表的插入操作中,需要建立一个新数据结点

B

单链表的访问方式是顺序访问方式,即要从第一个结点开始依次访问其他结点

C

建立单链表时,有正向生成构造和反向生成构造两种方法

D

单链表删除操作中,仅需要将被删结点从链表上取下来既可

参考答案

D

53.

下面关于程序的说法中,正确的是(  )。

A

C语言的源程序描述了功能的实现方法,计算机可以直接运行

B

目标文件已经是二进制代码,计算机可以辨识并直接运行

C

执行文件是二进制代码,计算机可以辨识并直接运行

D

源程序文件中即使有语法错误,也可以编译生成目标文件

参考答案

C

54.

下面程序执行后的输出结果是(  )。 
#include <stdio.h> 
int main() 

int a=0x3030,b=0x6060; 
int mask1=0x00ff,mask2=0xff00; 
a&=mask1; 
b|=mask2; 
printf("a=0X%x,b=0X%x\n",a,b); 
return 0; 

A

a=0Xff30,b=0Xff60

B

a=0X30,b=0X60

C

a=0Xff30,b=0X60

D

a=0X30,b=0Xff60

参考答案

D

55.

32位开发环境下,下面程序段运行后,变量abc的值依次是(  )。 
int a,b,c; 
a=sizeof('A'); 
b=sizeof(int); 
c=sizeof(a,b+12.3); 

A

1,8,8

B

1,4,4

C

1,4,8

D

1,8,4

参考答案

C

56.

下面程序段中,for循环控制表达的含义是(  )。 
int x,a,b; 
scanf("%d,%d",&a,&b); 
for(x=a;x<=b;x++) 

//
数据处理部分 

A

取出[ab]区间的第一个数进行处理

B

取出[ab]区间最后一个数进行处理

C

取出[ab]区间第一个和最后一个数进行处理

D

依次取出[ab]区间的所有数据进行处理

参考答案

D

57.

下面选项中,正确的用户标识符是(  )。

A

2LIN

B

float

C

double

D

al_time

参考答案

D

58.

下面程序段执行后,循环体执行的次数和变量x值分别是(  )。 
int x=10,c=0; 
for(;x--;) 
{ x--; 
c++; 

A

4-4

B

50

C

40

D

5-1

参考答案

D

59.

下面关于结构体数据类型的描述中,不正确的是(  )。

A

在某个C程序中定义的结构体类型只能在该程序中使用

B

在一个C程序中可以定义若干个结构体类型

C

在程序代码中,不是直接使用结构体类型,而是使用结构体变量

D

虽然可以定义多个结构体类型,但不能嵌套定义结构体类型

参考答案

D

60.

下面程序执行后的输入是(  )。 
#include <stdio.h> 
#include <string.h> 
#define M1 "Hello" 
#define M2 ",world!" 
#define Msg1 0 
#define Msg2 0 
void main() 

char s[100]="HHHH"; 
#if Msg1 
strcat(s,M2); 
#elif Msg2 
strcpy(s,M1); 
#else 
strcpy(s,strcat(strcpy(s,M1),M2)); 
#endif 
puts(s); 

A

HHHH

B

Hello,world!

C

HHHHHello

D

HHHH,world!

参考答案

B

61.

下面关于某结构体类型一级指针变量和数组关系的描述中,正确的是(  )。

A

指针变量不仅能够指向数组元素,也能够指向数组

B

指针变量仅能够指向数组元素,但不能指向数组

C

指针变量不能指向数组元素,但可以指向数组

D

指针变量既不能指向数组元素,也不能指向数组

参考答案

A

62.

C语言中,与关系表达a+b*c>=x*y+z运算次序和结果都相同的是(  )。

A

(a+b)*c>=x*(y+z)

B

a+(b*c)>=x*(y+z)

C

(a+b*c)>=(x*y+z)

D

a*(b+c)>=x*(y+z)

参考答案

C

63.

表示关系x≤0x≥100时,正确的C语言表达式是(  )。

A

(x<=0) OR (x>=100)

B

(x<=0) || (x>=100)

C

(0>=x) && (x>=100)

D

(x<=0) || (100>=x)

参考答案

B

64.

下面程序没有语法错误,但存在一个潜在的问题,该问题是(  )。 
#include<stdio.h> 
void main() 

char s1[3][100]={"abc","123","ABC"},*s2; 
gets(s1[1]); 
gets(s2); 
puts(s1[1]); 
puts(s2); 

A

二维字符数组表示字符串

B

输入字符串时使用标准函数gets

C

输出字符串时使用标准函数puts

D

指针变量s2没有确定的指向

参考答案

D

65.

使用割线法求高阶方程解,需要知道(  )。

A

方程根所在区间的下限和直线方程的构造方法

B

方程根所在区间的上限和直线方程的构造方法

C

方程根所在区间的上、下限和直线方程的构造方法

D

方程根所在区间的上、下限和切线方程的构造方法

参考答案

C

66.

下面程序的运行结果是(  )。 
#include <stdio.h> 
#include <string.h> 
void main() 

char a[100]="AB",b[100]="LMNP"; 
int i=0; 
strcat(a,b); 
while(a[i++]) 
b[i]=a[i]; 
puts(b); 

A

LB

B

AB

C

LBLMNP

D

ABLMNP

参考答案

C

67.

函数void free(void * memblock)函数的功能是(   )。

A

在主存储器中的动态存储区分配由memblock所指向的存储块

B

释放由指针变量memblock指明首地址的由malloc类库函数分配的存储块

C

在硬盘存储区分配由memblock所指向的存储块

D

没有任何功能

参考答案

B

68.

设有如下所示C语句序列,则下面的表达式中值为6的是(   )。 
struct T 
{ int n; 
   struct T *p; 
}a[3]={5, &a[1],7,&a[2],9,NULL},*p=a; 

A

p++->n

B

p->n++

C

(*p).n++

D

++p->n

参考答案

D

69.

设有C语句序列:int arr[5],*p1; p1=&arr[3];,那么能够输入数组3号元素值的是(  )。

A

scanf("%d",p1[3]);

B

scanf("%d",arr[3]);

C

scanf("%d",p1);

D

scanf("%d",p1+3);

参考答案

C

70.

下面程序执行的结果是( )。

#include<stido.h>

#define AA 10

#define BB 20

#define CC(x,y) x*x+y*y

void main()

{ double s;

s=CC(AA+BB,AA-BB);

printf("s=%.0lf\n",s);

}

A

s=20

B

s=20.0

C

s=1000

D

s=1000.0

参考答案

A

71.

C程序中,十进制整数100的十六进制书写形式是(  )。

A

100

B

 0100IBM7090

C

0x100

D

0x64

参考答案

D

72.

下面程序的功能是(  )。 
#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 
void main() 
{ int x,sum=0; 
int i; 
srand((unsigned)time(NULL)); 
for(i=0;i<20;i++) 
{ x=rand()%100; 
if(x%2) 
sum+=x; 

printf("%lf\n",(double)sum/20); 

A

随机产生202位以内的整数,并计算其中偶数的平均值

B

随机产生202位整数,并计算其中偶数的平均值

C

随机产生202位以内的整数,并计算其中奇数的平均值

D

随机产生202位整数,并计算其中奇数的平均值

参考答案

C

73.

下面关于条件编译预处理#ifdef系列命令的叙述中,正确的是(  )。

A

使用#ifdef系列预处理命令,可以在程序执行时对流程进行控制

B

在使用#ifndef系列预处理命令时,#ifdef必须和#endif配合使用

C

使用#ifdef系列预处理命令,可以在编译时对处理代码进行选择

D

#ifdef#ifndef预处理命令的功能完全相同

参考答案

C

74.

下面关于带参数宏的叙述中,错误的是(  )。

A

宏也有默认的作用域:从其定义处开始到所在源文件结束为止

B

带参数宏中的参数不需要指定数据类型

C

为避免歧义,替换用字符串中的形参最好用括号括起来

D

宏调用与函数调用都有调用时系统开销

参考答案

D

75.

下面关于文件包含预处理的叙述中,错误的是(  )。

A

文件包含预处理语句不一定要书写在程序代码的最前面

B

文件包含预处理语句中,使用尖括号还是双引号括住文件名都可以

C

使用文件包含预处理,既可以包含系统的文件,也可以包含用户的文件

D

文件包含预处理语句一定要书写在程序代码的最前面

参考答案

D

76.

设有函数定义如下所示,正确的函数声明语句是(  )。 
double ave(int sum,int n) 

double v; 
v=(double)sum/n; 
return v; 

A

double ave(int sum;int n);

B

float ave(int sum,int n);

C

double ave(sum,n);

D

double ave(int x,int y);

参考答案

D

77.

下面程序段中要实现的功能是(  )。 
int n; 
for(n=1000;n>=1;n--) 
if(n%3==0&&n%5==0) 
break; 

A

找出[11000]中能够被3整除的最大数

B

找出[11000]中能够被5整除的最大数

C

找出[11000]中能够被35同时整除的最大数

D

找出[11000]中能够被35同时整除的最小数

参考答案

C

78.

对于下面代码段的执行结果,叙述正确的是(  )。 
int a=5,b=10; 
int *x,*y,*t; 
x=&a,y=&b; 
t=x,x=y,y=t; 

A

a=5b=10x指向ay指向b

B

a=10b=5x指向by指向a

C

a=10b=5x指向ay指向b

D

a=5b=10x指向by指向a

参考答案

D

79.

下面程序执行后输出的结果是( )。

#include<stdio.h>

void main()

{

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

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

printf("%2d",*(p+i));

for(i=4;i;i--)

printf("%2d",*(a+i));

printf("\n");

}

A

1 2 3 4 5 1 2 3 4

B

1 2 3 4 5 1 2 3 4 5

C

1 2 3 4 5 5 4 3 2 1

D

1 2 3 4 5 5 4 3 2

参考答案

D

80.

设有C语句序列:int arr[5],*p1; p1=arr;,那么能够输入数组3号元素值的是(  )。

A

scanf("%d",p1+3);

B

scanf("%d",arr[3]);

C

scanf("%d",p1*3);

D

scanf("%d",&p1[3]);

参考答案

A

81.

一个C程序的执行是从(  )

A

本程序的main函数开始,在main函数结束

B

本程序文件的第一个函数开始,到本程序文件的最后一个函数结束

C

本程序的main函数开始,到本程序文件的最后一个函数结束

D

本程序文件的第一个函数开始,到本程序main函数结束

参考答案

A

82.

设有C语句序列:int arr[5][5],*p1; p1=&arr[3][3];,那么能够输入数组33列元素值的是(  )。

A

scanf("%d",p1[3]);

B

scanf("%d",arr[3]);

C

scanf("%d",p1);

D

scanf("%d",p1+3);

参考答案

C

83.

下面关于二维动态数组特点的描述中,错误的是(  )。

A

释放动态二维数组时,应该先释放每行的空间,然后再释放指针数组

B

释放动态二维数组时,可以按照任意的顺序释放动态分配的所有空间

C

动态创建的二维数组不能进行初始化操作

D

动态二维数组的每一行不一定是连在一起的

参考答案

B

84.

下面程序执行后的输出结果是(  )。 
#include <stdio.h> 
enum TEST {A,B,C,D,E}i; 
void main() 

int a[5]={10,20,30,40,50}; 
i=A; 
while(i<=E) 

printf("%4d",a[i]); 
i=(enum TEST)((int)i+1); 

printf("\n"); 

A

10  20

B

10  20  30

C

10  20  30  40

D

10  20  30  40  50

参考答案

D

85.

下面程序执行后输出的结果是(  )。 
#include<stdio.h> 
void main() 

int a[3][3]={{1},{2,3,4},{9}}; 
int i,j,*p=&a[1][2]; 
*p+=a[0][0]*a[2][0]; 
for(i=0;i<3;i++) 
for(j=0;j<3;j++) 
printf("%3d",a[i][j]); 
printf("\n"); 

A

1  2  0  0  3 13  9  0  0

B

1  0  0  2  3  0  0 13  9

C

1  0  0  2 13  3  9  0  0

D

1  0  0  2  3 13  9  0  0

参考答案

D

86.

下面程序的运行结果是(  )。 
#include <stdio.h> 
#define N 3 
int fun(int v[],int n,int *v1); 
void main() 
{ int a[N][N]={1,2,3,4,5,6,7,8,9}; 
int n1,n2; 
n1=fun(*a,N,&n2); 
printf("n1=%d,n2=%d\n",n1,n2); 

int fun(int v[],int n,int *v1) 
{ int i,j,nv; 
nv=*v1=0; 
for(i=0;i<n;i++) 
for(j=0;j<n;j++) 
{ if(i==j) 
nv+=v[i*n+j]; 
if(i+j==n-1) 
*v1+=v[i*n+j]; 

return nv; 

A

n1=14,n2=16

B

n1=16,n2=14

C

n1=15,n2=15

D

n1=14,n2=14

参考答案

C

87.

下面程序的功能是(  )。 
#include <stdio.h> 
#include <string.h> 
int fun(char s[]); 
void main() 
{ char s1[100]; 
printf("?s1: "); 
gets(s1); 
printf("%d\n",fun(s1)); 

int fun(char s[]) 
{ int i; 
for(i=0;s[i];i++) 

return i; 

A

将字符串s1拷贝给s

B

将字符串s拷贝给s1

C

统计字符串s1中有效字符个数

D

将字符串s1连接到s末尾

参考答案

C

88.

下面程序执行后的输出结果是(  )。 
#include <stdio.h> 
struct T 

int a; 
int b; 
}; 
void swap(struct T *v); 
void main() 

struct T x[2]={10,20,30,40}; 
swap(x); 
printf("%d,%d,%d,%d\n",x[0].a,x[0].b,x[1].a,x[1].b); 

void swap(struct T *v) 

struct T t; 
t=*v; 
*v=*(v+1); 
*(v+1)=t; 

A

10,20,30,40

B

20,10,40,30

C

40,30,20,10

D

30,40,10,20

参考答案

D

89.

设主函数中有如下所示的变量定义和函数声明,那么正确的函数调用是(  )。 
int a,b; 
char c1,c2; 
double m,n; 
double mul(double x,double y); 

A

func(m,n/10)

B

mul(m,n)

C

mul(a/b,n)

D

mul(c1/c2,a/b)

参考答案

B

90.

C语言中,要表达字符变量ch不是数字字符的条件,应该使用(  )。

A

ch< '0’||ch> '9’

B

ch< '0’&&ch> '9’

C

ch!= '0’||ch!= '9’

D

ch!= '0’&&ch!= '9’

参考答案

A

1.

C函数既可以嵌套定义,也可以嵌套调用

正确

错误

参考答案

正确

2.

两个函数仅仅是书写形式不同,实现的功能完全相同

正确

错误

参考答案

错误

3.

C程序中,使用#ifdef#elseC控制语句ifelse都可以形成双分支的概念,所以它们在程序中的作用是相同的。

正确

错误

参考答案

错误

4.

C语言中没有逻辑数据类型,关系运算的结果使用整数01来表示。

正确

错误

参考答案

正确

5.

C的标准库函数设计时,仅仅考虑了实现函数功能的高效性。

正确

错误

参考答案

错误

6.

由于所有的数据在内存中都是用二进制存储的,所以在程序中所有类型的数据都可以参加位运算。

正确

错误

参考答案

错误

7.

C程序中初始化多维数组时,如果提供了数组的全部元素值,则可任意地选择省略其中一维的长度指定。

正确

错误

参考答案

错误

8.

设有C语句:int a[10],*p;,那么让指针变量p指向数组5号元素的表达式是p=a[5]

正确

错误

参考答案

错误

9.

C程序中,使用字符数组表示字符串数据时,可以修改该字符串数据中的内容。

正确

错误

参考答案

正确

10.

C程序中,用在函数之间通过结构体指针变量传递函数参数来替换直接传递构体变量,更多的原因是为了提高程序执行效率。

正确

错误

参考答案

正确

11.

C程序的函数中,可以使用结构体数组作为形式参数。

正确

错误

参考答案

正确

12.

C语言表达式运算中,同级运算总是从左到右进行。

正确

错误

参考答案

错误

13.

在书写C语言表达式时,如参与乘法运算的两个数据对象都是变量,则可以省略乘号不写。

正确

错误

参考答案

错误

14.

无论函数的嵌套调用有多少层,任意两层函数调用的行为和单层函数调用都是相同的。

正确

错误

参考答案

正确

15.

C表达式计算中,参与运算的两个数据对象不同数据类型时,只能由系统按照默认的方式进行数据类型转换。

正确

错误

参考答案

错误

16.

C程序中,文件数据处理完成后要及时地关闭相关文件。

正确

错误

参考答案

正确

17.

C程序中初始化字符数组时,若在此后的程序代码中将字符数组作为字符串整体考虑,那么初始化数据最后的'\0'字符是必须的。

正确

错误

参考答案

正确

18.

C语言中,结构体类型与数组不同之处在于:数组所有元素必须同类型,而结构体类型的成员分量可以不同数据类型。

正确

错误

参考答案

正确

19.

C程序中,合理使用枚举类型不但可以限制数据的取值范围,而且还可以在一定程度上描述出数据对应的物理含义。

正确

错误

参考答案

正确

20.

如果要定义一个指向double类型二维数组元素的指针变量,那么指针变量的数据类型也应该是double

正确

错误

参考答案

正确

21.

下面语句序列中存在着语法错误。 
int a=5,b=10; 
(a+b*15)++; 

正确

错误

参考答案

正确

22.

C程序中,为已经存在的数据类型名取别名时,可以使用关键字typedefing

正确

错误

参考答案

错误

23.

C程序中,编译预处理命令#ifdef#endif必须配合使用。

正确

错误

参考答案

正确

24.

C程序中,使用#if#elseC控制语句ifelse都可以形成双分支的概念,所以它们在程序中的作用是相同的。

正确

错误

参考答案

错误

25.

C程序中有定义:int a=0x3030,b;,则表达式b=a^a^a;b=a;等价。

正确

错误

参考答案

正确

26.

C程序中,定义在主函数中的变量就是全局变量,其作用范围是整个C程序。

正确

错误

参考答案

错误

27.

C程序中,函数内部,复合语句内部,函数的参数表中定义的变量都是局部变量,它们的作用范围都是整个函数内部。

正确

错误

参考答案

错误

28.

C程序中,如果要使用一个动态的二维整型数组,该数组的名字应该用一个整型的二级指针变量表示。

正确

错误

参考答案

正确

29.

C程序中,定义一个联合体类型,就是确定有哪些成员参与存储区域的共享。

正确

错误

参考答案

正确

30.

C语言中,二维数组的起始地址有4种表示形式,它们都是二级地址形式。

正确

错误

参考答案

错误

31.

因为地址本质上是无符号整数,所以只需要定义整型的指针变量就可以指向任意数据类型的变量。

正确

错误

参考答案

错误

32.

C语言中,语句序列:int x; double y; int *p[2]={&x,&y};是正确的。

正确

错误

参考答案

错误

33.

C语言中,使用函数来实现结构化程序设计中的模块概念。

正确

错误

参考答案

正确

34.

C程序中定义指向函数指针变量时,不仅要正确命名指针变量,还需要参照被指向函数的返回值类型和参数表。

正确

错误

参考答案

正确

35.

C标准库中提供了一系列关于字符分类的标准函数,这些函数使用时需要用文件包含预处理命令将ctype.h头文件包含的源程序中来。 

正确

错误

参考答案

正确

36.

如果用宏来计算任意两个数的乘积,那么宏可以定义为:#define MU(x) x*x

正确

错误

参考答案

错误

37.

结构体类型指针变量,能够存放同类型结构体变量在内存中的起始地址。

正确

错误

参考答案

正确

38.

C程序中,一维数组作为实参传递时,只能通过函数名将自己的起始地址传递给形参数组。

正确

错误

参考答案

错误

39.

C程序中,文件指针和文件内部读写位置指针都用于表示被处理的文件。

正确

错误

参考答案

错误

40.

C语言中,break语句只能在循环体中使用。

 

正确

错误

参考答案

错误

41.

设函数中有一个整型形式参数,那么该函数被调用时,能够传递给这个形参变量的数据是:整型变量值、整型表达式值、整型常量值、返回值类型为整型的函数调用结果等。

正确

错误

参考答案

正确

42.

C语言中,int*表示整型指针(地址)类型,这种数据类型也可以作为函数的返回值数据类型使用。

正确

错误

参考答案

正确

43.

设用变量f表示银行一年期存款利息,用变量b表示客户本金数,那么在程序中可以用公式b*(1+f)来计算每年的存款总金额。

正确

错误

参考答案

正确

44.

数学学科中我们常常把方程也称为函数,所以C程序中的函数就是方程。

正确

错误

参考答案

错误

45.

fputc,fputs,fprint,fwrite4个向文件中写数据的函数中,只有fwrite函数写的是二进制文件,其余都是文本文件。

正确

错误

参考答案

正确

46.

C语言中的复合语句使用花括号将若干条语句括起来,复合语句不需要使用分号结尾。

正确

错误

参考答案

正确

47.

C程序中,通过标准函数rand()的使用就可以产生任意类型的随机数据。

正确

错误

参考答案

错误

48.

对文件内部读写位置指针来说,不管是顺序存取中的自动移动还是随机存取中的人为移动,都只能是向文件尾的方向进行移动。

正确

错误

参考答案

错误

49.

C语言中,通过主函数带参来实现命令行参数功能。

正确

错误

参考答案

正确

50.

为了在C程序中模拟出真正意义上的随机数,需要在程序中使用初始化随机数发生器的标准函数srand

正确

错误

参考答案

正确

1.

函数reverse的原型为:void reverse(char *s);,其功能是颠倒存放字符串s,函数定义代码已经写入到源程序问文件myfuns.cpp。下面程序利用函数reverse将键盘上输入的字符串进行颠倒并输出。请选择合适选项填空完成程序。

#include <stdio.h>

#include          

int main()

{

    char s[200];

    printf("?s: ");

    gets(s);

    reverse(s);

    puts(s);

    return 0;

}

A  "void reverse(char *s);"

B  void reverse(char *s);

C  myfuns.cpp

D  "myfuns.cpp"

参考答案

D

2.

#include <stdio.h>

#include <math.h>

double sincos(double x,double *co);

int main()

{

    double x,sinv,cosv;

    printf("?x: ");

    scanf("%lf",&x);

    sinv=sincos(          );

    printf("sinv=%lf,cosv=%lf\n",sinv,cosv);

    return 0;

}

double sincos(double x,double *co)

{

    x=x*3.1415926/180;

             =cos(x);

    return sin(x);

}

A x,cosv

B x,&cosv

C *co

D co

参考答案

①  B

②  C

3.

下面程序的功能是:通过宏定义MOD4个实型数据a+bc+d的余数。请选择合适选项填空完成程序。

参考答案

① D ② B

4.

下面程序的功能是:随机产生20个实数存放到一维数组a中,并通过指向数组a的指针移动的方式输出所有数组元素值。请选择合适选项填空完成程序。

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#define N 20

int main()

{

    double a[N],*p;

    int i;

    srand(time(NULL));

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

        a[i]=rand()%100+rand()%100*1e-2;

    p=a;

    while(p<          )

    {

        printf("%7.2lf",          );

        p++;

    }

    printf("\n");

    return 0;

}

A  a

B  a+N

C  p

D  *p

参考答案

①  B

②  D

5.

下面程序的功能是:反复从键盘输入整数,通过counter函数统计能够被35同时整除的数据个数,输入负数时结束程序运行。请选择合适选项填空完成程序。

#include <stdio.h>

int counter();

int main()

{

    int n,c=0;

    while(          )

    {

        scanf("%d",&n);

        if(n<0)

            break;

        if(n%3==0&&n%5==0)

            c=counter();

    }

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

    return 0;

}

int counter()

{

                  c;

    c++;

    return c;

}

A 1

B 0

C int

D static int

参考答案

①  A

②  D

6.

下面程序的功能是:输出person数组中年龄最大者的姓名和年龄信息。请选择合适选项填空完成程序。 
#include<stdio.h> 
struct man 

char name[20]; 
    int age; 
}person[]={"li=ming",18,"wang-hua",19,"zhang-ping",20}; 
int main() 

struct man *p,*q; 
int old=0; 
p=person; 
while(p<person+3) 

if(     
         ) 

q=p; 
old=p->age; 

p++; 

   printf("%s %d\n",     
        ); 
   return 0; 

A  q->name,q->age 
B  *q->name,q->age 
C  old<p.age 
D  old<p->age 

参考答案

①  D

②  A

7.

下面程序的功能是:从文件mydata.txt中读出3个结构体变量到数组a中,然后将数组a的内容输出到屏幕上。请选择合适选项填空完成程序。 
#include <stdio.h> 
struct test 

double x; 
int y; 
}; 
int main() 

FILE *f; 
    
       a[3]; 
int i; 
f=fopen("mydata.txt","rb"); 
if(f==NULL) 

printf("Can't create file.\n"); 
return -1; 

for(i=0;i<3;i++) 
fread(     
       ); 
fclose(f); 
for(i=0;i<3;i++) 
printf("%lf,%d\n",a[i].x,a[i].y); 
return 0; 

A  struct test 
B  test 
C  &a[i],sizeof(struct test),1,f 
D  a[i],sizeof(struct test),1,f 

参考答案

①  A

②  C

8.

下面程序的功能是:将从键盘上输入的一个字符串数据写入到指定的文件中。请选择合适选项填空完成程序。

参考答案

① D

② A

9.

下面程序的功能是:求实型变量b的小数部分,请选择合适选项填空完成程序。

#include <stdio.h>

int main()

{  

    double b;

    scanf("%lf",&b);

    printf("%lf\n",           );

    return 0;

}

A b%(int)b

B (int)b/b

C (int)b-b

D b-(int)b

参考答案

D

10.

下面程序的功能是:随机产生15个整实数存放到二维数组a中,并通过指向数组a的指针输出所有数组元素值。请选择合适选项填空完成程序。

参考答案

① C

② D

11.

若希望下面程序执行后输出的结果是0,请选择合适选项填空完成程序。

#include <stdio.h>

int main()

{  

    int a,b;

    a=b=10;

    printf("%d\n",              );

    return 0;

}

A  a&b

B  a^b

C  a|b

D  a<<b

参考答案

B

12.

下面程序实现数据符号判断功能:当x值为0时输出0值;当x是正数是输出1;当x是负数是输出-1,请选择合适选项填空完成程序。

参考答案

B

13.

下面程序的功能是:求从键盘输入的3个整数之和。请选择合适选项填空完成程序。 
#include <stdio.h> 
int add(    
    ); 
int main() 

int a,b,c,sum; 
printf("?a,b,c: "); 
scanf("%d,%d,%d",&a,&b,&c); 
sum=add(    
        ); 
printf("sum=%d\n",sum); 
return 0; 

int add(int a,int b) 

return a+b; 

A add(a,b),c 
B a,b,c 
C int a;int b 
D int,int 

参考答案

①  D

②  A

14.

下面程序的功能是:判断从键盘输入的整数是否回文数,并给出相应的提示信息;请选择合适选项填空完成程序。

#include <stdio.h>

int main()

{

    int n,m,revn=0;

    printf("?n: ");

    scanf("%d",&n);

    m=n;

    while(m)

    {

        revn=      

        m/=10;

    }

    if(revn==n)

        printf("%d是回文数!\n",n);

    else

        printf("%d不是回文数!\n",n);

    return 0;

}

A revn*10+m/10

B revn+10+m%10

C revn/10+m%10

D revn*10+m%10

参考答案

D

15.

下面程序的功能是:将从键盘上输入的一个字符串数据写入到指定的文件中,然后将其读出进行校验,正确输出OK,错误输出ERROR。请选择合适选项填空完成程序。

#include <stdio.h>

#include <string.h>

int main()

{

    FILE  *fpt ;       

    char str[100],str1[100]="",fn[20];  

    printf("Input the filename:");

    gets(fn);      

    if((fpt=           )==NULL)

    {

        printf("Can't open file %s\n",fn);

        return -1;

    }

    gets(str);

    fwrite(str,sizeof(char),strlen(str),fpt);

    fseek(          );

    fread(str1,sizeof(char),strlen(str),fpt);

    if(strcmp(str,str1)==0)

        printf("OK\n");

    else

        printf("ERROR\n");

    puts(str1);

    fclose(fpt);

    return 0;

}

A  fopen(fn,"w+")

B  fpt,-1*strlen(str),SEEK_CUR

C  fpt,-1*strlen(str),SEEK_END

D  fopen(fn,"r+"))

参考答案

①  A

②  B

1.

(写出下面程序执行的结果)

#include <stdio.h>

int main()

{  

    int *f(int *k);

    int a=2,b;

    b=*f(&a);

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

    return 0;

}

int *f(int *k)

{  

    static int x=4;

    (*k)++;

    printf("%d\n",(*k)++);

    x+=*k;

    return &x;

}

参考答案

3

b=8

2.

(写出下面程序执行的结果)

#include <stdio.h>

int main()

{   int sum(int x);

    int n=5,s;

    s=sum(n);

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

    return 0;

}

int sum(int x)

{

    int fac(int m);

    int n,s=0;

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

        s+=fac(n);

    return s;

}

int fac(int m)

{  

    int p=1,i;

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

        p*=i;

    return p;

}

参考答案

s=153

3.

(写出下面程序执行的结果)

#include <stdio.h>

int *padd(int *p,int n)

{

    int i;

    static int sum=0;

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

    {   (*p)++;

        sum+=*p;

        p++;

    }

    return &sum;

}

int main()

{  

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

    int i,*q;

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

        printf("%4d",a[i]);

    printf("\n");

    q=padd(a,10);

        printf("%4d",*q);

    printf("\n");

    return 0;

}

参考答案

 0   1   2   3   4   5   6   7   8   9

  55

4.

(写出下面程序执行的结果)

#include <stdio.h>

int main()

{  

    int a[][4]={3,16,87,65,4,32,11,108,10,25,12,27},b[3],i,j,max;

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

    {

        max =a[i][0];      

        for(j=1;j<=3;j++)

            if(a[i][j]>max)

                max =a[i][j];

        b[i]= max; 

    }

    printf("array b:");

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

        printf("%4d",b[i]);

    printf("\n");

    return 0;

}

参考答案

array b:  87 108  27

5.

(写出程序执行后data.txt文件中的内容)

参考答案

AAAAAAAAAA

6.

(写出下面程序执行的结果)

#include <stdio.h>

int main()

{  

    void f(char *s,char *t);

    char s1[100]="abcde",s2[]="12345";

    f(s1,s2);

    puts(s1);

    return 0;

}

void f(char *s,char *t)

{  

    for(;*s!='\0';s++)

        ;

    while((*s++=*t++)!='\0')

        ;

}

参考答案

abcde12345

7.

写出下面程序执行的结果)

#include <stdio.h>

int main()

{

    char c,str[]="SSSWILTCH2\2\223WALL";

    int k;

    for(k=2;(c=str[k])!='\0';k++)

    {   switch(c)

        {   case 'A':   putchar('a');

                        continue;

            case '2':   break;

            case 2:     while((c=str[k++])!='\2'&&c!='\0')

                            ;

            case 'T':   putchar('*');

            case 'L':   continue;

            default:    putchar(c);

                        continue;

        }

        putchar('#');

    }

    printf("\n");

    return 0;

}

参考答案

SWI*CH#*Wa

8.

(写出下面程序执行的结果)

参考答案

s=25

9.

(写出下面程序执行的结果) 
#include <stdio.h> 
int main() 

int y=10; 
while(y) 
{ y++,y-=2; 
if(y%2==0) 
printf("%4d",y); 

printf("\n"); 
return 0; 

参考答案

8   6   4   2   0

10.

(写出下面程序执行的结果)

#include <stdio.h>

int main()

{  

    unsigned int a,x,y,z;

    a=0112;

    x=a>>5;

    y=~(~0<<3);

    z=x&y;

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

    return 0;

}

参考答案

z=2

11.

(写出下面程序执行的结果) 
#include <stdio.h> 
int main() 

int x=3,y=0,a=0,b=0; 
  switch(x) 
{ case 3: switch(y) 
{ case 0: a++; 
break; 
                   case 1: b++; 
break; 

       case 2: a++; 
b++; 
break; 
        case 1: a++; 
b++; 

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

参考答案

a=2,b=1

12.

(写出下面程序执行的结果)

参考答案

abcdefg 
ABCDEFGHIJK 
123456789 
Hello 

13.

#include <stdio.h>

int main( )

{  

    int func(int ,int );

    int x=2,y=5,z=8,r;

    r=func(func(x,y),z);

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

    return 0;

}

int func(int a,int b)

{  

    int z;

    z=a+b;

    return  z;

}

参考答案

15

14.

(写出下面程序执行的结果)

#include <stdio.h>

int main()

{

    int i, j, row, colum, max;

    int a[3][4]={1,2,3,4,9,8,17,6,-10,10,-5,2};

    max=a[0][0],row=colum=0;

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

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

            if(a[i][j]>max)

                max=a[i][j],row=i,colum=j;

    printf( "max=%d,row=%d,colum=%d\n",max,row,colum);

    return 0;

}

参考答案

max=17,row=1,colum=2

15.

(写出下面程序执行的结果) 
#include <stdio.h> 
int main() 

int i,j,k;char ch='1'; 
   for(i=0;i<=3;i++) 
   { for(j=0;j<=3-i;j++) 
   printf(" "); 
for(k=0;k<=2*i;k++) 
printf("%c",ch); 
printf("\n"); 
ch=ch+1; 

for(i=0;i<=2;i++) 
{ for(j=0;j<=i+(3-2);j++) 
printf(" "); 
for(k=0;k<=4-2*i;k++) 
printf("%c",ch); 
printf("\n"); 
    ch=ch-1; 

return 0; 

参考答案

 1

   222

  33333

 4444444

  55555

   444

    3  

16.

(写出下面程序执行的结果)

#include <stdio.h>

int main()

{   void fun(int *x,int *y);

    int x=1,y=2;

    fun(&y,&x);

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

    return 0;

}

void fun(int *x, int *y)

{  

    printf("%d %d ",*x,*y);

    *x=3;

    *y=4;

}

参考答案

2 1 4 3

17.

(写出程序执行后data.txt文件中的内容)

#include <stdio.h>

int main()

{  

    FILE *fp;

    char t[]="How old 3%* Are 23you#";

    int i;

    if((fp=fopen("data.txt","w"))==NULL)

    {

        printf("Can not Open File!");

        return -1;

    }

    for(i=0;t[i]!='#';i++)

        if(t[i]>='A'&&t[i]<='Z')

        {

            t[i]=t[i]+32;

            fputc(t[i],fp);

        }

    fclose(fp);

    return 0;

}

参考答案

ha

18.

#include <stdio.h>

int main()

{

    struct T

    {   int x;

        int *y;

    }*p;

    int dt[]={1,3,5,7};

    struct T d[]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};

    p=d;

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

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

    printf("%d\n",++(*p->y));

    return 0;

}

参考答案

51

51

4

19.

#include <stdio.h> 
int main() 

char *mes[]={"abcdefg","ABCDEFGHIJK","123456789","Hello"},**p; 
for(p=mes;p<mes+sizeof(mes)/sizeof(char *);p++) 
{ while(**p!='\0') 
{ putchar(**p); 
(*p)++; 

putchar('\n'); 

return 0; 

参考答案

abcdefg 
ABCDEFGHIJK 
123456789 
Hello 

20.

#include<stdio.h>

int main()

{  

    union

    {  

        int a;

        char c[4];

    }s;

    s.a=0x46474849;

    for(int i=0;i<4;i++)

        printf("%c",s.c[i]);

    printf("\n");

    return 0;

}

参考答案

IHGF

21.

(写出下面程序执行的结果) 
#include<stdio.h> 
int main() 

int a,b,c; 
a=25; 
b=025; 
c=0x25; 
printf("a=%d,b=%d,c=%d\n",a,b,c); 
return 0; 

参考答案

a=25,b=21,c=37

22.

#include <stdio.h>

int main()

{  

    unsigned int a,x,y,z;

    a=0112;

    x=a>>5;

    y=~(~0<<3);

    z=x&y;

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

    return 0;

}

参考答案

z=2

23.

(写出程序的功能)

#include <stdio.h>

int main()

{

    char c,str[]="SSSWILTCH2\2\223WALL";

    int k;

    for(k=2;(c=str[k])!='\0';k++)

    {   switch(c)

        {   case 'A':   putchar('a');

                        continue;

            case '2':   break;

            case 2:     while((c=str[k++])!='\2'&&c!='\0')

                            ;

            case 'T':   putchar('*');

            case 'L':   continue;

            default:    putchar(c);

                        continue;

        }

        putchar('#');

    }

    printf("\n");

    return 0;

}

参考答案

将文本文件data.txt中的所有'*'更换为'$'字符。

24.

参考答案

30

-10

200

25.

(写出下面程序执行的结果) 
#include<stdio.h> 
int main() 

int k=2,i=2,m; 
m=(k+=i*=k); 
printf("m=%d\ti=%d\n",m,i); 
return 0; 

参考答案

m=6     i=4

1.

描述学生信息的数据结构(类型)如下所示,编制程序处理若干学生(人数自定)的数据信息。要求学生数据的输入、学生平均成绩的求取以及学生所有信息的输出功能都用单独的函数完成。 
struct stud 

char id[5]; 
char name[20]; 
int score[4]; 
double ave; 
}; 

参考答案

#include<stdio.h>

struct stud

{

    char id[8];

    char name[20];

    int score[4];

    double ave;

};

struct stud InputStudentInfo()

{  

    struct stud tempstu;

    int  tempsum=0;

    puts("请输入学生学号:");

    gets(tempstu.id);

    puts("请输入学生姓名:");

    gets(tempstu.name);

    for(int i=0;i<4;i++)

    {

        printf("请输入学生第%d门课程学习成绩:",i+1);

        scanf("%d",&tempstu.score[i]);

        tempsum+=tempstu.score[i];

    }

    tempstu.ave=(double)tempsum/4;  

    getchar();

    return tempstu;

}

void PrintStudentInfo(struct stud student)

{  

    printf("学号: %s\n",student.id);  

    printf("姓名: %s\n",student.name);

    for(int i=0;i<4;i++)

        printf("第%d门课程成绩:%d\n",i+1,student.score[i]);       

    printf("学生的平均成绩:%lf\n",student.ave);

}

#define N 3

int main()

{  

    struct stud Students[N];

    int i;

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

        Students[i]=InputStudentInfo();   

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

        PrintStudentInfo( Students[i]);

    return 0;

}

2.

编程序求出100~1000之间的每一个整数各自的各位数字之和,要求求每个整数各位数字之和的函数单独编写。

参考答案

#include <stdio.h>

#define N 1000

int main()

{  

    int sum(int x);

    int n;

    for(n=100;n<=N;n++)

        printf("%4d",sum(n));

    printf("\n");

    return 0;

}

int sum(int x)

{  

    int s=0;

    while(x)

    {   s+=x%10;

        x/=10;

    }

    return s;

}

3.

编写程序实现功能:分别统计键盘输入流上接收字符串中每种数字字符的个数,要求使用数组表示所有计数器集合,并且在数组的下标表达式中使用枚举型数据。

参考答案

#include <stdio.h>

#include <stdlib.h>

#define MAX 1000

enum dig{zero,one,two,three,four,five,six,seven,eight,nine};

int main()

{  

    int getline(char *s,int lim);

    char str[MAX],*p;

    int counter[10]={0},i;

    enum dig nu=zero;

    gets(str);

    p=str;

    while(*p)

    {

        if(*p>='0'&&*p<='9')

            counter[nu+*p-'0']++;

        p++;

    }

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

        printf("%4d",counter[i]);

    printf("\n");

    return 0;

}

4.

编程序实现功能:通过条件编译方式确定程序运行时实现字符串拷贝还是字符串连接。

参考答案

#include <stdio.h>

#include <string.h>

#define COPY

int main()

{

    char s1[100],s2[200];

    printf("string s1 & s2:\n");

    gets(s1);

    gets(s2);

#ifdef COPY

    strcpy(s1,s2);

#else

    strcat(s1,s2);

#endif

    puts(s1);

    return 0;

}

5.

编程序实现功能:随机生成一个二维整型数组,将其中的数据写入指定文件中,要求每次写入二维数组中的一行。然后,将文件中的数组内容读出并显示到屏幕上。

参考答案

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#define N 5

#define M 8

void makearr(int v[][M]);

void printarr(int v[][M]);

int main()

{

    FILE *fp;

    int a[N][M],i;

    char fname[20];//fname用于存放被处理的文件名

    makearr(a);

    printf("?fname:");

    scanf("%s",fname);

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

    {

        printf("打开/创建文件%s失败!\n",fname);

        return -1;

    }

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

        fwrite(a[i],sizeof(int),M,fp);

    fclose(fp);

    if((fp=fopen(fname,"rb"))==NULL)

    {

        printf("打开文件%s失败!\n",fname);

        return  -2;

    }

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

        fread(a[i],sizeof(int),M,fp);

    fclose(fp);

    printarr(a);

    return 0;

}

void makearr(int v[][M])

{   int i,j;

    srand(time(NULL));

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

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

            v[i][j]=rand()%100;

}

void printarr(int v[][M])

{

    int i,j;

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

    {

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

            printf("%4d",v[i][j]);

        printf("\n");

    }

}

6.

计算sin函数在

上的值,并将所有计算结果存放到一个磁盘文件data.txt中。

参考答案

#include <stdio.h>

#include <math.h>

int main()

{

    FILE *p;

    double x,sinv;

    if((p=fopen("data.txt","w"))==NULL)

    {

        printf("打开/创建文件失败!\n");

        return -1;

    }

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

    {

        sinv=sin(2*x/32);

        fprintf(p,"%lf\n",sinv);

    }

    fclose(p);

    return 0;

}

7.

现需要设计一个处理二维平面整型数据的程序,平面的行数和列数不可预知(需要在程序运行过程中输入)。要求处理的方式是其奇数行按降序排序,偶数行按升序排序。请编制实现上述功能的程序,使用随机数据检验程序的正确性。

参考答案

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

void sort(int v[],int n);

void reverse(int v[],int n);

int main()

{  

    int m,n,i,j,**row;

    srand(time(NULL)); 

    printf("请输入二维数组的行数:");

    scanf("%d",&m);

    printf("请输入二维数组的列数:");

    scanf("%d",&n);

    row=(int **)malloc(sizeof(int*)*m);

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

        row[i]=(int *)malloc(sizeof(int)*n);

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

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

            row[i][j]=rand()%100;

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

        if(i%2==0)

            sort(row[i],n);

        else

        {

            sort(row[i],n);

            reverse(row[i],n);

        }

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

    {  

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

            printf("%4d",row[i][j]);

        printf("\n");

    }

    return 0;

}

void sort(int v[],int n)

{  

    int i,j,k,temp;

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

    {  

        k=i;

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

            if(v[j]<v[k])

                k=j;

        if(k!=i)

            temp=v[i],v[i]=v[k],v[k]=temp;

    }

}

void reverse(int v[],int n)

{  

    int i,j;

    for(i=0,j=n-1;i<j;i++,j--)

        v[i]=v[i]+v[j],v[j]=v[i]-v[j],v[i]=v[i]-v[j];

}

8.

编程序实现功能:从键盘上输入一个字符串和一个字符,统计该字符在字符串中出现的次数。

参考答案

#include <stdio.h>

#include <string.h>

int main()

{

    char str[100],ch;

    int count=0,len,i;

    printf("请输入字符串str:");

    gets(str);

    printf("请输入查找的字符ch:");

    ch=getchar();

    len=strlen(str);

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

        if(str[i]==ch)

            count++;

    printf("字符'%c'在字符串\"%s\"中出现了%d次!\n",ch,str,count);

    return 0;

}

9.

一个正整数与3的和是5的倍数,与3的差是6的倍数,编程序求出符合此条件的最小正整数。

参考答案

#include <stdio.h> 
int main() 
{ int n=3; 
while(1) 
{ if((n+3)%5==0&&(n-3)%6==0) 
break; 
n++; 

printf("
满足条件的最小整数是:%d\n",n); 
return  0; 

10.

编制程序实现功能:输入一个十进制数,然后将其按十六进制和八进制形式输出。

参考答案

#include <stdio.h> 
int main() 

int n; 
printf("?n:"); 
scanf("%d",&n); 
printf("
十六进制数:%x\n",n); 
printf("八进制数:%o\n",n); 
return 0; 

11.

编制求所用计算机系统中整型数据(int)字长和长整型数据(long)字长的函数,并用相应主函数测试。

参考答案

#include <stdio.h>

int main()

{

    int wordlength();

    int longwordlength();

    int w_length;

    long l_w_length;

    w_length=wordlength();

    l_w_length=longwordlength();

    printf("length of int is: %d\n",w_length);

    printf("length of long is: %d\n",l_w_length);

    return 0;

}

int wordlength()

{

    unsigned int i,v=~0;

    for(i=1;(v>>=1)>0;i++)

        ;

    return i;

}

int longwordlength()

{

    unsigned long i,v=~0;

    for(i=1;(v>>=1)>0;i++)

        ;

    return i;

}

12.

编程序实现功能:定义一个结构体数据类型(包括年、月、日),利用该类型计算某日是该年中的第几天?

参考答案

#include<stdio.h>

struct Date

{

    int year;

    int month;

    int day;

};

int main()

{  

    Date tem;  

    scanf("%d %d %d",&tem.year,&tem.month,&tem.day);   

    int daytab[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},

                        {31,29,31,30,31,30,31,31,30,31,30,31}};

    int i,reap,days=0;

    if(tem.year%400==0||(tem.year%4==0 && tem.year%100!=0))    

        reap=1;   

    else

        reap=0;

    for(i=0;i<tem.month-1;++i)

        days+=daytab[reap][i]; 

    days+=tem.day;

    printf("输入日期是当年的第%d天\n",days);

    return 0;

}

13.

编制程序实现功能:分别计算出圆锥体的底圆周长、底面积、侧面积和体积,结果取小数点后3位。圆锥体的底半径和高在程序运行过程中通过键盘输入。

参考答案

#include <stdio.h> 
#include <math.h> 
#define PI 3.1415926 
int main() 

double r,h,L,S1,S2,V; 
printf("?r,h:"); 
scanf("%lf,%lf",&r,&h); 
L=2*PI*r; 
S1=PI*r*r; 
S2=PI*r*(sqrt(r*r+h*h)); 
V=PI*r*r*h/3; 
printf("L=%.3lf,S1=%.3lf,S2=%.3lf,V=%.3lf\n",L,S1,S2,V); 
return 0; 

14.

编程序实现功能:输入任意一个日期数,判断是一周中的那一天。要求在程序设计中尽可能使用枚举型数据。

参考答案

#include <stdio.h>

enum weekday{Sun,Mon,Tue,Wed,Thu,Fri,Sat};

int main()

{

    int first,today;

    enum weekday day;

    printf("请输入本月的第一天是星期几:");

    scanf("%d",&first);

    printf("请输入今天的日期:");

    scanf("%d",&today);

    today+=first-1;

    day=(enum weekday)(today%7);

    switch(day)

    {

    case Mon:

        printf("%d号是星期一!\n",today-first+1);

        break;

    case Tue:

        printf("%d号是星期二!\n",today-first+1);

        break;

    case Wed:

        printf("%d号是星期三!\n",today-first+1);

        break;

    case Thu:

        printf("%d号是星期四!\n",today-first+1);

        break;

    case Fri:

        printf("%d号是星期五!\n",today-first+1);

        break;

    case Sat:

        printf("%d号是星期六!\n",today-first+1);

        break;

    case Sun:

        printf("%d号是星期日!\n",today-first+1);

        break;

    default:

        puts("Error!!");

        break;

    }

    return 0;

}

15.

函数delmem的原型为:int delmem(int *v,int n,int del);,其功能是在长度为n的数组v中删除所有的del值。请编制函数delmem并用相应主函数测试,测试数据的个数在程序运行过程中确定。

参考答案

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

int delmem(int *v,int n,int del);

int main()

{  

    int *a,i,n,del;

    srand(time(NULL));

    printf("请输入处理的数组长度: ");

    scanf("%d",&n);

    a=(int *)malloc(sizeof(int)*n);

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

        *(a+i)=rand()%100;

    printf("删除操作前的数据如下所示: \n");

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

        printf("%4d",*(a+i));

    printf("\n请输入欲删除的元素值: ");

    scanf("%d",&del);

    n=delmem(a,n,del);

    printf("删除操作后的数据如下所示: \n");

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

        printf("%4d",*(a+i));

    printf("\n");

    return 0;

}

int delmem(int *v,int n,int del)

{  

    int i,j;

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

        if(*(v+i)==del)

        {

            for(j=i;j<n-2;j++)

                *(v+j)=*(v+j+1);

            n--,i--;

        }

    return n;

}

16.

编制程序实现功能:将从键盘输入的若干字符依次存入到磁盘文件data.txt中,直到输入字符#时为止。

参考答案

#include <stdio.h>

int main()

{

    char c;

    FILE *p;

    if((p=fopen("data.txt","w"))==NULL)

    {

        printf("创建data.txt文件失败!\n");

        return -1;

    }

    while((c=getchar())!='#')

        fputc(c,p);

    fclose(p);

    return 0;

}

17.

下面程序的功能是:从键盘上输入一个数,将其插入到数列{2,5,6,8,12,13,15,17,19,22}中,并保证插入后数列仍然保持升序排列。请选择合适选项填空完成程序。

#include<stdio.h>

int main()

    int i,j,x,k=10,a[11]={2,5,6,8,12,13,15,17,19,22};

        printf("?x:");

   scanf("%d",&x);

   for(i=0;i<k&&a[i]<x;i++)

                    

   for(j=k;j>i;j--)

                     ;

    a[i]=x;

    k++;

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

        printf("%4d",a[i]);

    printf("\n");

    return 0;

}

A  i++;

B  ;

C  a[j]=a[j-1]

D  a[j]=a[j+1]

参考答案

①  B

②  C

18.

函数的原型为:void dis(int n);,其功能是将任意一个正整数n的立方分解成n个连续的奇数之和。例如:当n4时,输出 13151719,即43=13+15+17+19。请编制函数dis并用相应主函数进行测试。

参考答案

#include <stdio.h>

int main()

{

    void dis(int n);

    int num;

    printf("?num:");

    scanf("%d",&num);

    dis(num);

    printf("\n");

    return 0;

}

void dis(int n)

{  

    int k1,k2,sum,i;

    k1=1;

    while(1)

    {

        k2=k1;

        sum=0;

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

        {   sum+=k2;

            k2+=2;

        }

        if(sum==n*n*n)

            break;

        else

            k1+=2;

    }

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

    {  

        printf("%5d",k1);

        k1+=2;

    }

}

19.

编程序实现功能:随机产生100个三位以内的正整数,存放在一维数组中,查找最大元素和最小元素的位置。

参考答案

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#define N 100

int main()

{

    int a[N],maxv,maxi,minv,mini,i;

    srand(time(NULL));

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

        a[i]=rand()%1000;

    maxv=minv=a[0];

    maxi=mini=0;

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

    {   if(a[i]>maxv)

            maxv=a[i],maxi=i;

        else if(a[i]<minv)

            minv=a[i],mini=i;

    }

    printf("最小值是%d号元素!\n",mini);

    printf("最大值时%d号元素!\n",maxi);

    return 0;

}

20.

定义一个能够判定字符c是否英语字母的宏isALPHA(c),并利用该宏定义统计文本文件data.txt中英文字母的个数。

struct stud

{

    char id[5];

    char name[20];

    int score[4];

    double ave;

};

参考答案

#include <stdio.h>

#define isALPHA(c) c>='a'&&c<='z'||c>='A'&&c<='Z'?1:0

int main()

{

    FILE *f;

    char ch;

    int counter=0;

    if((f=fopen("data.txt","r"))==NULL)

    {

        printf("Can't open file.\n");

        return -1;

    }

    ch=fgetc(f);

    while(ch!=EOF)

    {

        if(isALPHA(ch))

            counter++;

        ch=fgetc(f);

    }

    fclose(f);

    printf("文件data.txt中的英语字母个数为:%d\n",counter);

    return 0;

}

BY:Vip_Hc 无偿分享 E-mail:xysds@protonmail.com

分享保留出处.禁止用于任何盈利行为,崇拜大神吧。啊哈哈哈哈哈哈哈哈哈哈哈。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵银吉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值