C语言期末第一弹
Posted 苏师19大数据
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言期末第一弹相关的知识,希望对你有一定的参考价值。
选择题
1
结构体类型的定义允许嵌套是指_______。
A.定义多个结构体型
C.结构体型可以派生
B.成员可以重名
D.持续稳定
点击空白处查看答案
D
2
使用共用体变量,不可以_______。
A.同时访问所有成员
C.简化程序设计
B.进行动态管理
D.节省存储空间
点击空白处查看答案
A
3
函数 rewind 的作用是_______。
A.将位置指针指向文件中所要求的特定位置
C.使位置指针重新返回文件的开头
B.使位置指针自动移至下一个字符位置
D.使位置指针指向文件的末尾
点击空白处查看答案
C
4
fwrite函数的一般调用形式是_______。
A.fwrite(buffer,count,size,fp);
C.fwrite(buffer,size,count.fp);
B.fwrite(fp,countsize,buffer);
D.fwrite(fp,size,countbuffer);
点击空白处查看答案
C
5
下列运算符中,不属于关系运算符的是_____。
A.>=
C.>
B.!
D.<
点击空白处查看答案
B
!表示“非”,为逻辑运算符
6
若给定条件表达式(M)?(a++):(a--),则其中表达式M_______。
A.和(M!=1)等价
C.和(M!=0)等价
B.和(M==1)等价
D.和(M==0)等价
点击空白处查看答案
C
由题干中表达式知,若M不等于0,则表达式为真
7
以下叙述中正确的是_______。
A.在以下定义中C R是称为“宏名”的标识符
#defineC R 045
C.宏替换不占用运行时间,只占编译时间
B.在程序的一行上可以出现多个有效的预处理命令行
D.使用带参的宏时,参数的类型应与宏定义时的一致
点击空白处查看答案
C
8
执行下列语句后,a和b的值分别为_______。
int a,b;
a=1+'a';
b=2+7%-4-'A';
A.-63,-64
C.98,-60
B.79,78
D.1,-60
点击空白处查看答案
C
字符a的ASCII是97,a=97+1
字符A的ASCII是65,7%(-4)=3,b=3+2-65=-60
9
以下不符合C语言语法的赋值语句是_______。
A.k=2*4,k*4;
C.y=float(j);
B.j++;
D.j=j=5;
点击空白处查看答案
C
应该为y=(float)j
10
经过以下语句定义后,表达式z+=x>y?++x:++y的值为_______。
int x=1,y=2,z=3;
A.6
C.2
B.3
D.5
点击空白处查看答案
A
x>y为假,输出++y=3
z=z+y=3+3=6
11
以下叙述不正确的是_______。
A.C程序的基本组成单位是函数
C.一个C源程序可由一个或多个函数组成
B.在C程序中,注释说明只能位于一条语句的后面
D.一个C源程序必须包含一个main函数
点击空白处查看答案
B
12
下列运算符中是C语言关系运算符的是_______。
A.!
C.!=
B.&
D.~
点击空白处查看答案
C
!为逻辑运算符
&、~为位运算符
13
若变量已正确说明为float类型,要通过以下赋值语句给a赋予10、b赋予22、c赋予33,
以下不正确的输入形式是_______。
scanf("%f %f %f", &a, &b, &c);
A.10.0,22.0,33.0
C.10 22
30
B.10.0
22.0 33.0
D.10
22
30
点击空白处查看答案
A
14
下列语句的结果是_______。
main()
{ int j;
j=3;
printf("%d,",++j);
printf("%d",j++);}
A.3,4
C.4,3
B.4,4
D.3,3
点击空白处查看答案
B
j++为先计算,再自加
++j是先自加,再计算
15
若变量已正确说明,要求用以下语句给c1赋予字符%、给c2赋予字符#、给a赋予2.0、给b赋予4.0,则正确的输入形式是_______。
scanf("%f%c%f%c", &a, &c1, &b, &c2);
A.2.0%4.0#
C.2.0 % 4.0 #
B.2% 4#
D.2 % 4 #
点击空白处查看答案
A
空格也会被%c接收
16
以下程序的输出结果是_______。
main()
{ int x = 10, y = 3;
printf(“%d\n” , y = x / y); }
A.不确定的值
C.1
B.0
D.3
点击空白处查看答案
D
17
已有语句double x;scanf("%lf",&x);
则不可以赋值给x变量的常量是_______。
A.100000
C.5.8
B.123
D."abc"
点击空白处查看答案
D
%lf:双精度浮点型数据
18
有以下程序
main()
{ int a=5, b=4, c=3, d=2;
if(a>b>c)
printf("%d\n",d);
else if((c-1 >= d) == 1)
printf("%d\n",d+1);
else printf("%d\n",d+2); }
执行后输出结果是_______。
A.2
C.编译时出错
B.4
D.3
点击空白处查看答案
D
a>b为真 输出1,1>c为假
c-1>=d为真 1==1为真
输出d+1=3
19
选择结构中的条件与循环结构中循环成立的条件,在写法上可以是任一表达式,但其值只能被判断为"真"或"假"。那么下面哪个数作为逻辑"假"值_______。
A.非零的数
C.-1
B.1
D.0
点击空白处查看答案
D
20
为表示关系x≥y≥z,应使用的表达式是_______。
A.(x>=y)&&(y>=z)
C.(x>=y)AND(y>=z)
B.(x>=y>=z)
D.(x>=y)&(y>=z)
点击空白处查看答案
A
21
在C语言中,if语句后的一对原括号中,用以决定分支的流程的表达式_______。
A.只能用关系表达式
C.只能用逻辑表达式或关系表达式
B.只能用逻辑表达式
D.可用任意表达式
点击空白处查看答案
D
22
在以下给出的表达式中,与 do--while(E)语句中的(E)不等价的表达式是_______。
A.(E==0)
C.(!E==0)
B.(E>0||E<0)
D.(E!=0)
点击空白处查看答案
A
题干中E=0为假
23
以下程序段的输出结果是_______。
int n=10;
while(n>7)
{ n--; printf("%d", n ); }
A.1098
C.987
B.10987
D.9876
点击空白处查看答案
C
24
有以下程序段
int n=0,p;
do { scanf("%d",&p); n++; }
while(p!=12345&&n<3);
此处do-while循环的结束条件是_______。
A.p的值等于12345并且n的值大于等于3
C.p的值不等于12345或者n的值小于3
B.p的值不等于12345并且n的值小于3
D.p的值等于12345或者n的值大于等于3
点击空白处查看答案
D
25
以下程序段的输出结果为_______。
char c[]="abc"; int i=0;
do ; while(c[i++]!='\0');printf("%d",i-1);
A.ab
C.abc
B.3
D.2
点击空白处查看答案
B
26
在C语言中,一维数组的定义方式为:
类型说明符 数组名_______。
A.[整型常量]和[常量表达式]
C.[常量表达式]
B.[整型常量]或[整型表达式]
D.[整型表达式]
点击空白处查看答案
A
27
若想将一个字符数组a的内容存入另一个字符数组b中,下列正确的是_______。
A.strcat(b,a)
C.strcpy(b,a)
B.b=a
D.strcpy(a,b)
点击空白处查看答案
C
strcat为连接函数
28
若有说明int a[3][4]={0};
则下面正确的叙述是_______。
A.数组a中每个元素均可得到初值0
C.此说明语句不正确
B.只有元素a[0][0]可得到初值0
D.数组a中各元素都可得到初值,但其值不一定为0
点击空白处查看答案
A
29
以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是_______。
A.char s[10];
strcpy(s,"abcdefg");
C.char t[]="abcdefg",
*s=t;
B.char s[10]="abcdefg";
D.char s[10];
s="abcdefg";
点击空白处查看答案
D
30
以下程序的输出结果是_______。
main()
{ int i,x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++) printf("%d,", x[i][2-i]);}
A.1,5,9,
C.1,4,7,
B.3,6,9,
D.3,5,7,
点击空白处查看答案
D
在草稿纸上列出数组即可
31
在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是_______。
A.单向值传递
B.由实参传给形参,再由形参传回实参
D.传递方式由用户指定
点击空白处查看答案
A
32
以下不正确的说法是:C语言规定_______。
A.实参可以为任何类型
C.形参应与其对应的实参类型一致
B.形参可以是常量变量或表达式
D.实参可以是常量变量或表达式
点击空白处查看答案
B
33
以下程序的输出结果是_______。
main()
{ int k=4,m=1, p;
p=func(k, m); printf("%d,", p );
p=func(k, m); printf("%d\n", p ); }
func( int a, int b)
{ static int m=0,i=2;
i+=m+1; m=i+a+b;return (m); }
A.8,20
C.8,8
B.8,17
D.8,16
点击空白处查看答案
B
i+=m+1=3 m=i+a+b=8
(m和i是静态变量,还是上次退出时的值)
i+=m+1=12 m=i+a+b=17
34
下列程序运行结果为_______。
#define P 3
#define S(a) P*a*a
main()
{int ar; ar=S(3+5);printf("\n%d",ar); }
A.192
C.29
B.25
D.27
点击空白处查看答案
C
ar=3*3+5*3+5
35
以下说法不正确的是_______。
A.在一个函数内部,可以在复合语句中定义变量,这些变量只在复合语句中有效
C.形式参数是局部变量
B.主函数main中定义的变量在整个文件或程序中有效
D.不同函数中,可以使用相同名字的变量
点击空白处查看答案
B
36
以下程序的输出结果是_______。
main()
{ int a[]= {2, 4, 6, 8}, *p=a, i;
for(i=0; i<4; i++) a[i] = *p++;printf("%d\n", a[2]); }
A.4
C.2
B.8
D.6
点击空白处查看答案
D
37
若有以下说明和定义,则对fun函数的正确调用语句是_______。
main()
{ int (*a)(int), *b(), w[10], c; …}fun(int *c ) { … }
A.a=fun;(*a)(c);
C.fun(b);
B.b=fun; *b(w);
D.a=fun;(*a)(w);
点击空白处查看答案
D
38
下面判断正确的是_______。
A.char *s="china";
等价于char *s;s="china"
C.char *a="china";
等价于
char *a;
*a="china"
B.char str[10]={"china"};等价于char str[10];str[]={"china"}
D.char c[4]="abc",
d[4]="abc";
等价于
char c[4]=d[4]="abc"
点击空白处查看答案
A
39
若有double *p,x[10];int i=5;使指针变量p指向元素x[5]的语句为_______。
A.p=x
C.p=&(x+i)
B.p=x[i]
D.p=&x[i]
点击空白处查看答案
D
40
若有int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则输出结果不为5的语句为_______。
A.printf("%d",*p[5])
C.printf("%d",*(p+5))
B.printf("%d",p[5])
D.printf("%d",*(a+5))
点击空白处查看答案
A
程序设计
01
功能:将字符串中的大写字母转换为对应的小写字母,其它字符不变。
#include "stdio.h"
void change(char str[])
{
/*********Begin**********/
/********** End **********/
}
#include "string.h"
int main()
{
void change();
char str[40];
gets(str);
change(str);
puts(str);
}
点击空白处查看答案
【参考代码】
int i;
for(i=0;str[i]!='\0';i++)
if(str[i]>='A' && str[i]<='Z')
str[i]=str[i]+32;
程序改错
01
功能:根据整型形参n,计算某一数据项的值。
A[1]=1, A[2]=1/(1 + A[1]), A[3]=1/(1 + A[2]), …,A[n]=1/(1 + A[n-1])
例如:若 n=10,则应输出:a10=0.617977。
#include "conio.h"
#include "stdio.h"
/**********ERROR**********/
int fun ( int n )
{
float A=1; int i;
/**********ERROR**********/
for (i=2; i<n; i++)
/**********ERROR**********/
A = 1.0\(1+A);
return A ;
}
int main()
{
int n ;
printf("\nPlease enter n: ") ;
scanf("%d", &n ) ;
printf("A%d=%f\n", n, fun(n) ) ;
}
点击空白处查看答案
【改错1】
【参考答案】
float fun(int n)
double fun(int n)
【改错2】
【参考答案】
for (i=2; i<=n; i++)
for (i=2; i<n+1; i++)
【改错3】
【参考答案】
A = 1.0/(1+A);
A=1.0/(A+1);
A=1.0/(1.0+A);
程序填空
01
功能:产生并输出如下形式的方阵。
1 2 2 2 2 2 1
3 1 2 2 2 1 4
3 3 1 2 1 4 4
3 3 3 1 4 4 4
3 3 1 5 1 4 4
3 1 5 5 5 1 4
1 5 5 5 5 5 1
#include <stdio.h>
int main()
{
int a[7][7];
int i,j;
for (i=0;i<7;i++)
for (j=0;j<7;j++)
{
/**********FILL**********/
if (i==j_____i+j==6) a[i][j]=1;
/**********FILL**********/
else if (i<j&&i+j<6) a[i][j]=_____;
else if (i>j&&i+j<6) a[i][j]=3;
else if (i<j&&i+j>6) a[i][j]=4;
else a[i][j]=5;
}
for (i=0;i<7;i++)
{
for (j=0;j<7;j++)
printf("%4d",a[i][j]);
/**********FILL**********/
putchar(_____);
}
}
点击空白处查看答案
【空 1 】
【参考答案】
||
【空 2 】
【参考答案】
2
【空 3 】
【参考答案】
'\n'
以上是关于C语言期末第一弹的主要内容,如果未能解决你的问题,请参考以下文章