求 大一C语言期末笔试题及答案 ,谢谢~

如题所述

第1个回答  推荐于2018-05-04
一、 单项选择题(每小题2分,共40分) 将正确选项涂写在答题纸相应位置上。
1.使用一些图框表示各种类型的操作,其中输出框是_A___
A) B) C) D)
2.下面程序执行后,输出结果为__B__
A)-1,1,0 B)0,1,1 C)0,2,1 D)0,2,0
main()
{ int a=-1,b=1,c;
c=a++||++b;
printf("%d,%d,%d\n",a,b,c);
}
3.在下列标识符中,哪个是不合法的__A__
A)a+b B)_321 C)max D)name
4.设int型的数据长度为2个字节,则unsigned int型数据的取值范围是__B__
A)0~28-1 B)0~216-1 C)-215~215-1 D)-28~28-1
5.以下叙述正确的是__C__
A)在C程序中,可以有两个以上的main函数。
B)在编译C程序时,可发现注释中的拼写错误。
C)C程序的每行可以书写多条语句。
C)scanf和printf是C语言提供的输入输出语句。
6.正确的赋值语句是_A___
A)a=2+(b=1); B)a=+b=3 C)a=b=c D)y=int(x)
7.下列程序的运行结果是__C__
A)10 B)2*5=10 C)a*b=10 D)2*5=a*b
#include〈stdio.h〉
main()
{ int a=2 ,b=5 ;
printf("a*b=%d\n",a*b);
}
8.下面程序片段执行后,y的值为__D__
A)2 B)0 C)6 D)4
int x=2 ,y=0;
y=x;
if(x<5) y=y+2;
x=6;
9.以下对C语言函数的描述中,正确的是_A___
A)调用函数时,参数可以是表达式
B)函数的定义可以是嵌套
C)函数必须有返回值
D)所有函数必须在同一个程序文件中定义
10.在C 语言中,函数返回值的类型由__D__决定。
A)调用函数时临时决定 B)return语句中的表达式类型
C)调用函数的主调函数类型 D)定义函数时所指定的函数类型
11.以下程序的输出结果是_D___
A)10 B)11 C)12 D)13
#define MA(x) x*(x+3)
main()
{ int a=1,b=2;
printf("%d\n",MA(a+b));
}
12.正确的数组定义是__A__
A)char a[ ]={'A','B','C','\0'}; B)int a[3]={1,2,3,4,5};
C)char a="ABC\0"; D)int a[ ] ="ABC";
13.设有数组定义:float a[ ]={1,2,3,4,5};则数组a所占的内存空间为_B___
A)10个字节 B)20个字节 C)30个字节 D) 40
14.设有数组定义:int a[ 3];则正确的赋值为__C__
A)a[3]=5; B)a=1,2,3; C)a[0]=3; D)a={1,2,3};
15.下列程序执行后的输出结果是(B )
A)abcd0you B)abcd C)you D)abcdeyou
main( )
{ char arr[10] ="abcde";
strcat (arr,"you");
arr[4]='\0';
printf("%s\n",arr);
}
16.有如下程序段
int *p1,a=10 ,**p2;
p1=&a; p2=&p1; **p2=a+10;
执行该程序段后,a的值为__B__
A)编译出错   B)20    C)随机数  D)10
17.对于基类型相同的两个指针变量,能够进行运算的是__A__
A)=    B)*   C)/ D)+
18.设有以下定义:
int a[4][5]={1,2,3,4,5,,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
int (*p)[5]=a;
则下列能够正确表示数组元素a[2][3]的表达式是__C__
A)*((*p+3)[2]) B)*(*(*p+6)) C)*(*(a+2)+3) D)*(*p+2)+3
19.下列程序的输出结果是__B__
A)3 B)4 C)5 D)6
struct abc
{ int a,b; };
main( )
{ struct abc x[2]={ {1,2},{3,4}};
int t;
t=x[0].a*x[1].b;
printf("%d\n",t);
}
20.对于C语言的文件,正确的结论是__A__
A)文件操作必须先打开文件 B)文件的存取只能是随机方式
C)文件又由数据行组成 D)只能处理二进制文件
二、 填空题(1~5题,每空2分,6~7题,每空3分,共25分)
1.设有以下变量定义,并已赋确定的值
char w; int x; float y; double z;
则表达式:w*x +z-y所求值的数据类型位 double 。
2.在使用Turbo C调试C程序时,按F9键是指 编译、连接 。
3.如果一个函数只能被本文件中其他函数所调用,它称为 内部函数 。
4.在对一个文件读写之前要 打开文件 。
5.下面出错信息的含义是 重复声明main 。
Redeclaration of 'main'
6.程序的功能是:输出所有能被3整除且个位数为6的3的位数。
#include <stgio.h>
main()
{ int i;
for(i=106; i<996; i+=10 )
if(i%3==0) printf(“%d\n”,i) ;
}
7.以下程序用递归法求解 ,当最后一项的值小于0.00001时,累加结束。
main()
{ double s,x;
double sum(double,double,double *);
scanf("%lf",&x);
s=1.0;
if( x>1 )
{ printf("s=%10.5lf\n",sum(1.0,x,&s); )
else printf("data error!\n");
}
double sum(double t,double p, double *a )
{ t=t/p;
if(t>=0.00001)
sum(t,p,a);
*a+= *a+=t ;
return(*a);
}

三、修改程序题(每个*found*下面都有一处错误,共有5处错误,每处3分,共15分)
1.下面的程序将输入的两个整数按大小顺序输出。请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
/**********found**********/
void swap(int *p1,*p2)
{ int temp; (int*temp)
temp=*p1;
/**********found**********/
p1=p2;
*p2=temp; (*p2=*temp)
}
main()
{ int a,b;
int *p_1,*p_2;
scanf("%d%d",&a,&b);
p_1=&a; p_2=&b;
if(a<b) swap(p_1,p_2);
printf("\n%d,%d\n",a,b);
}
2.建立字符串“Hi xxxxxx How are you.”,在字符串xxxxxx的位置输入自己的姓名,最后输出完整的字符串。如:姓名为“Christian”,则输出为“Hi Christ How are you.”。请改正函数fun中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include <stdio.h>
#include <string.h>
/**************found******************/
void fun(char string,char name ) (void fun(char *string,char *name ))
{ int i=0;
while(name[i]!='\0' && i<6)
{ string[3+i]=name[i]; (string[3+i]=' ')
i++;
}
/************************found ***************/
for(; i<6; i++)
string[6+i]=' ';/* 代表空格 */
}
main( )
{ char str[30]={"Hi xxxxxx How are you."},c[10];
gets(c);
fun(str,c);
/************************found ***************/
printf("\ns",str[0]); (printf("\ns",str);)
}
四、程序设计题(每题10分,共20分)
1.函数fun 的功能是:在a数组的n个数中找出最小数、最大数以及它们的下标,并由m数组传回。
注意:不要改动给出的部分源程序,仅要求编写函数fun。
#include <conio.h>
#include <stdio.h>
#define M 10
void fun(int a[ ],int rn[2],int n)
{

}
main( )
{
int i,a[M],b[2];
printf("input a array:\n");
for(i=0; i<M; i++)
scanf("%d",&a[i];
fun(a,b,M);
printf("The result is :\n");
printf("最小数的下标为:%d ",c[0]);
printf("最大数的下标为:%d ",c[1]);
}
2.不得修改main函数,编写sort函数的函数体。输入5个国名并按字母顺序排列后输出。
#include "string.h"
main()
{
void sort(char *name[],int n);
static char *name[]={ "CHINA","AMERICA","AUSTRALIA",
"FRANCE","GERMAN"};
int i,n=5;
sort(name,n);
for(i=0; i<n; i++) printf("%s\n",name[i]);
}
void sort(char *name[],int n)
{

}本回答被网友采纳