C语言程序设计练习题B.doc
C C 语言程序设计练习题语言程序设计练习题 B B本复习题页码标注所用教材为:教材名称单价作者版本出版社C 语言程序设计(第 2 版)35谭浩强2008 年 11 月第 2 版清华大学出版社如学员使用其他版本教材,请参考相关知识点一、单项选择题一、单项选择题1.以下选项中可作为 C 语言合法整数的是()A)10110BB)0386C)0XffaD)x2a2参考答案:C2.以下选项中非法的表达式是()A)0=xs2)SB)if(strcmp(s1,s2)S;C)if(strcmp(s2,s1)0)SD)if(strcmp(s1,s2)0)S;参考答案:D12.下列条件语句中,功能与其它语句不同的是()A)if(a)printf(%dn,x);else printf(%dn,y);B)if(a=0)printf(%dn,y);else printf(%dn,x);C)if(a!=0)printf(%dn,x);else printf(%dn,y);D)if(a=0)printf(%dn,x);else printf(%dn,y);参考答案:D13.有以下定义和语句int a32=1,2,3,4,5,6,*p3;p0=a1;则*(p0+1)所代表的数组元素是()A)a01B)a10C)a11D)a12参考答案:C14.已有定义:int i,a10,*p;,则合法的赋值语句是()A)p=100B)p=a5C)p=a2+2D)p=a+2;参考答案:D15.设有如下程序段:int x=2002,y=2003;printf(%dn,(x,y);则以下叙述中正确的是()A)输出语句中格式说明符的个数少于输出项的个数,不能正确输出B)运行时产生出错信息C)输出值为 2002D)输出值为 2003参考答案:D16.有以下说明和定义语句struct student int age;char num8;struct student stu3=20,200401,21,200402,109,200403;struct student*p=stu;以下选项中引用结构体变量成员的表达式错误的是()A)(p+)-numB)p-numC)(*p).numD)stu3.age参考答案:D17以下叙述中正确的是()A)预处理命令行必须位于源文件的开头B)在源文件的一行上可以有多条预处理命令C)宏名必须用大写字母表示D)宏替换不占用程序的运行时间参考答案:D18.要求以下程序的功能是计算:s=1+1/2+1/3+1/10main()int n;float s;s=1.0;for(n=10;n1;n-)s=s+1/n;printf(%6.4fn,s);程序运行后输出结果错误,导致错误结果的程序行是()A)s=1.0B)for(n=10;n1;n-)C)s=s+1/nD)printf(%6.4fn,s);参考答案:C19.下列函数定义中,会出现编译错误的是()A)max(int x,int y,int*z)B)int max(int x,y)*z=xy?x:y;int z;z=xy?x:y;return z;C)max(int x,int y)D)int max(int x,int y)int z;return(xy?x:y);z=xy?x:y;return(z);参考答案:B20.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是()A)函数调用可以作为独立的语句存在B)函数调用可以作为一个函数的实参C)函数调用可以出现在表达式中D)函数调用可以作为一个函数的形参参考答案:D二、二、阅读程序写结果阅读程序写结果1.有以下程序main()int m=0256,n=256;printf(%o%on,m,n);程序运行后的输出结果是考核知识点:printf 函数,参见 P662以下程序运行后的输出结果是_main()int a=3,b=4,c=5,t=99;if(b)if(a)printf(%d%d%dn,a,b,c);考核知识点:if 选择结构,参见 P953以下程序运行后的输出结果是main()char c1,c2;for(c1=0,c2=9;c1printf(n);考核知识点:for 循环,参见 P1194以下程序运行后的输出结果是_void swap(int x,int y)int t;t=x;x=y;y=t;printf(%d%d,x,y);main()int a=3,b=4;swap(a,b);printf(%d%dn,a,b);考核知识点:函数的定义与调用,参见 P1705以下程序运行后的输出结果是_fun(int a)int b=0;static int c=3;b+;c+;return(a+b+c);main()int i,a=5;for(i=0;i3;i+)printf(%d%d,i,fun(a);printf(n);考核知识点:For 循环,以及变量的存储方式和生存期,分别参见 P119,P1956以下程序中函数 huiwen 的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出.所谓回文即正向与反向的拼写都一样,例如:adgda.请填空.#includechar*huiwen(char*str)char*p1,*p2;int i,t=0;p1=str;p2=_;for(i=0;ia)|(m=ab);printf(%d,%dn,k,m);程序运行后的输出结果是考核知识点:关系表达式和逻辑表达式,分别参见 P90 和 P918.有以下程序main()int a=1,2,3,4,5,6,7,8,9,10,11,12,*p=a+5,*q;*q=*(p+5);printf(%d%dn,*p,*1);程序运行后的输出结果是考核知识点:通过指针引用数组元素,参见 P2209.有以下程序main()unsigned int a;int b=-1;a=b;printf(%u,a);程序运行后的输出结果是考核知识点:printf 函数,参见 P6610.有以下程序main()int x=1,3,5,7,2,4,6,0,i,j,k;for(i=0;i=i;j-)if(xj+1xj)k=xj;xj=xj+1;xj+1=k;for(i=0;i3;i+)for(j=4;jxj)k=xj;xj=xj+1;xj+1=k;for(i=0;i3;i+)for(j=4;jxj+1)k=xj;xj=xj+1;xj+1=k;for(i=0;i8;i+)printf(%d,xi);printf(n);程序运行后的输出结果是:考核知识点:for 循环,参见 P119三三、程序程序填空题填空题1.通过函数求 f(x)的累加和,其中 f(x)x21main()printf(The sum=%dn,SunFun(10);SunFun(int n)int x,s=0;for(x=0;x=n;x+)s+=F(_);return s;F(int x)return _;考核知识点:函数的定义和调用,以及 for 循环,分别参见 P170 和 P1192.以下程序中,函数 SumColumM 的功能是:求出 M 行 N 列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。请填空。#define M 2#define N 4void SumColumMin(int aMN,int*sum)int i,j,k,s=0;for(i=0;iN;i+)k=0;for(j=1;jaji)k=j;s+=_;*sum=s;main()int xMN=3,2,5,1,4,1,8,3,s;SumColumMin(_,_);printf(%dn,s);考核知识点:For 循环和二维数组,分别参见 P119 和 P1453.以下程序的功能是将字符串 s 中的数字字符放入 d 数组中,最后输出 d 中的字符串。例如,输入字符串:abc123edf456gh,执行程序后输出:123456。请填空。#include stdio.h#include string.hmain()char s80,d80;int i,j;gets(s);for(i=j=0;si!=0;i+)if(_)dj=si;j+;dj=0;puts(d);考核知识点:字符数组,for 循环,分别参见 P151 和 P119四、编程题四、编程题1.编写函数 fun 的功能用选择排序法对数组的的数据按从小到大的顺序排列。考核知识点:一维数组,for 循环,分别参见 P139 和 P119