考试科目:C语言程序设计。
考试时间:90分钟。
c语言写入txt文件考生姓名:            准考证号:       
第一大题:判断正误题,请在试题前的括号中打“√”或“×”。(共30题,每题1.000分,合计30分。难题占10%,普通题占80%,容易题占10%。)
( 对 ) 1、  a-=7等价于a=a-7。
(对  ) 2、  printf函数中用到格式符%5s ,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按原字符长从左向右全部输出。
(错  ) 3、  当输入数值数据时,对于整型变量只能输入整型值;对于实型变量只能输入实型值。
(  错) 4、  若要表示if( a不等于0 )这一关系式,则能正确表示这一关系的表达式为if ( a<>0)
( 错 ) 5、  在for循环中使用break语句的目的是使流程跳出循环体,终止当前循环
( 对 ) 6、  若要表示if( a不等于0 )这一关系式,则能正确表示这一关系的表达式为if ( a)
( 错 ) 7、  Break语句只能用于循环结构中。
( 错 ) 8、  在循环语句的循环体中,continue语句的作用是继续执行continue语句之后的循环体
(对  ) 9、  switch语句中,可以不使用break语句;
(  错) 10、  char a[]="xyz",b[]={'x','y','z'};数组a和b的长度相同
( 对 ) 11、  int b;char c[10];,则正确的输入语句是scanf("%d%s",&b,c);
( 对 ) 12、  若定义int x[10];则Turbo C编译系统为该数组分配20个字节存储单元。
(对  ) 13、  循环语句中的continue语句的作用是结束整个循环
( 错 ) 14、  若定义int x[10];则Turbo C编译系统为该数组分配11个字节存储单元。
( 错 ) 15、  若定义int x[10];则Turbo C编译系统为该数组分配21个字节存储单元。
( 对 ) 16、  同数组的名字一样,函数的名字也是一种指针。
( 错 ) 17、  C语言中在定义数组时,一个数组的数组元素的数据类型可以不相同
(  ) 18、  同一函数内的变量,可以用相同的名字
( 对 ) 19、  递归调用也称为循环定义,即用其自身来定义自己的过程。
(对  ) 20、  用数组名作函数参数时传递的是数组的值。
( 错 ) 21、  C程序中,函数的定义和函数的调用均可以嵌套。
( 对 ) 22、  有以下语句
static int a[]={0,1,2,3,4},*p;
p=&a[1];
则表达式(*p)++执行后,指针p指向的元素值是2。
( 错 ) 23、  已知:int *p, a;则语句"p=&a; "中的运算符"&"的含义是位与运算
( 对 ) 24、  int n=0,*p=&n,**q=&p;则正确的赋值语句是q=p;
( 错 ) 25、  typedef struct { int n; char ch[8]; }PER; 则typedef struct是结构体类型
( 对 ) 26、  使用typedef
为固定长度的数组定义一个新的类型名
( 对 ) 27、  结构体数组名可以用作函数参数,发生函数调用时传递的是地址数据。
( 错 ) 28、  将C定义为文件型指针的是FILE c;
( 错 ) 29、  将C定义为文件型指针的是file c;
( 错 ) 30、  文件操作中 fopen 是必须的,而 fclose 则可省略。
第二大题:单项选择题,每题有且仅有一个正确答案。请在试题前的括号中写出答案选择。(共25题,每题2.000分,合计50分。难题占20%,普通题占60%,容易题占20%。)
( c ) 1、  下列哪个标识符是C语言合法的标识符
A、a*b
B、-xyz
C、ba2
D、5i
( C ) 2、  设int c=5和int a; a=2+(c+=c,c+8,++c), 则a=
A、15
B、14
C、13
D、16
( B ) 3、  以下标识符中,不能作为合法的C用户定义标识符的是
A、a3_b3
B、void
C、_123
D、abc
( B ) 4、  已知在ASCII字符集中,数字0的序号为48,下面程序的输出结果为
main()
{
char x,y;
x='0';y='9';
pirntf("%d,%d\n",x,y);
}
A、因输出格式不合法,输出错误信息
B、48,57
C、0,9
D、48,58
( A ) 5、  设有程序段
int  k = 10 ;
while ( k = 0 )  k = k - 1 ;
以下描述正确的是
A、循环体语句一次也不执行
B、循环是无限循环
C、while 循环语句执行十次
D、 循环体语句执行一次
( A ) 6、  以下程序的输出结果是
void main()
{
int a = 2,b = 5;
printf("a=%%%d,b=%%%d",a,b);
}
A、a=%2,b=%5 
B、a=2,b=5
C、a=%%d,b=%%d
D、a=%d,b=%d
( B ) 7、  有以下程序
main()
{
int a,b,d=25;
a = d/10 & (-1);
b = a && (-1);
printf("%d,%d\n",a,b);
}
程序运行后的输出结果是
A、6,1   
B、2,1
C、6,0
D、2,0
( D ) 8、  以下程序的输出结果是__________
void main()
{  int x=10,y=10;
printf("%d %d\n",x--,--y);
}
A、 10  10     
B、 9  9
C、9  10 
D、10  9
( D ) 9、  对两个数组a和b进行如下初始化
char  a[]="ABCDEF";
char  b[]={'A','B','C','D','E','F'};
则以下叙述正确的是
A、a与b数组完全相同
B、a与b长度相同
C、a和b中都存放字符串
D、a数组比b数组长度长
( B ) 10、  阅读下面程序,回答问题。
#include "stdio.h"
void main()
{
int i,j row,column,m;
static int array[3][3] = {{100,200,300},{28,72,-30},{-850,2,6}};
m = array[0][0];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(array[i][j]<m)
{
m = array[i][j];
计算二维数组的元素和
A、计算二维数组的元素和
B、求二维数组的最小值及其下标
C、对二维数组进行排序
D、求二维数组的最大值及其下标
(图片文件:C:\C语言2011-2012-2期末考试考
生端\picture\
if(array[i][j]<m)
{
m = array[i][j];
计算二维数组的元素和)
( D ) 11、  以下正确的声明是
A、int a[1][4]={1,2,3,4,5};
B、float x[3][]={{1},{2},{3}};
C、long b[2][3]={{1},{1,2},{1,2,3}};
D、double y[][3]={0};
( C ) 12、  以下程序的输出结果是_____
main()
{char str[12]={'s','t','r','i','n','g'};
printf("%d\n",strlen(str));
}
A、6
B、7
C、11
D、12
( A ) 13、  执行以下程序段后,s的值是
int a[]={5,3,7,2,1,5,4,10};
int s=0,k;
for(k=0;k<8;k+=2)
s+=*(a+k);
A、17
B、27
C、13
D、无定值
( B ) 14、  以下对一维数组a中的所有元素进行正确初始化的是
A、int a[10]==(0,0,0,0);
B、int a[10]={  };
C、int a[]={0};
D、int a[10]={10*2};
( B ) 15、  以下程序输出的结果是(  )。
#include <stdio.h>
int func(int a,int b)
{return(a+b);}
main( )
{int x=2,y=5,z=8,r;
r=func(func(x,y),z);
printf("%d\n",r);
} 
A、12
B、13
C、14
D、15
( A ) 16、  以下对C语言函数的描述中,正确的是
A、C程序由一个或一个以上的函数组成
B、C函数既可以嵌套定义又可以递归调用
C、函数必须有返回值,否则不能使用函数
D、C程序中调用关系的所有函数必须放在同一个程序文件中
(  ) 17、  下面程序运行的结果为:
#include<stdio.h>
void swap(int a,int b)
{
int t;
t=a;a=b;b=t;
}
main()
{
int m=3,n=4;
L1:
printf("The old:m=%d,n=%d\n",m,n);
swap(m,n);
L2:Printf("The new:m=%d,n=%d\n",m,n);
}
A、L1:3,4      L2:3,4
B、L1:m=3,n=4    L2: m=3,n=4
C、L1:3,4    L2:4,3
D、L1:m=3,n=4  L2:m=4,n=3
(图片文件:C:\C语言2011-2012-2期末考试考生端\picture\=%d\n",m,n);
}
(  ) 18、  读程序,回答问题。
#include <stdio.h>
#include <string.h>
void main(int argc,char *argv[] )
{
int i=1,n=0;
while(i<argc)
{
n = n+strlen(argv[i]);
i++;
}
printf("%d\n",n);
}
若该程序生成的可执行文件名为,运行时输入命令行:
2-3
A、3
B、5
C、7
D、11
(图片文件:C:\C语言2011-2012-2期末考试考生端\picture\傻目芍葱形募?-4.exe,运行时输入命令行:
2-3)
(  ) 19、  下面程序的输出是
# include <stdio.h>
void test(int *u,int v)
{  *u=*u+v;
;
}
main()
{  int m=3,n=6;
test(&m,n);
printf("%d  %d", m,n);//输出结果1
test(&n,m);
printf("%d  %d", m,n);// 输出结果2}
输出结果2是:
A、15  9
B、6  15
C、9  15
D、15  6
(图片文件:C:\C语言2011-2012-2期末考试考生端\picture\;// 输出结果2}
输出结果2是:
(D  ) 20、  若有以下定义和语句,则值为12的表达式是_________。struct wc{  int a;int *b;}*p;
int x0[]={11,12},x1[]={31,32}; 
static s
truct wc x[2]={100,x0,300,x1};
p=x;
A、*++p->b
B、++p->a
C、p->b
D、*(p++)->b
( D ) 21、  根据下面的结构体类型定义和数组定义,值等于'A'的表达式是        。
struct season
{char name[10];
int day;
};
struct season s[4]={"Spring",90,"Summer",91,"Autumn",92,"Winter",92};
A、s[3].name[0]
B、s[3].name
C、s[2].name
D、s[2].name[0]
( C ) 22、  以下程序的运行结果为_________
#define PT 3.5
#define S(x)  PT*x*x
main()
{
int a=1,b=2;
printf("%4.1f\n",S(a+b));
}
A、14.0
B、31.5
C、7.5
D、10.5
( B ) 23、  若文本文件中的内容为"ABCD"4个字符,fp指向以读方式打开的,则以下语句序列正常执行后,输出结果为
fseek(fp, 0, SEEK_END);
i=ftell(fp);
printf("%d", i);
A、0
B、4
C、1
D、-1
( A ) 24、  设以下程序的文件名为e8-12.c。
#include<stdio.h>
#include<string.h>
main(int argc, char *argv[])
{char ch;
FILE *fp1, *fp2;
if(argc!=3)
{printf(" error.\n");}
if((fp1=fopen(argv[1], "r"))==NULL)
{printf(" error.\n");}
if((fp2=fopen(argv[2], "w") ↙
A、 ↙
B、↙
C、↙
D、e8-12↙
(图片文件:C:\C语言2011-2012-2期末考试考生端\picture\printf(" error.\n");}
if((fp2=fopen(argv[2], "w") ↙)
( C ) 25、  当已存在一个文件时,执行函数fopen ("", "r+")的功能是
A、打开文件,清除原有的内容
B、打开文件,只能读取原有内容
C、打开文件,可以读取和写入新的内容
D、打开文件,只能写入新的内容
第三大题:填空题。请在试题中的空格处写出答案。(共10题,每题2.000分,合计20分。难题占10%,普通题占70%,容易题占20%。)
1、  以下程序的结果为
main()
{
unsigned int a=3, b=10;
printf("%d\n",a左移2|b右移1); /*输出结果_14_ */
printf("%d\n",a左移2&b右移1); /*输出结果_0 */
}
2、  选择程序的运行结果    。
main ( )
{  int x=1, y=2, z, a, b, c, d;
z = ++x||++y;
printf("x=%d\n", x);   
printf("y=%d\n", y); /*输出结果y=2_(三个字符) */
a=-1;    b=-2;    c=++a&&b++;
printf("b=%d\n", b); /*输出结果_b=-2___ (三个字符)*/    }
3、  表示"整数x的值大于5"时逻辑值为"真"的表达式是_x!=5_____,逻辑值为"假"的表达式是___x==5_______。(注:逻辑关系一律用文字描述)
4、  已知字母A的ASCII码为十进制数65,且设ch为字符型变量,则表达式ch='A'-'4'+'9'的值为F___(一个字符常量);若定义:char c='\72';则变量c中包含的字符个数为1_(数字)。
5、  已知float x=4.3,int y;执行语句y=(int)x后,x为_int__型
(填写小写英文字母),且4_(填写阿拉伯数字);
6、  下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。
  请填空。
  main()
  { int i,a[20],sun,count;
  suum=count=0;
  for(i=0;i小于20;i++) scanf("%d", _&a[i]____);
  { if(a[i]大于0)
  { count++;
  sum+=_a[i]___;
  }
  }
  printf("sum=%d,count=%d\n",sum,count);
  }
7、  求字符串中字符的个数
char *p="Hello World";
int num=0,k=0;
while(*(p+k)!=_0___)
{
num=_num+1____;
k++;
}
printf("num=%d",num);
8、  求矩阵a的两条对角线的元素之和。请填空。
#include"stdio.h"
void main()
{
int a[3][3]={1,3,6,7,9,11,14,15,17};
int sum1=0,sum2=0,i,j;
for(i=0;i小于3;i++)
sum1+= _______;
for(i=0;i小3;i++)
for(j=0;j小3;j++ )
if((i+j)==2)
sum2+=_______;
printf("sum1=%d,sum2=d\n",sum1,sum2);
}
9、  以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。例如,输入字符串:abc123edf456gh,执行程序后输出:123456。
  #include "stdio.h"
  #include "string.h"
  main()
  { char s[80], d[80]; int i,j;
  gets(s);
  for(i=j=0;s[i]!='\0';i++)
  if(s[i]大于等于'0'_&&_s[i]小于等于'9') { d[j]=s[i]; j++; }
  d[j]=_\0___;
  puts(d);
  }
10、  在n行n列的矩阵中,每行都有最大的数,本程序求这n个最大数中的最小一个。
#include "stdio.h"
#define N 100
int a[N][N]
void main()
{int row,col,max,min,n;
/*输入合法n(小于100),和输入n*n个整数到数组a的代码略*/
for(row=0;row小于n;row++){
for(max=a[row][0],col=l;col小于n;col++)
if(max小于a[row][col]) max=a[row][col];
if(__row==0____) min=max;
else if (min大于max) _min=max______;
}
printf("the min of max numbers if %d\n",min);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。