现在的位置: 首页 > 综合 > 正文

C语言基础(二)

2013年12月04日 ⁄ 综合 ⁄ 共 2537字 ⁄ 字号 评论关闭

一、选择题(每小题2分,共10分)

(下在各小题,分别有一个或多个正确答案,请将所有正确答案的编号,填写在该小题题干后的括号内。错选或漏选均不得分)。

1、若定义:int a[2][3]0246810};以下描述正确的有( ACD

A*a+1)为元素6的地址 

这里a+1=a[1]的地址;*(a+1)的值是6,A正确。

B*a[1]+1)的值为2

8,B不正确

C**a+1+2的值为8

这里a+1是一个指针,指向的是a[1].  *(a+1)a[1]a[1]指向的是a[1][0].  **(a+1)6,28,故C正确;

Da[0]a相同   

因二者都是指针,指针的地址都是指向数组中的第一个元素的地址,故D正确。

Ea[1][2]的值为10

它是指第二行的第三个元素,为10,正确

2、对函数的正确使用方法描述( ACD  )。

A、用数组做函数参数时,必须在主调函数和被调函数中分别定义数组

B、实参数组元素和形参数组元素类型可以不一致

C、形参数组长度可以不指定    D、形参数组长度可以大于实参数组长度

E、数组名做参数属于值传递

3、对静态变量的正确描述( ABDE  

A、静态局部变量在静态存储区内分配单元(    

B、静态外部变量可以赋初值,也可以不赋初值

C、静态外部变量的作用与外部变量相同

D、静态局部变量在函数调用结束时,仍保存其值,不会随着消失。

E、静态局部变量只赋一次初值

4、下列描述正确的是(  A C)。

A、由main 函数及其参数argc*
argv[]
可以实现命令行方式

B、使用fclose关闭文件时,先释放文件指针,再写缓冲区数据到文件中

//先写缓冲区数据到文件中,再释放文件指针

C、字符数组并不要求它的最后一个字符是‘\0

//是的,以字符指针指向的字符串才要求,因为只有这样,才能知道字符串的长度,而在字符数组中,不用\0,一样可以知道到哪里是字符数组的结尾。

D、‘A’和“A”都是字符串常量   

E、若char*S=\ta\017bc”;则指针变量S指向的字符串所占的字节数是7

5、在缓冲文件系统中用于读写的函数有( ABD  

Aputchar ()    Bfread()  Crewind
()    D
purw()   Efseek()

二、程序阅读,并给出运行结果(共10分,每题5分)。

1main()

 unsigned a,b,x

   int n;

   a=0x763                       输出结果:

   n=6;

   b=a<<(12-n);

   x=(a>>n-2)^b;  //+,-,的优先级比<<,>>高。

   printf(“\nb=%x,\nx=%x”,b,x);

   

 

在用2个字节表示整数的系统中

结果为

d8c0

d8b6

在用4个字节表示整数的系统中

结果为

1d8c0

1d8b6

 

故以上两种结果都正确。

 

  (2) #include stdin.h

   struct m int x;

int *y;

              *p;

 int a [4]=1233-40100};

  struct m b [4]=10,&a[2],9,&a[3],8,&a[0],7,&a[1]'

  main()

  p=b;                输出结果:

  printf(“%d\n,++p-x;
//->
的优先级高于++,因此等于是++(p->x),11

  printf(“%d\n,(++p)-x;
//p
后移一个元素,其x值为9;

  printf(“%d\n,++(*p-y);

 //->的优先级高于*, 此时p已指向b[1],故*(p->y)a[3]100.自加后为101;

故输出结果为:

11

9

101

 

三、程序设计(共10分)

设在文件a.txt和文件b.txt中分别存有两个字符串,设计一个程序将这两个字符串按依序交叉的方式合并为一个字符串(例如“aaaaa”与“bbb”的合并结果为“abababaa”,而“bbb”与“aaaaa”的合作结果为“ bababaa”,)并将结果存入文件a.txt中。

【答案】

写程序时,可以分别读取a.txt文件和b.txt文件,注意(1),无论a文件先读完还是b文件先读完,程序都能作出适应性的判断。注意(2)把ab合并的结果,写到一个临时文件c中,最后把c的文件覆盖到a文件中,达到题意的要求。

#include<stdio.h>

main()

{

  FILE *fp,*fq,*fr;

  char ch;

  if((fp=fopen("a.txt","r+"))==NULL)

  { printf("cannot open file a.txt");

    exit(0);

}

  if((fq=fopen("b.txt","r"))==NULL)

  { printf("cannot open file b.txt");

     exit(0);

  }

   fr=fopen("c.txt","w+");

   while(!feof(fp))

   {

     ch=fgetc(fp);

  fputc(ch,fr);

  if(!feof(fq))

  {

    ch=fgetc(fq);

    fputc(ch,fr);

  }

 }

   while(!feof(fq))

   {

     ch=fgetc(fq);

  fputc(ch,fr);

   }

   rewind(fp);// 功 能: 将文件内部的位置指针重新指向一个流(数据流/文件)的开头

   rewind(fr);

   while(!feof(fr))

   {

     ch=fgetc(fr);

  fputc(ch,fp);

   }

    fclose(fp);  

  fclose(fq); 

   fclose(fr);

 }

 一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号码写在答题纸上。请注意注明题号。每小题1分,共计6分)

1、‘\t’表示什么?

①字符串常数  ②标识符  ③变量  ④字符常量

答案:④

抱歉!评论已关闭.