b)==c"的值为"真"。答案:Y〖第2题〗『判断』(2分)(题号:33)inti,*p=&i;是正确的C" />
文档库 最新最全的文档下载
当前位置:文档库 › C语言上机试题

C语言上机试题

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
试卷编号:8002 所属语言:Turbo C 所属方案:c语言2010年12月
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

〖第1题〗『判 断』(2分)(题号:23)

若 a=3,b=2,c=1 则关系表达式"(a>b)==c" 的值为"真"。
答案:Y

〖第2题〗『判 断』(2分)(题号:33)

int i,*p=&i;是正确的C说明。
答案:Y

〖第3题〗『判 断』(2分)(题号:24)

C语言中只能逐个引用数组元素而不能一次引用整个数组。
答案:Y

〖第4题〗『判 断』(2分)(题号:26)

int a[3][4]={{1},{5},{9}}; 它的作用是将数组各行第一列
的元素赋初值,其余元素值为0。
答案:Y

〖第5题〗『判 断』(2分)(题号:6)

在程序中定义了一个结构体类型后,可以多次用它来定义具有
该类型的变量。
答案:Y

〖第1题〗『单项选择』(1分)(题号:519)

int a[10];
给数组a的所有元素分别赋值为1、2、3、……的语句是()。
A:for(i=1;i<11;i++)a[i]=i;
B:for(i=1;i<11;i++)a[i-1]=i;
C:for(i=1;i<11;i++)a[i+1]=i;
D:for(i=1;i<11;i++)a[0]=1;

答案:B

〖第2题〗『单项选择』(1分)(题号:614)

若i为整型变量,则以下循环执行次数是()。
for(i=2;i==0;) printf("%d",i--);

A:无限次
B:0次
C:1次
D:2次

答案:B

〖第3题〗『单项选择』(1分)(题号:552)

应用缓冲文件系统对文件进行读写操作,关闭文件的函数名为()。
A:fclose()
B:close()
C:fread()
D:fwrite

答案:A

〖第4题〗『单项选择』(1分)(题号:106)

以下叙述中不正确的是()。
A:一个好的程序应该有详尽的注释
B:在C程序中,赋值运算符的优先级最低
C:在C程序中,j++;是一条赋值语句
D:C程序中的#include和#define均不是C语句

答案:B

〖第5题〗『单项选择』(1分)(题号:95)

下列变量说明语句中,正确的是()。
A:char:a b c;
B:char a;b;c;
C:int x;z;
D:int x,z;

答案:D

〖第6题〗『单项选择』(1分)(题号:190)

关于指针概念说法不正确的是()。
A:一个指针变量只能指向同一类型变量
B:一个变量的地址称为该变量的指针
C:只有同一类型变量的地址才能放到指向该类型变量的指针变量之中
D:指针变量可以由整数赋,不能用浮点赋

答案:D

〖第7题〗『单项选择』(1分)(题号:623)

以下描述中正确的是()。
A:由于 do-while 循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B:do-while 循环由do开始,用while结束,在 while(表达式)后面不能写分号
C:在 do-while 循环体中,一定要有能使 while 后面表达式的值变为零("假")的操作
D:do-while 循环中,根据情况

可以省略 while

答案:C

〖第8题〗『单项选择』(1分)(题号:170)

关于return语句,下列正确的说法是()。
A:在主函数和其他函数中均可出现
B:必须在每个函数中出现
C:可以在同一个函数中出现多次
D:只能在除主函数之外的函数中出现一次

答案:C

〖第9题〗『单项选择』(1分)(题号:143)

C 语言中以下几种运算符的优先次序()的排列是正确的。
A:由高到低为:!,&&,||,算术运算符,赋值运算符
B:由高到低为:!,算术运算符,关系运算符,&&,||,赋值运算符
C:由高到低为:算术运算符,关系运算符,赋值运算符,!,&&,||
D:由高到低为:算术运算符,关系运算符,!,&&,||,赋值运算符

答案:B

〖第10题〗『单项选择』(1分)(题号:118)

已知year为整型变量,不能使表达式(year%4==0&&year%100!=0)
||year%400==0的值为“真”的数据是()。
A:1990
B:1992
C:1996
D:2000

答案:A

〖第11题〗『单项选择』(1分)(题号:172)

在C语言程序中()。
A:函数的定义可以嵌套,但函数的调用不可以嵌套
B:函数的定义不可以嵌套,但函数的调用可以嵌套
C:函数的定义和函数调用均可以嵌套
D:函数的定义和函数调用不可以嵌套

答案:B

〖第12题〗『单项选择』(1分)(题号:527)

全局变量的定义不可能在()。
A:函数内部
B:函数外面
C:文件外面
D:最后一行

答案:A

〖第13题〗『单项选择』(1分)(题号:671)

C语言规定:简单变量做实参时,它和对应形参之间的数据传递方式是()。
A:地址传递
B:单向值传递
C:由实参传给形参,再由形参传回给实参
D:由用户指定的传递方式

答案:B

〖第14题〗『单项选择』(1分)(题号:175)

C语言程序中,当调用函数时()。
A:实参和虚参各占一个独立的存储单元
B:实参和虚参可以共用存储单元
C:可以由用户指定是否共用存储单元
D:计算机系统自动确定是否共用存储单元

答案:A

〖第1题〗『程序填空』(10分)(题号:16)

/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------

题目:以下程序的功能是删除字符串中的指定字符,字符串和
要删除的字符均由键盘输入。

-------------------------------------------------------*/

#include "stdio.h"
main()
{
char str[80],ch;
int i,k=0;
/***********SPACE***********/
gets(【?】);
ch=getchar();
/***********SPACE***********/
for(i=0;str[i] 【?】;i++)
/***********SPACE***********/
if(str[i]!=ch) {【?】;k++;}
/***********SPACE***********/
【?】;
puts(str);
}


答案:
1). str
2). !='\0'
3). str[k]=str[i]
4). str[k]='\0'



〖第2题〗『程序填空』(10分)(题号:26)

/*---------------------------

----------------------------
【程序填空】
---------------------------------------------------------

题目:以下程序的功能是统计一个字符串中的字母、数字、空格、
和其它字符的个数。

-------------------------------------------------------*/

#include "stdio.h"
main ()
{
char s1[80];int a[4]={0};
int k;
/***********SPACE***********/
【?】;
gets(s1);
/***********SPACE***********/
【?】;
puts(s1);
for(k=0;k<4;k++)
printf("%4d",a[k]);
}
void fun(char s[],int b[])
{
int i;
for (i=0;s[i]!='\0';i++)
if ('a'<=s[i]&&s[i]<='z'||'A'<=s[i]&&s[i]<='Z') b[0]++;
/***********SPACE***********/
else if (【?】) b[1]++;
/***********SPACE***********/
else if (【?】 ) b[2]++;
else b[3]++;
}


答案:
1). void count(char s[],int b[])
2). fun(s1,a)
3). '0'<=s[i]★&&★s[i]<='9' 或 s[i]>='0'★&&★s[i]<='9' 或 '0'<=s[i]★&&★'9'>=s[i] 或 s[i]>='0'★&&★'9'>=s[i] 或 48<=s[i]★&&★s[i]<=57 或 s[i]>=48★&&★s[i]<=57 或 48<=s[i]★&&★57>=s[i] 或 s[i]>=48★&&★57>=s[i]
4). s[i]★==★' ' 或 s[i]★==★32



〖第3题〗『程序填空』(10分)(题号:438)

/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------

题目:求出二维数组中的最大元素值。
-------------------------------------------------------*/
#include "stdio.h"
void main()
{int a[3][4]={{1,3,5,7},{2,4,6,8},{15,17,34,12}};
/***********SPACE***********/
printf("max value is %d\n",【?】);
}
max_value(m,n,array)
/***********SPACE***********/
int m,n,【?】;
{int i,j,max;
max=array[0][0];
for(i=0;ifor(j=0;j/***********SPACE***********/
if(maxreturn(max);
}

答案:
1). max_value(3,4,a)
2). array[][4] 或 array[3][4] 或 (*array)[4]
3). max=array[i][j]



〖第1题〗『程序改错』(10分)(题号:422)

/*------------------------------------------------------
【程序改错】
--------------------------------------------------------

题目:给一个不多于5位的正整数,要求:一、求它是
几位数,二、逆序打印出各位数字。
--------------------------------------------------------
注意:不可以增加或删除程序行,也不可以更改程序
的结构。
------------------------------------------------------*/
#include"stdio.h"
main( )
{
/**********FOUND**********/
long a,b,c,d,e,x,
scanf("%ld",&x);
a=x/10000;
/**********FOUND**********/
b=x/10000/1000;
c=x%1000/100;
d=x%100/10;
e=x%10;
/**********FOUND**********/
if (a==0)
printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);
else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);
else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);
else if (d!=0) printf("there are 2, %ld %ld\n",e,d);
else if (e!=0) prin

tf(" there are 1,%ld\n",e);
getch();
}




答案:
1). long a,b,c,d,e,x;
2). b=x%10000/1000;
3). if (a!=0) 或 if (!a)



〖第2题〗『程序改错』(10分)(题号:254)

/*------------------------------------------------------
【程序改错】
--------------------------------------------------------

题目:一个已排好序的一维数组,输入一个数number,要求按原来
排序的规律将它插入数组中.

--------------------------------------------------------
注意:不可以增加或删除程序行,也不可以更改程序的结构。
------------------------------------------------------*/

main( )
{int a[11]={1,4,6,9,13,16,19,28,40,100};
int temp1,temp2,number,end,i,j;
/***********FOUND***********/
for(i=0;i<=10;i++)
printf("%5d",a[i]);
printf("\n");
scanf("%d",&number);
/***********FOUND***********/
end=a[10];
/***********FOUND***********/
if(number>end) a[11]=number;
else
{for(i=0;i<10;i++)
{
/***********FOUND***********/
if(a[i]{temp1=a[i];
a[i]=number;
for(j=i+1;j<11;j++)
{temp2=a[j];
a[j]=temp1;
temp1=temp2;
}
break;
}
}
}
for(i=0;i<11;i++)
printf("%6d",a[i]);
}

答案:
1). for(i=0;i<10;i++) 或 for(i=0;i<=9;i++)
2). end=a[9];
3). if(number>end) a[10]=number;
4). if(a[i]>number)



〖第3题〗『程序改错』(10分)(题号:255)

/*------------------------------------------------------
【程序改错】
--------------------------------------------------------

题目:用"起泡法"对输入的十个字符排序后按从小到大的次序输出.

--------------------------------------------------------
注意:不可以增加或删除程序行,也不可以更改程序的结构。
------------------------------------------------------*/

#define N 10
main( )
{int i;
char str[N]={'\0'};
/***********FOUND***********/
scanf("%s",&str);
/***********FOUND***********/
sort(str[N]);
for(i=0;iprintf("%c",str[i]);
printf("\n");
}

sort(char str[N])
{int i,j; char t;
for(j=1;j/***********FOUND***********/
for(i=0;(i/***********FOUND***********/
if(str[i]{t=str[i];str[i]=str[i+1];str[i+1]=t;}
}

答案:
1). scanf("%s", str);
2). sort(str);
3). for(i=0;(i4). if(str[i]>str[i+1])



〖第1题〗『程序设计』(4分)(题号:380)

/*------------------------------------------------
【程序设计】
--------------------------------------------------

题目:编写函数用选择排序法对数组中的数
据进行从小到大的排序。
--------------------------------------------------
注意:部分源程

序给出如下。请勿改动主函数
main和其它函数中的任何内容,仅在函
数的花括号中填入所编写的若干语句。
------------------------------------------------*/
#include
#include
void sort(int a[],int n)
{
/**********Program**********/






/********** End **********/
}
main()
{int a[13],i;
clrscr();
for(i=0;i<13;i++)
a[i]=random(20)-5;
for(i=0;i<13;i++)
printf("%3d",a[i]);
printf("\n-------------------\n");
sort(a,13);
for(i=0;i<13;i++)
printf("%3d",a[i]);
yzj();
getch();
}
yzj()
{
FILE *IN,*OUT;
int n;
int i[10];
int o;
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,k,t;
for(i=0;i{k=i;
for(j=i+1;jif(a[k]>a[j]) k=j;
if(k!=i)
{t=a[i];
a[i]=a[k];
a[k]=t;
}
}
----------------------

〖第2题〗『程序设计』(4分)(题号:25)

/*------------------------------------------------
【程序设计】
--------------------------------------------------

题目:请编写一个函数fun,函数的功能是:将主函数
中输入的字符串反序存放。
例如:输入字符串"abcdefg",则应输出"gfedcba"。

--------------------------------------------------
注意:部分源程序给出如下。请勿改动主函数main和其
它函数中的任何内容,仅在函数fun的花括号中填
入所编写的若干语句。
------------------------------------------------*/


#include
#include
#define N 81

char fun(char *str,int n)
{

/**********Program**********/






/********** End **********/

}

main()
{
char s [N];
int l;
clrscr();
printf("input a string:");gets(s);
l=strlen(s);
fun(s,l);
printf("The new string is :");puts(s);
yzj();
}
yzj()
{
FILE *IN,*OUT;
char sIN[20],*sOUT;
int iLENGTH;
IN=fopen("7.in","r");
if(IN==NULL)
{printf("Please Verify The Currernt Dir..It May Be Changed");
}
OUT=fopen("7.out","w");
if(OUT==NULL)
{printf("Please Verify The Current Dir.. It May Be Changed");
}

fscanf(IN,"%s",sIN);
iLENGTH=strlen(sIN);
sOUT=sIN;
fun(sIN,iLENGTH);
fprintf(OUT,"%s\n",sOUT);

fclose(IN);
fclose(OUT);
}
答案:----------------------
int i,j;
char c;
for(i=0,j=n-1;i{c=*(str+i);
*(str+i)=*(str+j);
*(str+j)=c;}
----------------------

〖第3题〗『程序设计』(4分)(题号:33)

/*------------------------------------------------
【程序设计】
--------------------

----------------------------

题目:请编写一个函数fun,函数的功能是:求出N×M整
型数组的最大元素及其所在的行坐标及列坐标(如
果最大元素不唯一,选择位置在最前面的一个)。
例如:输入的数组为:
1 2 3
4 15 6
12 18 9
10 11 2

求出的最大数为18,行坐标为2,列坐标为1。
------------------------------------------------
注意:部分源程序给出如下。请勿改动主函数
main和其它函数中的任何内容,仅在函数fun的花
括号中填入所编写的若干语句。
------------------------------------------------*/

#define N 4
#define M 3
#include

int Row,Col;
main()
{
int a[N][M],i,j,max,row,col;
printf("input a array:");
for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);
for(i=0;i{
for(j=0;jprintf("%d",a[i][j]);
printf("\n");
}
max=fun(a);
printf("max=%d,row=%d,col=%d",max,Row,Col);
yzj();
}
int fun(int array[N][M])
{

/**********Program**********/






/********** End **********/

}
yzj()
{
FILE *IN,*OUT;
int iIN[N][M],iOUT,i,j;
IN=fopen("9.in","r");
if(IN==NULL)
{printf("Please Verify The Currernt Dir..It May Be Changed");
}
OUT=fopen("9.out","w");
if(OUT==NULL)
{printf("Please Verify The Current Dir.. It May Be Changed");
}
for(i=0;ifor(j=0;jfscanf(IN,"%d",&iIN[i][j]);
iOUT=fun(iIN);
fprintf(OUT,"%d %d %d\n",iOUT,Row,Col);

fclose(IN);
fclose(OUT);
}
答案:----------------------
int max,i,j;
max=array [0][0];
Row=0;
Col=0;
for(i=0;i{for(j=0;jif(max{max=array [i][j];
Row=i;
Col=j;}
}
return(max);
----------------------

〖第4题〗『程序设计』(4分)(题号:42)

/*------------------------------------------------
【程序设计】
--------------------------------------------------

题目:编写函数fun,函数的功能是:从字符串s中删除
指定的字符c。

--------------------------------------------------
注意:部分源程序给出如下。请勿改动主函数main和其
它函数中的任何内容,仅在函数fun的花括号中填
入所编写的若干语句。
------------------------------------------------*/

#include "stdio.h"
fun(char s[],char c)
{

/**********Program**********/






/********** End **********/

}

main()
{
static char str[]="turbo c and borland c++";
char c='a';
fun(str,c);
printf("str=%s\n",str);
yzj();
}
yzj()
{
FILE *IN,*OUT;
char sIN[80],cIN;
int i;
IN=fopen("13.in","r");
if(IN==NULL)
{printf("Please Verify The Currernt Dir..It May Be Ch

anged");
}
OUT=fopen("13.out","w");
if(OUT==NULL)
{printf("Please Verify The Current Dir.. It May Be Changed");
}
for(i=0;i<10;i++)
{
fscanf(IN,"%s",sIN);
cIN=getc(IN);cIN=getc(IN);
fun(sIN,cIN);
fprintf(OUT,"%s\n",sIN);
}
fclose(IN);
fclose(OUT);
}
答案:----------------------
int i,k=0;
for(i=0;s[i]!='\0';i++)
if(s[i]!=c) s[k++]=s[i];
s[k]='\0';
----------------------

相关文档