复习题及答案.docx
- 文档编号:10420397
- 上传时间:2023-02-11
- 格式:DOCX
- 页数:12
- 大小:19.01KB
复习题及答案.docx
《复习题及答案.docx》由会员分享,可在线阅读,更多相关《复习题及答案.docx(12页珍藏版)》请在冰豆网上搜索。
复习题及答案
一、选择题(每小题1分,共30分)
1.以下叙述正确的是()。
A)在C程序中,main函数必须位于程序的最前面
B)C程序的每行中只能写一条语句
C)C语言本身没有输入输出语句
D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误
2.一个C语言程序的基本单位是()
A)函数B)子程序C)过程D)命令
3.一个C语言的语句必须使用的结束符号是()
A),B)。
C):
D);
4.下列选项中,可以作为C语言标识符的是()
A)3stuB)#stuC)stu3D)stu.3
5.设有说明:
charw;intx;floaty;doublez;则表达式w*x+z-y值的数据类型为
A)floatB)charC)intD)double
6.下列叙述正确的是()
A)赋值语句中的“=”是表示左边变量等于右边表达式
B)赋值语句中左边的变量值不一定等于右边表达式的值
C)赋值语句是由赋值表达式加上分号构成的
D)x+=y;不是赋值语句
7.若x为int型变量,则执行x=6;x+=x-=x*x;语句后,x的值为()
A)36B)-60C)60D)-24
8.若有a=2,b=3,c=4,则表达式a==3和a=3的值分别为()
A)0和0B)1和3C)3和3D)0和3
9.使条件表达式(year%4==0&&year%100!
=0)||(year%400==0)结果为假的值是()
A)1950B)2000C)1996D)2004
10.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为()。
x=(i=4,j=16,k=32)
A)4B)16C)32D)52
11.逻辑运算符两侧运算对象的数据类型()
A)只能是0和1B)只能是0或非0正数
C)只能是整型或字符型数据D)可以是任何类型的数据
12.若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”。
则以下不能满足要求的表达式是()
A)A%2==1B)!
(A%2==0)C)!
(A%2)D)A%2
13.语句while(!
E);中的表达式!
E等价于()。
A)E==0B)E!
=1C)E!
=0D)E==1
14.下面程序段的运行结果是()
a=1;b=2;c=2
while(a
printf(%d,%d,%d”,a,b,c);
A)1,2,0B)2,1,0C)1,2,1D)2,1,1
15.以下程序段()
x=-1;
do{
x=x*x;
}
while(!
x);
A)是死循环B)循环执行二次
C)循环执行一次D)有语法错误
16.以下正确的函数原形说明语句是()
A)voidfun(intx);B)floatfun(voidy);
C)doublefun(x);D)int(charch);
17.在C语言中,形参必须是()
A)常量B)变量C.)数值D)表达式
18.C语言的函数()
A)可以嵌套调用,不能递归调用B)可以嵌套定义
C)既可以嵌套调用,也可以递归调用D)不可以嵌套调用
19.合法的数组定义是()
A)inta[]=”string”;B)inta[5]={0,1,2,3,4,5};
C)chara=”string”;D)chara[]={0,1,2,3,4,5};
20.表达式strlen(“string”)+strlen(“C”)的运算结果为()
A)9B)10C)7D)8
21.若有定义和语句:
chars[10];s=“abcd”;printf(“%s\n”,s);则结果是()(以下u代表空格)
A)abcdB)a
C)abcduuuuuD)编译不通过
22.若已定义:
inta[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是()
A)p+1B)a+1C)a++D)++p
23.若有intx,*pb;则正确的赋值表达式是
A)pb=&xB)pb=x;C)*pb=&x;D)*pb=*x
24.设有程序段:
chars[]=”china”;char*p;p=s;则下面叙述正确的是()
A)s和p完全相同
B)数组s中的内容和指针变量p中的内容相等
C)*p与s[0]相等
D)s数组长度和p所指向的字符串长度相等
25.下面对结构变量的叙述中错误的是()
A)相同类型的结构变量间可以相互赋值
B)通过结构变量,可以任意引用它的成员
C)结构变量中某个成员与这个成员类型相同的简单变量间可相互赋值
D)结构变量与简单变量间可以赋值
26.若有结构类型定义如下:
structbd
{intx;
floaty;
}r,*p=&r;
那么,对r中的成员x的正确引用是()
A)(*p).r.xB)(*p).xC)p->r.xD)p.r.x
27.在一个函数里不能说明()
A)全局变量B)静态变量
C)局部变量D)静态局部变量
28.以下关于文件包含的说法中错误的是()
A)文件包含是指一个源文件可以将另一个源文件的全部内容包含进来。
B)文件包含处理命令的格式为
#include“包含文件名”或#include<包含文件名>
C)一条包含命令可以指定多个被包含文件
D)文件包含可以嵌套,即被包含文件中又包含另一个文件。
29.下列语句中,将C定义为文件型指针的是()
A)FILEc;B)FILE*c;
C)filec;D)file*c;
30.下面对typedef的叙述中不正确的是()
A)用typedef可以定义各种类型名,但不能用来定义变量
B)用typedef可以增加新类型
C)用typedef?
?
是将已存在的类型用一个新的标识符来代表
D)使用typedef有利于程序的通用和移植
二、写出下列程序的运行结果(每小题3分,共24分)
1.以下程序的输出结果是。
#include"stdio.h"
main()
{intx=3;
switch(x)
{case1:
case2:
printf("x<3\n");
case3:
printf("x=3\n");
case4:
case5:
printf("x>3\n");break;
default:
printf("xunknow\n");
}
}
2.以下程序的输出结果是。
#include
voidmain()
{inti,j,x=0;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
{if(j%2)continue;
x++;
}
printf(“x=%d\n”,x);
}
3.以下程序的输出结果是。
#include"stdio.h"
staticintx=20;
voidf1(intx)
{x+=10;
printf(“%d…f1()\n”,x);
}
voidf2()
{x+=10;
printf(“%d…f2()\n”,x);
}
voidmain()
{intx=10;
f1(x);
f2();
printf(“%d…main()\n”,x);
}
4.以下程序的输出结果是。
#include
#defineS‘’
voidmain()
{intn=5,i,j;
for(i=1;i<=n;i++)
{for(j=1;j<=10;j++)putchar(S);
for(j=1;j<=n-i;j++)putchar(S);
for(j=1;j<=i;j++){putchar(‘*’);}
putchar(‘\n’);
}
}
5.以下程序的输出结果是。
#include
voidmain()
{staticinta[]={5,7,9};
int*p=a;
++p;
printf(“%d%d%d%d\n”,*a,*(a+2),*(p+1),p[1]);
}
6.下面程序的运行结果是()
#include“stdio.h”
voidmain()
{chara[]=“ab12cd34ef”;
inti,j;
for(i=j=0;a[i];i++)
if(a[i]>=’a’&&a[i]<=’z’)a[j++]=a[i];
a[j]=’\0’;
printf(“%s\n”,a);
}
7.下面程序的运行结果是()
#include“stdio.h”
voidmain()
{int*p,i;
i=100;
p=&i;
i=*p+10;
printf(“%d%d\n”,I,*p);
}
8.下面程序的运行结果是( )
voidmain()
{
structcmplx{intx;
inty;
}cnum[2]={1,3,2,7};
printf(“%d\n”,cnum[0].y/cnum[0].x*cnum[1].x);
}
三、程序填空:
(根据题意,将空缺的语句补上。
每空3分,共30分)
1.以下程序对输入的两个整数,按从大到小顺序输出。
请填空。
main()
{intx,y,z;
scanf(“%d,%d”,&x,&y);
if(
(1))
{z=x;
(2)}
printf(“%d,%d\n”,x,y);
}
2..以下程序完成的功能是求1+2+3+…+10的累加和,并进行累加和的输出打印。
变量sum是存放累加值的。
#include"stdio.h"
main()
{(3)
i=1,sum=0;
for(;i<=10;)
{sum+=i;
(4)}
printf("%d\n",sum);
}
3.下面程序的功能是用函数递归调用的方法定义函数intf(intm,intn)求mn。
请填空。
intf(intm,intn)
{ints;
if((5))s=1;
elses=(6);
return(s)
}
4.以下程序的功能是求数组num中小于零的数据之和。
请填空。
#include
voidmain()
{intnum[20]={10,20,1,-20,23,-21,2,-2,-2,11,-21,22,12,-2,-234,-90,22,90,-45,20};
intsum=0,i;
for(i=0;i<=19;i++)
{if((7))sum=(8);}
printf(“sum=%d”,sum);
}
5.以下程序将数组a中的数据按逆序存放,请填空。
#defineM8
main()
{inta[M],i,j,t;
for(i=0;i i=0;j=M-1; while(i { t=*(a+i);(9);*((10))=t; i++;j--; } for(i=0;i } 四、编写程序(第1题7分,第2题9分,共16分) 1.编一个程序,判断输入的整数x是否既是5又是7的整数倍。 若是,则输出yes,否则输出no。 2.编一个程序,要求: 输入整数n,求整数n的各位数字的平方和并输出。 (如输入数是n=234,则计算2*2+3*3+4*4=29并输出) 一、选择题(每小题1分,共30分) CADCDCBDACDCADCABCDCDCACDBACBB 二、写出下列程序的运行结果(每小题3分,共24分) 1. x=3 x>3 2. x=4 3. 20…f1() 30…f2() 10…main() 4. * ** *** **** ***** 5. 5999 6.abcdef 7.2020 8.6 三、程序填空: (根据题意,将空缺的语句补上。 每空3分,共30分) (1)x (2)x=y;y=z; (3)inti,sum; (4)printf(“%d”,sum); (5)n==0 (6)m*f(m,n-1) (7)num[i]<0 (8)sum+num[i] (9)*(a+i)=*(a+j) (10)a+i 四、编程题(第1题8分,第2题8分) 1.#include voidmain() {intx; scanf(“%d”,&x); if(x%5==0&&x%7==0)printf(“yes”); elseprintf(“no”); } 2.#include void main() {intn,sum=0.0; while(n! =0) { sum=sum+n%10; n=n/10; } printf(“\nsum=%d”,sum); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 复习题 答案