c语言练习试题库
c语言练习试题库
【www.ruiwen.com - 试题】
单项选择题 1.有char c=’1’,下面说法中正确的是( & &)。 A. 语句putc+2);的输出结果为51 B. 语句put“%d”,c+2);的输出结果为3 C. 语句put“%c”,c+2);的输出结果为51 D. 语句put“%c”,c+2);的输出结果为3 2.设c1,c2均是char型变量,则下面不正确的函数调用为( & &)。 A. scanf(”c1=2=%c”,&c1,&c2); B. get); C. putc2); D. putc1,c2); 3.为了表示关系x&=y&=z,下面C语言表达式中正确的是( & &)。 A. (x&=y)&&(y&=z) B. (x&=y)and(y&=z) C. (x&=y&=z) D. (x&=y)&(y&=z) 4.设x,y,z,t为int型变量,则执行以下语句后,t的值为( & &)。 x=y=z=1; t=++x||++y&&++z; A. 不定值 B. 2 C. 1 D. 0 5.对if语句中表达式的类型,下面正确的说法是( & &)。 A. 必须是关系表达式 B. 必须是关系表达式或逻辑表达式 C. 可以是任意表达式 D. 必须是关系表达式或算术表达式 6.对for(表达式1;;表达式3)可以理解为( & &)。 A. for(表达式1;0;表达式3) B. for(表达式1;表达式1;表达式3) C. for(表达式1;1;表达式3) D. for(表达式1;表达式3;表达式3) 7.执行语句for(i=1;i++&4;);之后,变量i的值为( & &)。 A. 3 B. 4 C. 5 D. 不确定 8.若二维数组a有m列,则在a[i][j]前的元素个数为( & &)。 A. j*m+i B. i*m+j C. i*m+j-i D. i*m+j+1 9.下面说法中正确的是( & &)。 A. 在C语言中,可以使用动态内存分配技术,定义元素个数可变的数组 B. 在C语言中,数组元素的个数可以不确定,允许随即变动 C. 在C语言中,数组元素的数据类型可以不一致 D. 在C语言中,定义数组后,就确定了它能容纳的相同数据类型元素的个数 10.不能把字符串:“good!”赋给数组b的语句是( & &)。 A. char b[10]={’g’,’o’,’o’,’d’,’!’}; B. char b[10];b=“good!”; C. char b[10];strcpy(b, “good!”) ; D. char b[10]=“good!”; 11.执行下面程序段,给x,y赋值时,不能作为数据分隔符的是( & &)。 int x,y; scanf(”%d%d”,&x&y); A. 回车 B. Tab键 C. 回车 D. 逗号 12.已知ch是字符型变量,下面不正确的赋值语句为( & &)。 A. ch=’a+b’; B. ch=’’; C. ch=’7’+’9’; D. ch=5+9; 13.下面程序段的输出结果是( & &)。 char c1=’6’,c2=’0’; printf(”%c,%c,%d,%d ”,c1,c2,c1-c2,c1+c2); A. 因输出格式不合法,输出出错信息 B. 6,0,6,102 C. 6,0,7,6 D. 6,0,5,7 14.在C语言的循环语句for, while,do while中,用于直接中断最内层循环的语句是( & &)。 A. switch B. continue C. break D. if 15.下面的循环结构中,不是无限循环的是( & &)。 A. for( i=1;;i++) printf(“%d”,i--); B. i=1;while(i--) {printf(”%d”,i++);} C. i=1;do{printf(”%d”,i); i++;} while(--i); D. for(i=0;i;i++) printf(”%d”,i); 16.下面程序段的运行结果是( & &)。 char c[]=” will ”; printf(“%d“,strlen(c)); A. 14 B. 3 C. 9 D. 字符串中有非法字符,输出值不确定 17.下面说法中正确的是:在C语言程序中( & &)。 A. 函数的定义可以嵌套,但函数的调用不可以嵌套 B. 函数的定义不可以嵌套,但函数的调用可以嵌套 C. 函数的定义和调用均不可以嵌套 D. 函数的定义和 调用均可以嵌套 18.若用数据名作为函数调用的实参,传递给形参的是( & &)。 A. 数据的首地址 B. 数组第一个元素的值 C. 数组中全部元素的值 D. 数组元素的个数 19.以下叙述中不正确的是( & &)。 A. 在不同的函数中可以使用相同名字的变量 B. 函数中的形式参数是局部变量 C. 在一个函数内定义的变量只在本函数范围内有效 D. 在一个结函数内的符合语句中定义的变量在本函数范围内有效 20.一个变量的指针是指( & &)。 A. 该变量的值 B. 该变量的地址 C. 该变量的变量名 D. 该变量的标志 21.若有定义:int a[10],*p=a;,则p+5表示( & &)。 A. 元素a[5]的地址 B. 元素a[5]的值 C. 元素a[6]的地址 D. 元素a[6]的值 22. C语言规定,在一个源程序中,main函数的位置( & &)。 A. 必须在最开始 B. 必须在系统调用的库函数的后面 C. 可以任意 D. 必须在最后 23. 一个C语言程序是由( & &)。 A. 一个主程序或若干个子程序组成 B. 函数组成 C. 若干过程组成 D. 若干个子程序组成 24. 下面哪项是构成C语言的基本单位( & &)。 A. 函数 B. 过程 C. 子程序 D. 子例程 25. 以下正确的说法是( & &)。 A. 定义函数时,形参的类型说明可以放在函数体内 B. return后边的值不能为表达式 C. 如果函数值的类型和返回值类型不一致,以函数值类型为准 D. 如果形参与实参的类型不一致,以函数值类型为准 26.对于基类型相同的两个指针变量之间,不能进行的运算是( & &)。 A. & B. = C. + D. – 27.变量的指针,其含义是指该变量的( & &)。 A. 值 B. 地址 C. 名 D. 一个标志 28.下面程序运行的结果是( & &)。 void ss(char *s,char t) { while(*s) { if(*s= =t) *s=t-‘a’+’A’; s++; } } void main() { char str1[100]=”abcddfefdbd”,c=’d’; ss(str1,c); printf(“%s ”,str1); } A. ABCDDFEFDBD B. abcDDfefDbD C. abcAAfefAbA D. Abcddfefdbd 29.下列说法中正确的是( & &)。 A. 结构体变量可以作为一个整体进行其值得输入和输出 B. 结构体成员项不可以是结构体 C. 结构体成员项可以是结构体或其他任何C语言的数据类型 D. 结构体变量和结构体是相同的概念 30.下面说法中不正确的是( & &)。 A. 一个C源程序可有一个或多个函数组成 B. 一个C源程序必须包含一个main函数 C. C程序的基本组成是函数 D. 在C程序中,注释语句只能位于一条语句的后面 31.若执行下面的程序段,则下面描述中正确的是( & &)。 int k=5; while(k=1) k--; A. while循环执行四次 B. 循环体执行一次 C. 循环体一次也不执行 D. 死循环 32.下面关于for循环的正确描述是( & &)。 A. for循环只能用于循环次数已经确定的情况 B. for循环中是先执行循环体语句,后判断表达式 C. 在for循环中,不能用break语句跳出循环 D. for循环的循环体可以包含多条语句,但必须用花括号括起来 33.不正确的定义语句是( & &)。 A. double x[5]={2.0,4.0,6.0,8.0,10.0}; B. int y[5]={0,1,3,5,7,9}; C. char c1[]={’1’,’2’,’3’,’4’,’5’}; D. char c2[]={’x10’,’x0a’,’x08’}; 34.下面是对s的初始化,其中不正确的是( & &)。 A. char s[5]={“abc”}; B. char s[5]={‘a’,’b’,’c’}; C. char s[5]=””; D. char s[5]=”abced”; 35.下面程序段的运行结果是( & &)。 char c[5]={‘a’,’b’,’’,’c’,’’}; printf(“%s”,c); A. ‘a’’b’ B. ab C. ab c D. abc 36.以下说法中正确的是( & &)。 A. C语言程序总是从第一个定义的函数开始执行 B. 在C语言程序中,要调用的函数必须在main函数中定义 C. C语言程序总是从main函数开始执行 D. C语言程序中的main函数必须放在程序的开始部分 37.下列常量中,合法的C常量是( & &)。 A. “x-y” B. ‘105’ C. ‘Be’ D. &07ff 38.下面程序的输出结果是( & &)。 void main { int i=011,j=11; printf(“%d,%d ”,++i,j--); } A. 10,11 B. 12,10 C. 11,11 D. 10,9 39.下面程序的执行结果为( & &)。 void main() {int x=20,y; y=++x; & y+=x; printf(”%d,”y); y=x--; & &y+=x; printf(”%d,”y); } A. 42,41 B. 42,42 C. 40,41 D. 42,40 40.下面程序的输出结果是( & &)。 void main() { int i=010,j=10; printf(“%d,%d”,i++,++j); } A. 10,11 B. 11,11 C. 8,11 D. 8,10 41.能正确表示a和b同时为正或同时为负的表达式是( & &)。 A. (a&=0||b&=0)&&(a&0||b&0) B. (a&=0||b&=0)&&(a&0&&b&0) C. (a+b&0)&& (a+|b&0) D. & a*b&0 42.以下关于运算符优先顺序的描述中正确的是( & &)。 A. 关系运算符&算术运算符&赋值运算符&逻辑运算符 B. 逻辑运算符&关系运算符&算术运算符&赋值运算符 C. 赋值运算符&逻辑运算符&关系运算符&算术运算符 D. 算术运算符&关系运算符&赋值运算符&逻辑运算符 43.下面程序的运行结果是( & &)。 void main() { int a,b,d=241; a=d/100%9; b=(-1)&&(-1); printf(“%d,%d”,a,b); } A. 6,1 B. 2,1 C. 6,0 D. 2,0 44.若有条件表达式(exp)?a++:b--,则以下表达式中完全等价于表达式(exp)的是( & &)。 A. (exp= =0) B. (exp!=0) C. (exp= =1) D. (exp!=1) 45.程序段如下,则正确的执行结果是( & &)。 int k=0; while(k++&=2); printf(“%d ”,k); A. 2 B. 3 C. 4 D. 无结果 46.下面说法中正确的是( & &)。 A. 在C语言函数中,必须有形参 B. 在C语言函数中,形参必须是变量名 C. 在C语言函数中,可以有也可以没有形参 D. 在C语言函数中,数组名不能做形参 47.下面说法正确的是,在C语言中( & &)。 A. 实参和与其对应的形参各占用独立的存储单元 B. 实参和与其对应的形参共占用一个存储单元 C. 只有当实参和与其对应的形参同名时才共占用存储单元 D. 形参是虚拟的,不占用存储单元 48.下面不正确的说法是:C语言规定( & &)。 A. 实参可以是常量、变量或表达式 B. 形参可以是常量、变量或表达式 C. 实参传递给形参时,要求实参必须有确定的值 D. 形参应与其对应的实参类型可以不一致 49.C语言允许函数值类型缺省定义,此时函数值隐含的类型是( & &)。 A. float型 B. int型 C. long型 D. double型 50.若有以下定义:char s[10]=“include“,*p=s;,则不能代表字符‘u’的表达式为( &)。 A. s[4] B. s+4 C. *(p+4) D. p+=4,*p; 51. C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( & &)。 A. 地址传递 B. 单向值传递 C. 由实参传给形参,再由形参传给实参 D. 由用户指定传递方式 52. C语言规定,函数返回值的类型是由( & &)。 A. return语句中的表达式类型所决定 B. 调用该函数时的主调函数类型所决定 C. 调用该函数时系统临时决定 D. 在定义该函数时所指定的函数类型所决定 53. 若有int *p,a[10];p=a; ,则下列写法不正确的是( & &)。 A. p=a+2 B. a++ C. *(a+1) D. p++ 54. 若用数组名作为函数调用的实参,传递给形参的是( & &)。 A. 数组的首地址 B. 数组第一个元素的值 C. 数组中全部元素的值 D. 数组元素的个数 55. 若使用以为数组名作函数实参,则下面说法中正确的是( & &)。 A. 在被调函数中,与该实参相对应的形参必须是同类型的数组名或指针变量 B. 实参数组类型与形参数组类型可以不匹配 C. 在被调函数中,不需要考虑形参数组的大小 D. 实参数组名与形参数组名必须一致 56. 设p1、p2是指向同一个字符串的指针变量,c为字符变量,则不能正确执行的赋值语句为 ( & &)。 A. c=*p1+*p2; B. p2=c; C. p1=p2; D. c=(*p1)*(*p2); 57. 若有一下结构体定义,则正确的引用和定义是( & &)。 struct example { &} v1; A. example.x=10 B. example v2; v2.x=10; C. struct &v2; &v2.x=10; D. struct &example &v2={10,5}; 58. 说明一个结构体变量时,系统分配给它的内存是( & &)。 A. 各成员所需内存量的总和 B. 结构体中第一个成员所需内存量 C. 成员中占内存量最大者所需的容量 D. 结构体中最后一成员所需内存量 59. 在C语言中,文件由下面拿个组成( & &)。 A. 记录 B. 数据行 C. 数据块 D. 字符(字节)序列 60. 下面程序段的运行结果是( & &)。 char c[]=” will ”; printf(“%d“,strlen(c)); A. 14 B. 3 C. 9 D. 字符串中有非法字符,输出值不确定 61.以下叙述中不正确的是( & &)。 A. 在不同的函数中可以使用相同名字的变量 B. 函数中的形式参数是局部变量 C. 在一个函数内定义的变量只在本函数范围内有效 D. 在一个结函数内的符合语句中定义的变量在本函数范围内有效 62.一个变量的指针是指( & &)。 A. 该变量的值 B. 该变量的地址 C. 该变量的变量名 D. 该变量的标志
本文来源:C语言程序阅读题及编程题&(附考试大纲)
C语言程序阅读题及编程题 (附考试大纲)
一、编写程序求菲波那契数列的前二十项并输出,要求每行输出5项
{int a[20],i;
&a[0]=1;a[1]=1;
while (i&20)
& { a[i]=a[i-1]+a[i-2]];
for(i=0;i&20;i++)
{if(i%5==0) printf(&P\n&P);
printf(&P]&P,a[i]);
二、编写程序求两个正整数的最大公约数和最小公倍数。
int hcf(int u, int v)
if(u&v){r=u;u=v;v=r;}
&& while(r!=0)
&&& rentur
&& {int a,b,h,
scanf(“%d%d”&a,&b);
h=hcf(a,b);
printf(“hcf=%d,lcd=%d\n”,h,y);
三、编写求一个字符串长度的函数
int& strlen(char s[])
{ int i=0,n=0;
& while(s[i]!='\0')
&& {n=n+1;
四、编写程序求3到100之间的所有素数。
#include&math.h&
{int i,j,k;
&for(i=3;i&100;i++)
&{k=sqrt(i)
& for(j=2;j&=k;j++)
&&&&&&&&&&
if(i%j==0)
if(j&k) printf(“]”,i);
五、求100-999之间的水仙花数。
{ int i,j,k,n;
& while(n&=999)
j=n/10-i*10;
if(n==i*i*i+j*j*j+k*k*k)
&& printf("\n%d",n);
运行结果:153
六、两矩阵之积(P 109)
#include &stdio.h&
#define& M& 3
#define& N& 4
#define& L& 3
void& main()
a[M][N],b[N][L],c[M][L],i,j,k;
for (i=0;i&M;j++)
&for (j=0;j&N;j++)
scanf(“%d”,&a[i][j]);
for (i=0;i&N;i++)
&for (j=0;j&L;j++)
scanf(“%d”,&b[i][j]);
for(i=0;i&M;i++)
for(j=0;j&L;j++)
c[i][j]=0;
for(k=0;k&N;k++)
c[i][j]+=a[i][k]*b[k][j];
&for (i=0;i&M;i++)
for (j=0;j&L;j++)
printf(“d”,c[i][j]);
printf(“\n”);
七、编写程序求解一元二次方程ax2+bx+c=0的解。
#include&math.h&
{float& a,b,c,d, x1,x2,p,r;
&scanf(&P%f%f%f&P,&a,&b,&c);
&d=b*b-4*a*c;
&{x1=(-b-sqrt(d))/(2*a);
x2=(-b+sqrt(d))/(2*a);
printf(&Px1=%f,x2=%f\n&P,x1,x2);
&& else if(d==0)
x1=-b/(2*a);
printf(&Px=%f\n&P,x1)}
{r=-b/(2*a);
p=sqrt(-d)/(2*a);
printf(&P%f+%fi,%f-%fi\n&P,r,p,r,p);
八、实现1!+2!+...+10!的求解程序设计。(循环累加)
main( )
i,sum=0, p=1;
for(i=1;i&=10;i++)
printf(“sum=]”,sun);
九、设一维数组中已经存储一组数据,编写程序将数组循环右移1位(第一个数据移到第二个位置,第二个数句移第三个位置……,最后一个数据移到第一个位置)。
(一维数组循环右移)
&&& main()
{ int a[10]={2,5,12,13,23,25,26,87,113,123},x,*q;
while(q&a)
{*q=*(q-1);
for(q=a;q&a+10;q++)
printf(“M”,*q);
十、两矩阵之和(请参照谭浩强版的教材)
十一、矩阵对角线元素之和(请参照谭浩强版的教材)
C语言考试大纲
考试题型:
一、 选择题(10个题,每小题1分,共10分)。
二、 填空题(10个题,每小题2分,共20分)。
三、 程序阅读题(5个题,每小题8分,共40分)。
四、 编程题(3个题,每小题10分,共30分)。
考试范围:
第二章-----第九章
分值分布:
第二章占7%左右
第三---五章占36%左右
第六章 占20%左右
第七---八章 占32%(主要读程序题)左右
第九章 占4%左右
复习重点如下:
掌握基本数据类型变量的定义及相对应的取值范围;
掌握标识符的定义规则;
掌握几种运算符的优先级(见pp.301);
掌握几种表达式的计算规则(算术表达式、赋值表达式、[关系表达式、逻辑表达式、条件表达式在第四章]等);
掌握自增运算及自减运算的规则。
掌握赋值语句、及变量赋值的概念;
掌握printf和scanf函数的应用;
掌握关系运算符、赋值运算符、逻辑运算符的优先级及运算表达式的相关规则;
掌握程序设计结构的三大结构是顺序结构、选择结构和循环结构;
掌握简单的单分支和双分支结构;
掌握while语句、do-while语句以及for语句的使用;
注意简单算法的编写与设计;
掌握一维数组的定义及引用;
掌握二维数组的定义及引用;
掌握字符数组的定义及应用,及常用的字符串处理函数(strlen、strcpy等)的编写与使用;
掌握函数的定义规则,知道一个C语言程序可以由很多个函数构成,但是有且仅有一个主函数,每次调用函数时均从主函数入口;
掌握函数的调用规则和返回值;
了解几种存储类别auto、register、static等的意义;
了解利用动态分配函数malloc,所分配的内存字节数;
掌握指针的定义及应用;
掌握指向一维数组元素的指针;
掌握指针作函数参数的应用;
掌握二级指针的定义;
掌握main函数的参数的调用原理。
掌握结构体变量成员的定义及用指针变量引用的规则;
掌握结构体变量所占的内存的字节数;
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
问几道C语言题,请大家帮忙解决:1.以下正确的是:A
在C语言中,语句之间必须要用分号“;”分开
若a 是实型变量,C语言程序中允许赋值a=10,因此实型变量中允许存放整型数据
C 在C语言中,无论是整数还是实数,都能够准确无误地表示
D 在C语言中,%是只能用于整数运算的运算符2。当结点数目一定时,具有最小深度的二叉树是 A
B 完全二叉树木
C 线索二叉树木 D 二叉排序树3。若一棵二叉树有50个叶结点,则该二叉树至少有
个结点 A 50
若非空二叉树采用顺序存储结构依次将结点的数据信息存放在一个一维数组中(假设数组的第一个元素的下标为1),下标分别为 i
和 j 有两个结点处在树中同一层的条件是什么?(填空题)5 对于函数调用语句“FUN(a+b,(x,y),FUN(n+k,d,(a,b)));”,语句中的实参个数是
3能解释一下原因吗?尤其是第一道题,我觉得B D都对啊.为什么选A呢.
还有第二道题为什么不是B呢,第三道题为什么不选B呢,
第四道题怎么没有答案呢.
作业帮用户
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
1. DA: 我觉得不对。例如{}是可以分割语句的。B: 是因为可以将整形自动转换成实型C: 实数不一定能准确表示2. B。很显然B是对的。3. B。画画图就知道了,用归纳法应该可以证明。4. pow(2, n) <= i, j < pow(2, n+1) - 1 (关系应该是这样的,不是很肯定这种写法好不好)5. A。不是特别确定,严格来说应该是有两个函数调用,所以应该有6个实参才对。
为您推荐:
扫描下载二维码C语言基础题及答案_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
C语言基础题及答案
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩2页未读,
定制HR最喜欢的简历
你可能喜欢}