资源描述
━━━━━━━━━━━━━━━
一、填空 共10题 (共计10分)
━━━━━━━━━━━━━━━
第1题 (1.0分)
已知:int i=8,j=10,m,n;m=++i;n=j++;问语句执行后m=【1】,n=【2】。
答案:
=======(答案1)=======
9
=======(答案2)=======
10
第2题 (1.0分)
C语言中一个函数由函数首部和【1】两部分组成.
答案:
=======(答案1)=======
函数体
第3题 (1.0分)
若在程序中用到"strlen()"函数时,应在程序开头写上包含命令# include "【1】".
答案:
=======(答案1)=======
string.h
第4题 (1.0分)
从函数的形式上看,函数分为无参函数和【1】两种类型.
答案:
=======(答案1)=======
有参函数
第5题 (1.0分)
若输入字符串:abcde<回车>,则以下while循环体将执行 【1】 次.While((ch=getchar())=='e') printf("*");
答案:
=======(答案1)=======
0
第6题 (1.0分)
C语言把文件看作是一个【1】的序列.
答案:
=======(答案1)=======
字符
=========或=========
字节
第7题 (1.0分)
已知 a=10,b=15,c=1,d=2,e=0,则表达式!a<e的值为【1】.
答案:
=======(答案1)=======
0
第8题 (1.0分)
C语言源程序的基本单位是【1】.
答案:
=======(答案1)=======
函数
第9题 (1.0分)
int x=2;z=x++-1; 则x的值为【1】.
答案:
=======(答案1)=======
3
第10题 (1.0分)
在c语言中,格式输入操作是由库函数在C语言中,格式输入操作是由库函数【1】完成的,格式输出操作是由库函数【2】完成的.
答案:
=======(答案1)=======
scanf
=======(答案2)=======
printf
━━━━━━━━━━━━━━━
二、判断 共10题 (共计10分)
━━━━━━━━━━━━━━━
第1题 (1.0分)
如果被调用函数的定义出现在主调函数之前,可以不必加以声明.
答案:Y
第2题 (1.0分)
逻辑表达式-5&&!8的值为1.
答案:N
第3题 (1.0分)
while和do…while循环不论什么条件下它们的结果都是相同的.
答案:N
第4题 (1.0分)
C语言所有函数都是外部函数.
答案:N
第5题 (1.0分)
若i =3,则printf("%d",-i++);输出的值为 -4。
答案:N
第6题 (1.0分)
若有说明int c;则while(c=getchar());是正确的C语句。
答案:Y
第7题 (1.0分)
在程序中定义了一个结构体类型后,可以多次用它来定义具有
该类型的变量。
答案:Y
第8题 (1.0分)
C语言中"%"运算符的运算对象必须是整型.
答案:Y
第9题 (1.0分)
在C 语言中,此定义和语句是合法的:
enum aa{ a=5,b,c}bb;bb=(enum aa)5;
答案:Y
第10题 (1.0分)
#define 和printf 都不是C语句。
答案:Y
━━━━━━━━━━━━━━━━━
三、单项选择 共30题 (共计30分)
━━━━━━━━━━━━━━━━━
第1题 (1.0分)
下列( )表达式的值为真,其中a=5;b=8;c=10;d=0
A:a*2>8+2
B:a&&d
C:(a*2-c)||d
D:a-b<c*d
答案:D
第2题 (1.0分)
若变量已正确定义,执行语句scanf("%d,%d,%d ",&k1,&k2,&k3);时,___是正确的输入
A:2030,40
B:20 30 40
C:20, 30 40
D:20,30,40
答案:D
第3题 (1.0分)
从循环体内某一层跳出,继续执行循环外的语句是
A:break语句
B:return语句
C:continue语句
D:空语句
答案:A
第4题 (1.0分)
C语言源程序名的后缀是
A:exe
B:c
C:obj
D:cp
答案:B
第5题 (1.0分)
在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类型是
A:extern
B:register
C:auto
D:static
答案:D
第6题 (1.0分)
C语言源程序文件经过C编译程序编译后生成的目标文件的后缀为
A:.c
B:.obj
C:.exe
D:.bas
答案:B
第7题 (1.0分)
C语言的if语句中,用作判断的表达式为
A:任意表达式
B:逻辑表达式
C:关系表达式
D:算术表达式
答案:A
第8题 (1.0分)
能正确表示逻辑关系:" a≥10或a≤0 "的C语言表达式是
A:a>=10 or a<=0
B:a>=0 | a<=10
C:a>=10 && a<=0
D:a>=10 || a<=0
答案:D
第9题 (1.0分)
C语言源程序文件经过C编译程序编译连接之后生成一个后缀为()的可执行文件
A:.c
B:.obj
C:.exe
D:.bas
答案:C
第10题 (1.0分)
下列数据中属于"字符串常量"的是
A:ABC
B:"ABC"
C:'ABC'
D:'A'
答案:B
第11题 (1.0分)
以下程序段的输出结果是()。
char *alp[]={"ABC","DEF","GHI"}; int j; puts(alp[1]);
A:A
B:B
C:D
D:DEF
答案:D
第12题 (1.0分)
以下叙述不正确的是()。
A:一个C源程序可由一个或多个函数组成
B:一个C源程序必须包含一个main函数
C:C程序的基本组成单位是函数
D:在C程序中,注释说明只能位于一条语句的后面
答案:D
第13题 (1.0分)
设有以下语句, 若0<k<4,下列选项中对字符串的非法引用是()。
char str[4][2]={"aaa","bbb","ccc","ddd"},*strp[4];
int j;
for (j=0;j<4;j++)
strp[j]=str[j];
A:strp
B:str[k]
C:strp[k]
D:*strp
答案:A
第14题 (1.0分)
执行以下程序段后,输出结果和a的值是()。int a=10;printf("%d",a++);
A:10 和 10
B:10 和 11
C:11 和 10
D:11 和 11
答案:B
第15题 (1.0分)
设C语言中,一个int型数据在内存中占2个字节,则unsigned int
型数据的取值范围为()。
A:0--255
B:0--32767
C:0--65535
D:0--2147483647
答案:C
第16题 (1.0分)
以下程序的运行结果是()。
main()
{
int i=1,sum=0;
while(i<10) sum=sum+1;i++;
printf("i=%d,sum=%d",i,sum);
}
A:i=10,sum=9
B:i=9,sum=9
C:i=2,sum=1
D:运行出现错误
答案:D
第17题 (1.0分)
若有定义:int aa[ 8];则以下表达式中不能代表数组元aa[1]的
地址的是()。
A:&aa[0]+1
B:&aa[1]
C:&aa[0]++
D:aa+1
答案:C
第18题 (1.0分)
以下语句中,不能实现回车换行的是()。
A:printf("\n");
B:putchar("\n");
C:fprintf(stdout,"\n");
D:fwrite("\n",1,1,stdout);
答案:B
第19题 (1.0分)
若有int *p=(int *)malloc(sizeof(int));则向内存申请到内存
空间存入整数123的语句为()。
A:scanf("%d",p);
B:scanf("%d",&p);
C:scanf("%d",*p);
D:scanf("%d",**p);
答案:A
第20题 (1.0分)
设j和k都是int类型,则下面的for循环语句()。
for(j=0,k=0;j<=9&&k!=876;j++) scanf("%d",&k);
A:最多执行10次
B:最多执行9次
C:是无限循环
D:循环体一次也不执行
答案:A
第21题 (1.0分)
已知字符'A'的ASCⅡ代码值是65,字符变量c1的值是'A',c2的值是'D'.执行语句printf("%d,%d",c1,c2-2);后,输出结果是
A:A,B
B:A,68
C:65,66
D:65,68
答案:C
第22题 (1.0分)
若有如下定义和语句,且0<=i<5,下面( )是对数值为3数组元素的引用
int a[]={1,2,3,4,5},*p,i;
p=a;
A:*(a+2)
B:a[p-3]
C:p+2
D:a+3
答案:A
第23题 (1.0分)
若int a=3,则执行完表达式a-=a+=a*a后,a的值是
A:-15
B:-9
C:-3
D:0
答案:D
第24题 (1.0分)
若有定义int a[10],*p=a;,则p+5表示
A:元素a[5]的地址
B:元素a[5]的值
C:元素a[6]的地址
D:元素a[6]的值
答案:A
第25题 (1.0分)
若有以下定义和语句:
int a[10]={1,2,3,4,5,6,7,8,9,10}, *p=a;
不能表示a数组元素的表达式是
A:*p
B:a[9]
C:*p++
D:a[*p-a]
答案:D
第26题 (1.0分)
对于定义,char *aa[2]={"abcd","ABCD"},选项中说法正确的是
A:aa数组元素的值分别是"abcd"和"ABCD"
B:aa是指针变量,它指向含有两个数组元素的字符型一维数组
C:aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
D:aa数组的两个元素中各自存放了字符'a'和'A'的地址
答案:D
第27题 (1.0分)
int (*p)[6]; 它的含义为()。
A:具有6个元素的一维数组
B:定义了一个指向具有6个元素的一维数组的指针变量
C:指向整型指针变量
D:指向6个整数中的一个的地址
答案:B
第28题 (1.0分)
下列语句的结果是()。
main()
{ int j;
j=3;
printf("%d,",++j);
printf("%d",j++);
}
A:3,3
B:3,4
C:4,3
D:4,4
答案:D
第29题 (1.0分)
若有以下定义:char s='\092'; 则该语句()。
A:使s的值包含1个字符
B:定义不合法,s的值不确定
C:使s的值包含4个字符
D:使s的值包含3个字符
答案:B
第30题 (1.0分)
在C语言中,形参的缺省存储类是()。
A:auto
B:register
C:static
D:extern
答案:A
━━━━━━━━━━━━━━━━
四、程序填空 共2题 (共计20分)
━━━━━━━━━━━━━━━━
第1题 (10.0分)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:在歌星大奖赛中,有10个评委为参赛的选手打分,分数为
1~100分。选手最后得分为:去掉一个最高分和一个最低分
后其余8个分数的平均值。请编写一个程序实现。
-------------------------------------------------------*/
#include<stdio.h>
void main()
{
int score,i,max,min,sum;
max=-32768;
min=32767;
sum=0;
for(i=1;i<=10;i++)
{
printf("input number %d=",i);
/***********SPACE***********/
scanf("%d",【?】);
sum+=score;
/***********SPACE***********/
if(【?】) max=score;
/***********SPACE***********/
if(【?】) min=score;
}
printf("Canceled max score:%d\nCanceled min score:%d\n",max,min);
/***********SPACE***********/
printf("Average score:%d\n",【?】);
}
答案:
=======(答案1)=======
&score
=======(答案2)=======
score>max
=========或=========
max<score
=======(答案3)=======
score<min
=========或=========
min>score
=======(答案4)=======
(sum-max-min)/8
=========或=========
(sum -max - min )/8
第2题 (10.0分)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:现有两组有序数组(增序),x[i]、y[j]代表数组x、y的
任一元素,问满足x[i]>y[i]的元素对有多少个?
-------------------------------------------------------*/
#include <stdio.h>
int dominance_count(int f[], int g[], int m, int n)
{
int index_f, index_g;
int count;
count = index_f = index_g = 0;
while (index_f < m && index_g < n)
if (f[index_f] <= g[index_g])
index_f++;
else
{
index_g++;
/***********SPACE***********/
count += 【?】;
}
/***********SPACE***********/
【?】;
}
#include <stdio.h>
void main(void)
{
int x[] = { 1, 6, 8 };
int nx = sizeof(x)/sizeof(int);
int y[] = { 4, 5, 7 };
int ny = sizeof(y)/sizeof(int);
int dominance_count(int [], int [], int, int), i;
printf("\nDominance Count of two increasing Arrays\n");
printf("\n # Array 1 Array 2");
printf("\n -- ------- -------");
for (i = 0; i < nx; i++)
printf("\n%3d%10d%10d", i, x[i], y[i]);
printf("\n\nThere are %d Dominance Pairs.",
/***********SPACE***********/
【?】);
}
答案:
=======(答案1)=======
m - index_f
=========或=========
m - index_f
=======(答案2)=======
return count
=======(答案3)=======
dominance_count(x, y, nx, ny)
━━━━━━━━━━━━━━━━
五、程序改错 共1题 (共计10分)
━━━━━━━━━━━━━━━━
第1题 (10.0分)
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:输入一行字符,分别统计出其中英文字母、空格、数字和
其它字符的个数。
------------------------------------------------------*/
#include <stdio.h>
main()
{
char c;
int letters=0,space=0,digit=0,others=0;
printf("please input some characters\n");
/**********FOUND**********/
while((c=getchar())=='\n')
{
/**********FOUND**********/
if(c>='a'&&c<='z'&&c>='A'&&c<='Z')
letters++;
/**********FOUND**********/
else if(c=!' ')
space++;
else if(c>='0'&&c<='9')
digit++;
else
others++;
}
printf("all in all:char=%d space=%d digit=%d others=%d\n",letters,
space,digit,others);
}
答案:
=======(答案1)=======
while((c=getchar())!='\n')
=======(答案2)=======
if( c>='a'&&c<='z' || c>='A'&&c<='Z' )
=========或=========
if( c<='z'&&c>='a' || c>='A'&&c<='Z' )
=========或=========
if( c <= 'z' && c >= 'a' || c >= 'A' && c<='Z' )
=======(答案3)=======
else if(c==' ')
━━━━━━━━━━━━━━━━
六、程序设计 共2题 (共计20分)
━━━━━━━━━━━━━━━━
第1题 (10.0分)
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:求1到100之间的偶数之积。
------------------------------------------------*/
#include <stdio.h>
void wwjt();
double fun(int m)
{
/**********Program**********/
/********** End **********/
}
main()
{
printf("ji=%f\n",fun(100));
wwjt();
}
void wwjt()
{
FILE *IN,*OUT;
int iIN,i;
double dOUT;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("Please Verify The Currernt Dir..it May Be Changed");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("Please Verify The Current Dir.. it May Be Changed");
}
for(i=0;i<5;i++)
{
fscanf(IN,"%d",&iIN);
dOUT=fun(iIN);
fprintf(OUT,"%f\n",dOUT);
}
fclose(IN);
fclose(OUT);
}
答案:----------------------
double y=1;
int i;
for(i=1;i<=m;i++)
if(i%2==0)y*=i;
return y;
----------------------
第2题 (10.0分)
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:编写函数用冒泡排序法对数组中的数据进行从小到
大的排序。
------------------------------------------------*/
#include <stdlib.h>
#include<stdio.h>
void wwjt();
void sort(int a[],int n)
{
/**********Program**********/
/********** End **********/
}
main()
{
int a[16],i;
for(i=0;i<16;i++)
a[i]=random(30)+15;
for(i=0;i<16;i++)
printf("%3d",a[i]);
printf("\n-------------------\n");
sort(a,16);
for(i=0;i<16;i++)
printf("%3d",a[i]);
wwjt();
}
void wwjt()
{
FILE *IN,*OUT;
int n;
int i[10];
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("Read FILE Error");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("Write FILE Error");
}
for(n=0;n<10;n++)
{
fscanf(IN,"%d",&i[n]);
}
sort(i,10);
for(n=0;n<10;n++)
fprintf(OUT,"%d\n",i[n]);
fclose(IN);
fclose(OUT);
}
答案:----------------------
int i,j,t;
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(a[j]>a[j+1])
{t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
----------------------
展开阅读全文