c教材习题-

发布时间 : 星期日 文章c教材习题- 更新完毕开始阅读

编程题

1. 编写一个计算圆的面积程序,将π的值定义为符号常量。

2. 将求圆柱体的体积写成带参数的宏定义,并使用该宏定义计算圆柱体的体积。 3. 定义一个带有三个参数的宏MAX,求三个参数中的最大值。

第8章 数组 一、选择题

1.以下数组定义中,错误的是 。 A) int a[]={1,2,3}; B) int a[5]={1,2,3};

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

2.设有定义 int a[10]={0}; 则说法正确的是 。 A) 数组a有10个元素,各元素的值为0 B) 数组a有10个元素,其中a[0]的值为0,其他元素的值不确定 C) 数组a有1个元素,其值为0 D) 数组初始化错误,初值个数少于数组元素个数 3.以下数组定义中,正确的是 。 A) int n=4 , a[n]={1,2,3,4}; B) int a[][2]={1,2,3,4};

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

4.设有如下定义:int a[8][10];在VC中一个整数占用4字节,设a的起始地址为1000,则a[1][1]的地址是 。 A) 1000 B) 1004

C) 1036 D) 1044

5.已知有数组定义: int a[ ][3]={1,2,3,4,5,6,7,8,9},则a[1][2]的值是 。 A) 2 B) 5 C) 6 D) 8

6.在以下字符串定义、初始化和赋值运算中,错误的是 。 A) char str[10]; str= \

B) char str[10]= \\ C) char str[10]= { 'S' ,'t', 'r' ,'i','n', 'g'};

D) char str[]= { 'S' ,'t', 'r' ,'i','n', 'g',0};

7.设有以下字符串定义,则s1和s2 。 char s1[]={ 'S' ,'t', 'r' ,'i','n', 'g'}; char s2[]= \

A) 长度相同,内容也相同 B) 长度不同,但内容相同 C) 长度不同,但内容相同 D) 长度不同,内容也不同

8.设已定义 char str[6]= { 'a','b','\\0','c','d','\\0'}; 执行语句 printf((\后,输出结果为 。

#ifdef DEBUG printf(\#endif

printf(\}

A) DEBUG OK C) 宏定义错误

B) OK

D) #ifdef命令错误

A) a B) ab C) abcd D) ab\\0cd\\0 9.引用数组元素时,数组元素下标不可以是 。 A) 字符常量 B) 整型变量 C) 字符串 D) 算术表达式

10.已定义字符数组s1和s2,以下错误的输入语句是 。

A) scanf(\B) scanf(\ C) gets(s1,s2) ; D) gets(s1) ; gets(s2) ; 11.下面程序段的运行结果是 。

void main() {

char a[]=\

strcpy(a,b); printf(\

}

A) 123 B) 123d C) abcd D) abcd123 12. 下面程序段的运行结果是 。

void main()

{char a[]=\ if(a>b) printf(\ else printf(\

}

A) 123 B) 编译时出错 C) abcd D) 运行时出错

二、程序设计题

1. 一维整型数组a的值已知,求一维数组中最小元素的值及其在数组中的位置。

2. 一维整型数组a有20个元素,各元素的值已知,求一维数组中所有元素之和及其平均

值。

3. 一维数组a的值已知,请把数组中的值按逆序存放,然后输出数组。例如数组中原来的

值为:3,4,2,1,6。颠倒后变成6,1,2,4,3。 4. 输入一个整数(位数不确定),从高位到底位依次输出各位数字,其间用逗号分隔。例

如输入整数为2345,则输出应为:2,3,4,5。

5. 输入一个由大写字母组成的字符串,求字符串中包含了几个不同的字母。 6. 用选择排序法对整型数组排序。

7. 请找出1~999中的所有平方为回文数的数,并输出这些数。例如11的平方为121,11

为要找的数。

8. 找出二维数组的所有鞍点。所谓鞍点就是在该位置上的元素在该行上最大,而在该列上

最小。数组元素由随机函数自动产生。

9. 输入一个5*5的整数矩阵,计算对角线以上所有元素之和。

10.文本加密。输入一字符串,将其中所有的大写英文字母+3,小写英文字母-3,然后再输

出加密后的字符串。

11.输入一字符串,统计出某指定字符在字符串中出现的次数。

12.输入一个英文句子,如果两单词之间多于一个空格,则删除多余的空格。然后输出处理

前后该句子的长度。

13.不要调用strcpy函数,把字符数组str2中的字符串复制到字符数组str1中。 14.输入一组英文单词,按字典顺序排序后输出。

第9章 结构体、共用体和枚举类型 一、选择题

1. 若已经定义 struct stu { int a, b; } student ; ,则下列输入语句中正确的是 。

A) scanf(\ B) scanf(\C) scanf(\ D) scanf(\

2. 若已有以下结构体定义和初始化,则值为2的表达式是 。

struct cmplx{

int x ;

int y; } c[]={1,2,3,4}; A) c[0].y B) y C) c.y[0] D) c.y[1] 3. 设有如下程序段,则vu.a 的值为 。

union u{ int a,b; float c; } vu; vu.a=1; vu.b=2; vu.c=3;

A) 1 B) 2 C) 3 D) A、B、C都不是

4. 设已经定义union u{ char a; int b;} vu; 在VC中存储char 型数据需要1个字节,存储int型数据需要4个字节,则存储变量vu需要 个字节。

A) 1 B) 4 C) 5 D) 8 5. 设有定义 enum date {year,month,day} d ;则下列叙述中正确的是 。

A) date是类型、d是变量、year是常量 B) date是类型、d和year是变量 C) date和d是类型、year是常量 D) date和d是变量、year是常量 6. 设有定义 enum date {year,month,day} d ;则正确的表达式是 。

A) year=1 B) d=year C) d=\ D) date=\

7. 若已经定义 typedef struct stu { int a, b; } student ; ,则下列叙述中正确的是 。

A) stu 是结构体变量 B) student 是结构体变量 C) student 是结构体类型 D) a和b是结构型体变量 8. 下面有关typedef语句的叙述中,正确的是 。

A) typedef语句用于定义新类型 B) typedef语句用于定义新变量

C) typedef语句用于给已定义类型取别名 D) typedef语句用于给已定义变量取别名

二、程序设计题

1. 设计一个通信录的结构体类型,并画出该结构体变量在内存的存储形式。

2. 用结构体变量表示平面上的一个点(横坐标和纵坐标),输入两个点,求两点之间的距离。

3. 用结构体变量表示复数(实部和虚部),输入两个复数,求两复数之积。

第10章 指针 一、选择题

1. 设已定义 int a, *p; 下列赋值表达式中正确的是 。 A) *p=a B) p=*a C) p=&a D) *p=&a

2. 设已定义 int x, *p=&x ; 则下列表达式中错误的是 。

A) *&x B) &*x C) * & p D) & * p

3. 若已定义 int a=1,*b=&a; , 则printf(\的输出结果为 。

A) a的值 B) a的地址 C) b的值 D) b的地址

4. 设已定义 int x, *p ,*p1=&x , *p2=&x ; 则下列表达式中错误的是 。

A) x=*p1+*P2 B) p=p1 C) p =p1+p2 D) x=p1-p2

5. 设有函数定义 void p(int *x){printf(\; } 和变量定义a=3; 则正确的函数调用是 。

A) p(a) B) p(*a) C) p (&a) D) p(int *a) 6. 如下函数 的功能是 。 int fun( char *x) { char *y=x;

while(*y)y++; return(y-x); }

A) 求字符串的长度 B) 比较两个字符串的大小 C) 将字符串x复制到字符串y D) 将字符串x连接到字符串y后面 7. 运行以下程序,输出结果为 。 int fun(int a,int *b) { a++; (*b)++; return a+*b; }

void main() { int x=1,y=2;

printf(\printf(\}

A) 5 5 B) 5 6 C)6 5 D) 6 6 8. 运行以下程序,输出结果为 。 #include int* fun(int a,int *b) {a++; (*b)++; *b=a+*b; return b; }

void main() {int x=1,y=2,*z; z=fun(x,&y); printf(\z=fun(x,&y); printf(\}

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

9. 若已定义 int a[]={1,2,3,4},*p=a; 则下面表达式中值不等于2的是 。

A) *(a+1) B) *(p+1) C) *(++a) D) *(++p) 10. 若已定义 int a[]={1,2,3,4},*p=a+1; 则p[2]的值是 。

A) 2 B) 3 C) 4 D) 无意义 11. 设已定义 char s[ ]= \ printf(\的值为 。 A) ABCD1 B) B C) BCD D) ABCD

12. 设已定义 char str[]=\ *ptr=str;,则 *(ptr+5)的值为 。

A) d B) 0 C) '0' D) 字符d的地址 13. 下面对字符串变量的初始化或赋值操作中,错误的是 。 A) char a[]=\ B) char *a=\ C) char a[10]; a=\ D) char *a; a=\

14. 设已定义 char *ps[2]={ \则以下叙述中错误的是 。

A) ps为指针变量,它指向一个长度为2的字符串数组

B) ps为指针数组,其两个元素分别存储字符串 \和\的地址 C) ps[1][2]的值为'3' D) *(ps[0]+1) 的值为'b'

15.设已定义 struct { int a,b; } s,*ps=&s; 则错误的结构体成员引用是 。

A) s.a B) ps->a C)*ps.a D) (*ps).a

二、程序设计题 1.输入3个字符串,输出其中最大的字符串(用字符指针)。

2.定义一个函数,函数的功能求已知半径的圆的周长和面积。要求把半径、周长和面积设置成函数参数。

3.定义函数max ,函数参数为3个字符串,函数返回值最大的字符串。 4.自己定义字符串复制函数strcpy,然后调用之。

5.定义一个函数,函数参数为一维数组(用指针表示),函数返回数组元素的平均值。 6.定义一个函数,删除字符串中第k个字符开始的m个字符,例如删除字符串abcde第2个字符开始的3个字符,则删除后结果为ae;又如删除字符串abcde第4个字符开始的5个字符,则删除后结果为abc;

7.在字符串中删除所有指定字符(如把字符串teacher中的e字符删除,得到tachr),使用子函数和字符指针。

联系合同范文客服:xxxxx#qq.com(#替换为@)