C语言习题1.docx
- 文档编号:9948328
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:16
- 大小:20.73KB
C语言习题1.docx
《C语言习题1.docx》由会员分享,可在线阅读,更多相关《C语言习题1.docx(16页珍藏版)》请在冰豆网上搜索。
C语言习题1
一、选择题
(1)用C语言编写的代码程序()//考点:
程序
A)可立即执行 B)是一个源程序
C)经过编译即可执行 D)经过编译解释才能执行
(2)结构化程序由三种基本结构组成,三种基本结构组成的算法()//考点:
三种结构
A)可以完成任何复杂的任务B)只能完成部分复杂的任务
C)只能完成符合结构化的任务 D)只能完成一些简单的任务
(3)以下定义语句中正确的是()//赋值、指针
A)chara='A'b='B'; B)floata=b=10.0;
C)inta=10,*b=&a; D)float*a,b=&a;
(4)下列选项中,不能用作标识符的是()//标识符
A)_1234_B)_1_2C)int_2_D)2_int_
(5)有以下定义语句doublea,b;intw;longc;若各变量已正确赋值,则下列选项中不正确的表达式是()
A)a=a+b=b++B)w%(int)(a+b)
C)(c+w)%(int)aD)w=a==b;
(6)有以下程序//运算符的优先级、结合性
main()
{intm=3,n=4,x;
x=-m++;
x=x+8/++n;
printf(“%d\n”,x);
}
程序运行后的输出结果是()
A)3B)5C)-1D)-2
(7)有以下程序//++运算
main()
{chara='a',b;
printf(“%c,”,++a);
printf(“%c\n”,b=a++);
}
程序运行后的输出结果是()
A)b,bB)b,cC)a,bD)a,c
(8)有以下程序//各数整数的表示与输出
main()
{intm=0256,n=256;
printf(“%o%o\n”,m,n);
}
程序运行后的输出结果是()
A)02560400B)0256256C)256400D)400400
(9)有以下程序//输出控制符少的情况
main()
{inta=666,b=888;
printf(“%d\n”,a,b);}
程序运行后的输出结果是()
A)错误信息B)666C)888D)666,888
(10)有以下程序//循环、switch
main()
{inti;
for(i=0;i<3;i++)
switch(i)
{
case0:
printf(“%d”,i);
case2:
printf(“%d”,i);
default:
printf(“%d”,i);
}
}
程序运行后的输出结果是()
A)022111B)021021C)000122D)012
(11)若x和y为整型数,以下表达式中不能正确表示数学关系|x-y|<10的是()//表达式
A)abs(x-y)<10 B)x-y>-10&&x-y<10
C)(x-y)<-10||!
(y-x)>10 D)(x-y)*(x-y)<100
(12)有以下程序//if语句的嵌套配对
main()
{inta=3,b=4,c=5,d=2;
if(a>b)
if(b>c)
printf(“%d”,d+++1);
else
printf(“%d”,++d+1);
printf(“%d\n”,d);
}
程序运行后的输出结果是()
A)2B)3C)43D)44
(13)下列条件语句中,功能与其他语句不同的是()//if语句的条件
A)if(a)printf(“%d\n”,x);elseprintf(“%d\n”,y);
B)if(a==0)printf(“%d\n”,y);elseprintf(“%d\n”,x);
C)if(a!
=0)printf(“%d\n”,x);elseprintf(“%d\n”,y);
D)if(a==0)printf(“%d\n”,x);elseprintf(“%d\n”,y);
(14)有以下程序//循环、continue、break
main()
{inti=0,s=0;
for(;;)
{ if(i==3||i==5)continue;
if(i==6)break;
i++;
s+=i;
};
printf(“%d\n”,s);
}
程序运行后的输出结果是()
A)10B)13C)21D)程序进入死循环
(15)若变量已正确定义,要求程序段完成求5!
的计算,不能完成此操作的程序段是()//循环赋初位置问题
A)for(i=1,p=1;i<=5;i++)p*=i;
B)for(i=1;i<=5;i++){p=1;p*=i;}
C)i=1;p=1;while(i<=5){p*=i;i++;}
D)i=1;p=1;do{p*=i;i++;}while(i<=5);
(16)有以下程序//输入与输出
main()
{chara,b,c,d;
scanf(“%c,%c,%d,%d”,&a,&b,&c,&d);
printf(“%c,%c,%c,%c\n”,a,b,c,d);
}
若运行时从键盘上输入:
6,5,65,66<回车>。
则输出结果是()
A)6,5,A,BB)6,5,65,66C)6,5,6,5D)6,5,6,6
(17)以下能正确定义二维数组的是()//二维数组的定义
A)inta[][3]; B)inta[][3]={2*3};
C)inta[][3]={};D)inta[2][3]={{1},{2},{3,4}};
(18)有以下程序//循环的结束条件、函数的调用
intf(inta)
{returna%2;}
main()
{ints[8]={1,3,5,2,4,6},i,d=0;
for(i=0;f(s[i]);i++)d+=s[i];
printf(“%d\n”,d);
}
程序运行后的输出结果是()
A)9B)11C)19D)21
(19)若有以下说明和语句,intc[4][5],(*p)[5];p=c;能正确引用c数组元素的是()//二维数组的指针表示法//指向一维数组的指针
A)p+1 B)*(p+3) C)*(p+1)+3 D)*(p[0]+2)
(20)有以下程序 //指针的赋值操作
main()
{inta=7,b=8,*p,*q,*r;
p=&a;q=&b;
r=p;p=q;q=r;
printf(“%d,%d,%d,%d\n”,*p,*q,a,b);
}
程序运行后的输出结果是()
A)8,7,8,7B)7,8,7,8C)8,7,7,8D)7,8,8,7
(21)s1和s2已正确定义并分别指向两个字符串。
若要求:
当s1所指串大于s2所指串时,执行语句S;则以下选项中正确的是()//字符串大小的比较函数
A)if(s1>s2)S; B)if(strcmp(s1,s2))S;
C)if(strcmp(s2,s1)>0)S; D)if(strcmp(s1,s2)>0)S;
(22)设有定义语句//一维数组的指针表示法、指针运算
intx[6]={2,4,6,8,5,7},*p=x,i;
要求依次输出x数组6个元素中的值,不能完成此操作的语句是()
A)for(i=0;i<6;i++)printf(“%2d”,*(p++));
B)for(i=0;i<6;i++)printf(“%2d”,*(p+i));
C)for(i=0;i<6;i++)printf(“%2d”,*p++);
D)for(i=0;i<6;i++)printf(“%2d”,(*p)++);
(23)有以下程序//指针的赋值
#include
main()
{inta[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL;
*q=*(p+5);
printf(“%d%d\n”,*p,*q);
}
程序运行后的输出结果是()
A)运行后报错B)66 C)611D)510
(24)有以下定义和语句//一维数组的指针表示法、指针数组
inta[3][2]={1,2,3,4,5,6,},*p[3];
p[0]=a[1];
则*(p[0]+1)所代表的数组元素是()
A)a[0][1]B)a[1][0]C)a[1][1]D)a[1][2]
(25)有以下程序//二维字符串数组
main()
{charstr[][10]={“China”,”Beijing”},*p=str[0];
printf(“%s\n”,p+10);
}
程序运行后的输出结果是()
A)China B)BejingC)ngD)ing
(26)有以下程序//字符指针、字符串的输出
main()
{chars[]=“ABCD”,*p;
for(p=s+1;p
}
程序运行后的输出结果是()
A)ABCD B)A C)B D)BCD
BCD B C CD
CD C D D
D D
(27)在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则()//间接递归概念
A)称为函数的直接递归调用B)称为函数的间接递归调用
C)称为函数的循环调用 D)C语言中不允许这样的递归调用
(28)已有定义:
inti,a[10],*p;,则合法的赋值语句是()//数组与指针
A)p=100; B)p=a[5]; C)p=a[2]+2;D)p=a+2;
(29)以下叙述中正确的是()//局部变量、全局变量、生命期
A)局部变量说明为static存储类,其生存期将得到延长
B)全局变量说明为static存储类,其作用域将被扩大
C)任何存储类的变量在未赋初值时,其值都是不确定的
D)形参可以使用的存储类说明符与局部变量完全相同//形参不能用static
(30)设有定义语句:
charc1=92,c2=92;,则以下表达式中值为零的是()//位运算
A)c1^c2 B)c1&c2 C)~c2 D)c1|c2
(31)程序中对fun函数有如下说明 //各类指针、指向函数的指针等
void*fun();此说明的含义是()
A)fun函数无返回值
B)fun函数的返回值可以是任意的数据类型
C)fun函数的返回值是无值型的指针类型
D)指针fun指向一个函数,该函数无返回值
(32)有以下程序//字符指针、字符串的结束
main()
{chars[]=“Yes\n/No”,*ps=s;
puts(ps+4);
*(ps+4)=0;
puts(s);
}
程序运行后的输出结果是(选项D中的第一行是空行)()
A)n/No B)/No C)n/NO D)
Yes Yes Yes /No
/No /NoYes
(33)有以下程序//负数的补码表示
main()
{unsignedinta;
intb=-1;
a=b;
printf(“%u”,a);
}
程序运行后的输出结果是()
A)-1 B)65535 C)32767 D)-32768
(34)有以下程序//指针为形式参数、数组名为实际参数
voidfun(int*a,inti,intj)
{intt;
if(i {t=a[i];a[i]=a[j];a[j]=t; i++;j--; fun(a,i,j); } } main() {intx[]={2,6,1,8},i; fun(x,0,3); for(i=0;i<4;i++)printf(“%2d”,x[i]); printf(“\n”); } 程序运行后的输出结果是() A)1268 B)8621C)8162D)8612 (35)有以下说明和定义语句//结构体成员的各种引用方法 structstudent {intage;charnum[8];}; structstudentstu[3]={{20,”200401”},{21,”200402”},{10\9,”200403”}}; structstudent*p=stu; 以下选项中引用结构体变量成员的表达式错误的是() A)(p++)->num B)p->numC)(*p).numD)stu[3].age (36)有以下程序//一维数组、冒泡排序 main() {intx[]={1,3,5,7,2,4,6,0},i,j,k; for(i=0;i<3;i++) for(j=2;j>=i;j--) if(x[j+1]>x[j]){ k=x[j];x[j]=x[j+1];x[j+1]=k;} for(i=0;i<3;i++) for(j=4;j<7-i;j++) if(x[j+1]>x[j]){k=x[j];x[j]=x[j+1];x[j+1]=k;} for(i=0;i<3;i++) for(j=4;j<7-i;j++) if(x[j]>x[j+1]){k=x[j];x[j]=x[j+1];x[j+1]=k;} for(i=0;i<8;i++)printf(“%d”,x[i]); printf(“\n”); } 程序运行后的输出结果是: () A)75310246 B)01234567 C)76310462 D)13570246 (37)有如下程序//文件 #include main() {FILE *fp1; fp1=fopen(“f1.txt”,”w”); fprintf(fp1,”abc”); fclose(fp1); } 若文本文件f1.txt中原有内容为: good,则运行以上程序后文件f1.txt中的内容为() A)goodabc B)abcd C)abc D)abcgood 48~50.以下程序的功能是: 建立一个带有头结点的单向链表,并将存储在数组中的字符依次转储到链表的各个结点中,请从与下划线处号码对应的一组选若中选择出正确的选项。 #include structnode {chardata;structnode*next;}; (38) CreatList(char*s) {structnode*h,*p,*q); h=(structnode*)malloc(sizeof(structnode)); p=q=h; while(*s! ='\0') { p=(structnode*)malloc(sizeof(structnode)); p->data= (39) ; q->next=p; q= (40) ; s++; } p->next='\0'; returnh; } main() {charstr[]=“linklist”; structnode*head; head=CreatList(str); ... } (38)A)char* B)structnode C)structnode* D)char (39)A)*s B)s C)*s++ D)(*s)++ (40)A)p->next B)p C)sD)s->next 二、填空题 (1)以下程序段的输出结果是 11 。 inti=9; printf(“%o\n”,i); (2)以下程序运行后的输出结果是 252137 。 main() {inta,b,c; a=25; b=025; c=0x25; printf(“%d %d %d\n”,a,b,c); } (3)以下程序运行后的输出结果是 24 。 main() {intp[7]={11,13,14,15,16,17,18}; inti=0,j=0; while(i<7&&p[i]%2==1)j+=p[i++]; printf(“%d\n”,j); } (4)以下程序运行后的输出结果是 21 。 main() {intx=1,y=0,a=0,b=0; switch(x) {case1: switch(y) {case0: a++;break; case1: b++;break;} case2: a++;b++;break; } printf(“%d %d\n”,a,b); } (5)以下程序运行后的输出结果是 92 。 main() {inta[4][4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}}; inti=0,j=0,s=0; while(i++<4) { if(i==2||i==4)continue; j=0; do{s+=a[i][j];j++;}while(j<4); } printf(“%d\n”,s); } (6)以下程序运行后的输出结果是 gae 。 main() {chara[]=“Language”,b[]=“Programe”; char*p1,*p2;intk; p1=a;p2=b; for(k=0;k<=7;k++) if(*(p1+k)==*(p2+k))printf(“%c”,*(p1+k)); } (7)以下程序运行后的输出结果是 *2*4*6*8* 。 main() {chara[]=“123456789”,*p;inti=0; p=a; while(*p) {if(i%2==0)*p='*'; p++;i++; } puts(a); } (8)以下程序中,for循环体执行的次数是 4 。 #define N2 #define MN+1 #define KM+1*M/2 main() {inti; for(i=1;i {...} ... } (9)通过函数求f(x)的累加和,其中f(x)=x2+1 main() { printf(“Thesum=%d\n”,SunFun(10)); } SunFun(intn) { intx,s=0; for(x=0;x<=n;x++) s+=F( x ); returns; } F(intx) { return x*x+1 );} (10)以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。 请填空。 main() {inti,a[20],sum,count; sum=count=0; for(i=0;i<20;i++) scanf(“%d”, &a[i] ); fro(i=0;i<20;i++) {if(a>0) {count++; sum+= a[i] ; } } printf(“sum=%d,count=%d\n”,sum,count); } (11)以下程序中,函数sumColumM的功能是: 求出M行N列二维数组每列元素中的最小值,并计算它们的和值。 和值通过形参传回主函数输出。 请填空。 #define M2 #define N4 voidSumColumMin(inta[M][N],int*sum) {inti,j,k,s=0; for(i=0;i {k=0; for(j=1;j if(a[k][i]>a[j][i])k=j; s+= a[k][i] ; } *sum =s; } main() {intx[M][N]={3,2,5,1,4,1,8,3},s; SumColumMin( x,&s ); printf(“%d\n”,s); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 习题