`
cppblogs
  • 浏览: 3008 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

二级C试题(2)

    博客分类:
  • C
阅读更多

1 . 一个C程序的执行是从___A____
A)  本程序的主函数开始,到主函数结束。
B)  本程序文件的第一个函数开始,到本程
      序文件的最后一个函数结束。
C)  本程序的主函数开始,到本程序文件的最后一个函数结束。
D)  本程序文件的第一个函数开始,到本程序主函数结束。


C语言没有输入输出语句,它通过调用系统库函数中的有关函数(如printf()和scanf()函数)实现数据的输入与输出



C程序的基本组成单位是 函数
这是学习C语言最基本的常识,怎么会是语句呢
C程序是由函数构成的。函数是C程序的基本组成单位。一个C源程序中仅有一个main()函数,除main函数之外可以有若干个其它的函数。每个函数实现某一特定的操作。因此,函数是C程序的基本单位。
 
  一个函数由两部分组成:

  函数的说明部分。包括函数名、函数类型、函数属性、函数参数(形式参数)名、形式参数类型。
 
  函数体,即{ }中的内容,

一般包括: 变量定义
执行部分

每个函数的结构如下:

函数名()

{

语句;

}
  函数的定义是相对独立的。主函数可在其它函数的定义之前,也可以在后,但程序的执行总是从主函数开始的。



设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是( B )
  (A) c=*p1+*p2;
  (B) p2=c;
  (C) p1=p2;
  (D) c=*p1*(*p2);
选B
p1 和p2 定义的是指针变量 c为字符变量
A项 *(取内容符) 将p1 p2指向的变量的值的和赋给c是可以的。
B项 c是字符变量 p2是指针变量 ,指针变量只能付地址 改为p2=&c是可以的。
C项  指针就是地址p1 和p2是可以相互赋值的。
D项  是取其内容运算不是指针运算,是对的

指针是不能相加的 ,没有意义的。只有大小比较和相减运算。因为地址在内存中是从小到大按直线排列的 所以是可以比较大小的
指针相减是相差多少位,它除以所占字节就是指针间元素的个数。


32. 若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是(      )
A. a, point, *&a             B. &*a , &a , *point  
C. *&point, *point, &a       D. &a , &*point  , point
D
&就是取地址
指针就是代表地址


若有以下定义,则对a数组元素的正确引用是_________.
 int a[5],*p=a;
 a)*&a[5]   b)a+2  c)*(p+5)  d)*(a+2)
答案是 D。
A项,由于 a[5] 已经超出数组外了,所以 *&a[5] 不是 数组元素。
B项,a+2 是a[2]的地址,不是数组元素。
C项,*(p+5)相当于a[5],已经超出数组范围,不是数组元素。
D项,正确,*(a+2)相当于 a[2]。


7.若有以下定义,则p+5表示_______.
  int  a[10],*p=a;
  a)元素a[5]的地址             b)元素a[5]的值
  c)元素a[6]的地址             d)元素a[6]的值
a是正确的。
p表示a[0]的地址。所以p+5表示a[5]的地址。
*(p+5)是a[5]的值。
注意第一个元素是a[0]即可。


7.若有说明语句
   char a[]="It is mine";
   char *p="It is mine";
  则以下不正确的叙述是________.
  a)a+1表示的是字符t的地址
  b)p指向另外的字符串时,字符串的长度不受限制
  c)p变量中存放的地址值可以改变
  d)a中只能存放10个字符
7: 答案b
char *p="It is mine"; 系统已经分配好内存,如果字符串的长度不受限制会造成指针溢出。



若有说明语句:double *p,a;,则能通过scanf语句正确给输入项读入数据的程序段是?
A.*p=&a;scanf("%lf",p);         D.p=&a;scanf("%lf",p);
A是错了.
如果是这些写
double a;
double* p=&a;
scanf("%lf",p);
是可以的,p它是一个指向double类型的指针,
*p=&a;
是错误的,你把一个指针赋给了*p,而*p是指针p指向的地址的值即a,是一个int型,不能保存指针的值



若有说明 int a=2;*p=&a,*q=p;则一下非法的赋值语句是?
A.p=q B.*p=*q C.a=*q D.q=a
D
a是整型数,
int *p,*q定义了指针,
p,q是指向整型的指针。
p取得a的地址,而q取得p的地址
p,q是指针(也就是一个地址),而*p和*q是这个指针指向的整型数值(存放在这个地址的值)。
A)把q的地址赋给p,则p和q完全一样了,都指向一个数2
B)把q中数据给p
c)把q中数据给a
d)a中数据是2,不能够给一个地址。除非*q=a;



若定义:int a=511,*b=&a;, 则printf("%d\n",*b);的输出结果为
这样些比较容易懂
int a=511;
int *b=&a;//b指向a
显而易见,输出结果即为a的值511

变量的指针,其含义是指该变量的什么?其含义是指变量的地址


(32)若有以下函数首部
  int fun(double x[10],int *n)
  则下面针对此函数声母语句中正确的是________。
  A)int fun(double x,int *n); B)int fun(double ,int);
  C)int fun(double*x,int n); D)int fun(double *,int*);
d



若有说明: int *p,m=5,n;以下正确的程序段是()
A)p=&n;
   scanf("%d",&p);
B)p=&n;
   scanf("%d",*p);
C)scanf("%d",&n);
   *p=n;
D)p=&n;
   *p=m;
D是正确的
A,B中 p是n的地址 那么如果要输入n 应该是scanf("%d", p);
C中 p还没定义 给*p赋值就是给一个没有开辟的地址赋值了
D是正确的 意思是p为n的地址,将p地址上的数变成m, 等价于n=m;


求编程c++:已知等比数列的第一项a=1,公比q=2.求满足前n项和小于100时的最大n
#include<iostream>
void main()
{inta,xiang,s,i;
xiang=1;
s=1;
for(i=0;i<100;i++)
{xiang=2*xiang;
s=s+xiang;
if(s>100) {cout<<i-1;return 0;}
}
}



在c语言中,运算对象必须是整型数的运算符是什么
还有所有的位运算符 !&  << >> ^ ~
以及取模运算符 %



(11)以下叙述中正确的是
A)C 程序中的注释只能出现在程序的开始位置和语句的后面
B)C 程序书写格式严格,要求一行内只能写一个语句
C)C 程序书写格式自由,一个语句可以写在多行上
D)用C 语言编写的程序只能放在一个程序文件中
#include<stdio.h>
int main()
{
int i,j,k;
i=1;j=2;k=3; /*三条语句在同一行*/

i  /*一条语句在四行*/
=

3;
printf("over");
return 0;
}

D呢?D 明显不对。

可以把一个程序分成几个文件来写(一个大规模的程序都是分成很多文件来写的)

比如。main函数在 main.c 中定义,main 中调用的函数我们在 hello.c 中定义。最后一块编译连接就可以了。

 

 

(1) 以下叙述中错误的是    (20064)

A. C语言源程序经编译后生成后缀为.obj的目标程序

B. C语言经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件

C.C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中

D. C语言的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令

解析:C语言程序编译时将每条可执行语句转换为二进制的机器指令,但非执行语句(如注释语句)不被编译。所以选项D错误。

答案:D

(2)C语言编写的代码    (20049)

A. 可立即执行                    B.是一个源程序

C. 经过编译即可执行              D.经过编译解释才能执行

解析:直接用C语言编写的代码是不可以立即执行的,必须通过编译、链接才可以运行,因此选项ACD不正确。所以用直接用C语言编写的代码只是一个源程序。

答案:B

(3) 以下说法中正确的是    (20034)

A. C语言比其他语言高级

B. C语言可以不用编译就能被计算机识别执行

C. C语言以接近英语国家的自然语言和数学语言作为语言的表达形式

D. C语言出现得最晚,具有其他语言的一切优点

解析:计算机语言分为机器语言、汇编语言和高级语言,C语言属于一种高级语言,但并不是说C语言比其他语言高级,选项A错误;C语言必须编译成目标代码才能执行,选项B错误;C语言出现于1972年至1973年之间,并不是出现得最晚的语言,选项D错误;高级语言类似于人类的自然语言和数学语言,所以选项C正确。

答案:C

(4) 以下叙述中正确的是    (20004)

A. C语言的源程序不必通过编译就可以直接运行

B. C语言中的每条可执行语句最终都将被转换成二进制的机器指令

C. C源程序经编译形成的二进制代码可以直接运行

D. C语言中的函数不可以单独进行编译

解析:高级语言编写的源程序必须经过编译程序编译转换成二进制的机器指令文件(目标文件*.obj),再经过链接程序将.obj文件与C语言提供的库函数链接起来,生成一个.exe可执行文件,只有可执行文件方能被计算机执行,选项AC错误;由于C程序是模块化程序,一个C程序可以由若干个源程序文件(分别进行编译的文件模块)组成,一个源程序文件可以由若干个函数和预处理命令等组成,选项D错误;C语言中的每条可执行语句最终都将被转换成二进制的机器指令为正确

 

    答案:B
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics