《C语言程序设计题目及解答-12.doc》由会员分享,可在线阅读,更多相关《C语言程序设计题目及解答-12.doc(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、如有侵权,请联系网站删除,仅供学习与交流C语言程序设计题目及解答-12【精品文档】第 6 页一、判断题(20分)1. 语句char *p = Turbo C的含义是将字符串赋给字符型指针变量p。2分 2. 若指针变量指向一维数组的第一个元素,将指针变量加整数3,即指针后移3个元素。 3. b是一维数组名,数组元素b1还可写成*(b+)。2分 4. 对二维数组a来说,由于a+1与*(a+1)的值相等,因此二者的含义是一样的。2分 5. 在二维数组中,行指针是指向一维数组的指针变量.2分 6. 取地址运算符&与指针运算符*的优先级相同,结合方向为自右向左。2分 7. 两个字符串中的字符个数相同时才
2、能进行字符串大小的比较2分 8. 字符串不能用指针进行引用2分 9. char c=Very Good; 是一个合法的为字符串数组赋值的语句。2分 10. char *p=girl;的含义是定义字符型指针变量p,p的值是字符串girl。2分 二、选择题(24分)1.下面程序段的运行结果是( )。B 2分char str=ABC,*p=str;printf(%dn,*(p+3);A. 67B. 0C. 字符C的地址D. 字符C 2.阅读下列程序,则执行后的结果为( )。B 2分#include stdio.h int main() int c4=1,2,3,4,5,6,7,34,213,56,6
3、2,3,23,12,34,56; printf(%x,%x,c22,*(*(c+1)+1);A. 62,5B. 3e,6C. 56,5D. 3E,6 3.下面程序段的运行结果是( )。C 2分 char *s=abcde;s+=2;printf(%d,s);A. cdeB. 字符cC. 字符c的地址D. 无确定的输出结果 4.若有变量定义 int x=3,*p;,则下面语句不正确的是( )。A 2分 A. p=&(x+1);B. p=&x;C. p=&x+1;D. p=&x, p+; 5.指针变量p1、p2类型相同,要使p2、p1指向同一变量,哪一个语句是正确的()。A 2分 A. p2=*&
4、p1;B. p2=*p1;C. p2=&p1;D. p2=*p1 6.若有语句:char *line5;,以下叙述中正确的是( )。A 2分 A. 定义line是一个数组,每个数组元素是一个基类型为char为指针变量。B. 定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组。C. 定义line是一个指针数组,语句中的*号称为间址运算符。D. 定义line是一个指向字符型函数的指针。7.若有数组定义为int a10,i; 与ai=100 等价的赋值表达式是B 2分 A. a+i=100B. *(a+i)=100C. (a+i)=100D. &ai=100 8.定义函数int *m
5、ax()的正确含义是()。B 2分 A. 返回整型值的函数B. 返回指向整型变量的指针C. 返回指向函数max()的指针D. 上面的叙述都不正确 9.若有定义“int (*ptr)(float);”,其正确的含义是()。C 2分 A. ptr是指向一维数组的指针变量B. ptr是指向int型数据的指针变量C. ptr是指向函数的指针变量,该函数有一个float型参数,返回值是整型D. ptr是一个函数名,该函数的返回值是指向int型数据的指针10.若有定义char a15=ab110cdne;则strlen(a)返回值和sizeof(a)的返回值分别为()。C 2分 A. 11,15B. 17
6、,11C. 10,15D. 18,11 11.若有定义char a15=ab110cdne;则strlen(a+5)返回至为()。D 2分 A. 8B. 10C. 17D. 5 12.char s=a128btcdxdgn;则数组s的字符串长度为()。C 2分 A. 12B. 10C. 11D. 18 三、程序填空题(26分)1. 功能:建立一个如下的二维数组,并按以下格式输出。 1 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 1 10分 #include int main() int a55=0,*p5,i,j; for(i=0;i5;i+)
7、pi=_(1)_; for(i=0;i5;i+) *( _(2)_ +i)=1; *(pi+5-( _(3)_ )=1; for(i=0;i5;i+) for(j=0;j5;j+)printf(%2d,pij); putchar(n); (1)答案 4分 &ai0 (2)答案 3分 pi (3)答案 3分 i+1 2. 输入一个星期几的数值(0-6),输出该星期几的英文名 8分 #include void week(int no) char *w=Sunday,Monday,Tuesday.,Wednesday,Thursday,Friday,Saturday; if(no=0&no=6)pu
8、ts(_(1)_); elseprintf(星期数值输入错误n);void main() int w; scanf(%d,&w); _(2)_;(1)答案 4分 wno (2)答案 4分 week(w) 3. 功能:输入3个字符串,输出最大字符串。 8分 #include#includevoid main() char s80,_(1)_; int i; scanf(%s,s); strcpy(max,_(2)_); for(i=1;i=2;i+) scanf(%s,s); if(strcmp(_(3)_,s)0)strcpy(max,s); printf(%sn,max); (1)答案 3分
9、 max80 (2)答案 3分 s (3)答案 2分 max 四、程序设计题(30分)1. 输入10个数,按绝对值从小到大排序后输出,要求定义一个函数sort,完成绝对值从小到大排序。(用指针完成) 10分 题目描述输入10个数,按绝对值从小到大排序后输出,要求定义一个函数sort,完成绝对值从小到大排序。(用指针完成) 输入描述输入10个数 输出描述按绝对值从小到大排序 样例输入3 5 7 2 1 -15 3 8 9 4 样例输出1 2 3 3 4 5 7 8 9 -15 #include #include void sort ( float *p, int n )int i,j;float
10、 *q, temp;/选择法排序 for (i=0;in-1;i+) q=p+i;for(j=i+1;jn;j+) if(fabs(*(p+j)fabs(*q)q=p+j;temp=*q;*q=*(p+i);*(p+i)=temp;void main()float a10,*p;int i;for(p=a,i=0;i10;i+)scanf(%f,p+);p=a;sort( p, 10 );for(i=0;i10;i+,p+)printf(%.0f ,*p);2. 输入n和x, n和x分别表示对数组前n个元素赋初值为x,要求定义一个函数value,完成对一维整形数组的n个元素进行赋值,具体赋值为
11、x. 10分 题目描述输入n和x, n和x分别表示对数组前n个元素赋初值为x,要求定义一个函数value,完成对一维整形数组的n个元素进行赋值,具体赋值为x.(要求用指针实现) 输入描述输入n和x 输出描述输出一维数组的前n个元素的值 样例输入5 1 样例输出1 1 1 1 1 #include void value ( int *p, int n, int x )int i;for ( i=0; in; i+ )*( p+i )=x;void main()int a100, n, x, i;scanf( %d%d, &n, &x );value ( a, n, x );for ( i=0;
12、in; i+ )printf( %d , ai );3. 字符串连接 10分 题目描述分别输入两个字符串保存在两个字符数组中,将其中较小的一个字符串连接到较大的字符串后面,然后输出连接后的字符串。 输入描述输入两个字符串 输出描述输出连接后的字符串,其中较小的连接在较大的字符串后面。 样例输入appleorange 样例输出orangeapple #include #include void main() char str180, str280; gets(str1); gets(str2); if(strcmp(str1, str2)0) strcat(str1,str2); puts(str1); else strcat(str2,str1); puts(str2);