2011春季c语言试卷B(张岩 许海燕)-xuhy格式调整完毕 (1)
C语言程序设计 笔试试题(A卷)
哈尔滨工业大学,威海,2011/2012学年春季学期
C语言程序设计 笔试试题(B卷)
题笔试综合 一 二 三 四 五 六 总分 号 (70%) (30%)
分 数
试卷说明: 号
1. 笔试卷面总分100分,取卷面成绩的70%计入总分; 学
2. 综合成绩为平时成绩(10%)和实验成绩(20%)之和,占总分的30%;
3. 答题时禁止拆开试卷钉,试卷背面即为草稿纸;
4. 答题时间105分钟。
一、单项选择题。请把
答案
八年级地理上册填图题岩土工程勘察试题省略号的作用及举例应急救援安全知识车间5s试题及答案
填入下面框中,
不允许出框线。(本题16分,每小题1分) 名
姓
题号 1 2 3 4 5 6 7 8
答案
题号 9 10 11 12 13 14 15 16
答案
1. 下面程序的输出是______。 注
意main()
行{ 为 int x=10,y=3; 规
printf("%d\n",y=x/y); 范
}
A) 0 B) 1 C) 3 D) 不确定的值 遵2. 下列函数的功能是______。 守
int fun1(char *x) 考
{ 试
纪char *y = x;
律 while(*y++);
第1页 (共14页) 教研室主任签字:
C语言程序设计 笔试试题(A卷)
return(y-x-1);
}
A) 求字符串的长度
B) 将字符串X连接到字符串Y后面
C) 将字符串X复制到字符串Y
D) 比较两个字符串的大小
3. 以下对C语言函数的有关描述中,正确的是______。
A) C程序中有调用关系的所有函数必须放在同一个源程序文件中
B) C函数既可以嵌套定义又可以递归调用
C) 调用函数时,实参的值传送给形参
D) 函数必须有返回值
4. 若用数组名作为函数调用的实参,传递给形参的是______。
A) 数组的首地址 B) 数组第一个元素的值
C) 数组中全部元素的值 D) 数组元素的个数 5. 若有以下定义,则p+5表示_______.
int a[10],*p=a;
A) 元素a[5]的地址 B) 元素a[5]的值
C) 元素a[6]的地址 D) 元素a[6]的值 6. 以下选项中,与k=n++完全等价的表达式是_______。
A) n=n+1,k=n B) k=n,n=n+1 C) k=++n D) k+=n+1
7. 如果在一个函数中的复合语句中定义了一个变量,则该变量_______。
A) 只在该复合语句中有效 B)在该函数中有效
C) 在本程序范围内均有效 D)为非法变量 8. 定义一个结构体变量时,系统分配给它的内存大小是_______。
A)成员中占内存量最大者所需的容量
B)各成员所需内存量的总和
C)结构中第一个成员所需内存容量
D)结构中最后一个成员所需内存容量
9. 在,程序中,使用结构体的目的是______。
A)将一组相关的数据作为一个整体,以便程序使用。
B)将一组相同数据类型的数据作为一个整体,以便程序使用。
C)将一组数据作为一个整体,以便其中的成员共享存储空间。
D)将一组数值一一列举出来,该类型变量的值只限于列举的数值
第2页 (共14页)
C语言程序设计 笔试试题(A卷)
范围内。
10. 判断字符串s1与字符串s2相等,应当使用______ 。
A) if (s1 = s2)
B) if (strcmp(s1, s2))
C) if (!strcmp(s1, s2))
D) if (strcmp(s1, s2) = 0) 11. 若有定义int *p[4],则标识符p是一个______ 。
A)指向整型变量的指针变量
B)指向函数的指针变量
C)指向有四个整型元素的一维数组的指针变量
D)指针数组名,有四个元素,每个元素均为一个指向整型变量的指针
12. 设有以下定义:
int a[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int (*ptr)[3] = a, *p = a[0];
则以下能够正确表示数组元素a[1][2]的表达式是______ 。
A) *((*ptr + 1)[2]) B) *(*(p + 5))
C) (*ptr + 1) D) *(*(a + 1) + 2) 13. 在函数中未指定存储类别的局部变量,其隐含的存储类别是_______。
A)静态(static) B)外部(extern)
C)自动(auto) ,)寄存器(register)
14. 以下错误的描述是________ 。
A) 不同的函数中可以使用相同名字的变量,互不干扰
B) 形式参数都是局部变量
C) 一个C程序只包含一个函数
D) C语言中的函数参数传递都是单向值传递
15. 以下对二维数组进行正确初始化的是________。
A)int a[2][3]={{1,2},{3,4},{5,6}};
B)int a[2][]={1,2,3,4,5,6};
C)int a[][3]={1,2,3,4,5,6};
D)int a[2][]={{1,2},{3,4}}; 16. 设有如下定义:
struct st
第3页 (共14页)
C语言程序设计 笔试试题(A卷)
{ int a;
float b;
}st1, *pst;
若有pst = &st1; 则下面引用正确的是________。
A) (*pst.st1.b) B) (*pst).b
C) pst->st1.b D) pst.st1.b
二、填空题。请按序号把答案填入下面框中,
不允许出框线。(本题20分,每空2分)
题号 答 案 题号 答 案
1 6
2 7
3 8
4 9
5 10
1. 下面程序的功能是要把1,90之间的不能被3整除的数输出。请补全。
main()
{
int n;
【1】
{
if (n%3==0) continue;
printf("%d",n);
}
}
2. 下面程序可求出矩阵a的主对角线上的元素之和,请填空。
main()
{
int a[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j;
for(i=0;i<3;i++)
第4页 (共14页)
C语言程序设计 笔试试题(A卷)
for(j=0;j<3;j++)
if(_ 【2】____) sum=sum+___【3】_____;
printf("sum=%d\n",sum);
}
3. 假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中
的值进行交换。请填空。
a+= 【4】 ; b=a- 【5】; a-= 【6】 ;
4. 递归方式求阶乘,请填空:
long fac (int n)
{
long f;
if(n<0)
printf("n<0,data error!");
else if( 【7】 )
f=1;
else f= 【8】
return (f);
}
5. 以下程序段的功能是统计链表中结点的个数,其中first为指向第一个结点的指针(链表不带头结点)。请在______内填入正确内容。
struct link {
char data ;
struct link *next; }; struct link *p,*first;
int c=0;
p=first;
while(p!=NULL)
{
__【9】_____;
p=____【10】___;
}
第5页 (共14页)
C语言程序设计 笔试试题(A卷)
三、请把下列程序运行结果填入答案框中,不允
许出框线,用“?”表示回车。(本题24分,每小题3分) 题号 1 2 3 4 5 6 7 8 答案
1. main(){
int i=2; int j=3; int k=0;
int ans=((i==1)&&(j==3||(k=k+1)));
printf("%d%d",ans,k);
}
2.#include
int fun(int a,int b,int c) void main() { {
int d=0; int a=1,b=2,c=3;
d=a*b-c; printf("%d ",fun(a,b,c));
return d; printf("%d",fun(2,2+3,2/3));
} }
3. #include
main()
{
int x=-2,y=0;
do{
x=x*x;
} while(x&y);
printf("%x,%x\n",x,x&&y); }
4. #include
main()
{
int a[5]={1,2,3,5,0},max=a[4],i,j=4;
第6页 (共14页)
C语言程序设计 笔试试题(A卷)
for(i=3;i>=0;i--)
{ if(max main()
{
struct ex
{
union un
{ int a;
int b; }in;
int x;
}e;
e.x=10; e.in.a=3;
e.x=e.in.a+e.in.b;
printf("%d %d",e.x,e.in.a); }
7. #include main()
{ int a[2][2]={1,2};
int (*p)[2]=a;
printf("%d,%d",(*p)[1],(*p+1)[1]);
}
8. #include
第7页 (共14页)
C语言程序设计 笔试试题(A卷)
main()
{ FILE *fp;
fp=fopen("test1.txt","w");
fputs("yes",fp);
fclose(fp); }
test1.txt中原内容为“123”,运行该程序后,文件内容为:_________
四、根据功能描述改正程序中的错误。
不得增行或删行,不得更改程序结构。(本题10分) 1.下面程序功能为计算某年第一天到某特定日的天数。(本题4分) #include
int f(int year,int month,int day) { int ans=0;
int m[]={31,30,31,30,31,30,31,31,30,31,30,31};
if( (year%4= =0 && year%100!=0 ) ||year %400!=0 )
m[1]=29;
for(int i=0;i
#include
void main()
{
double avg=0,s;
double a[10]={2,4,1.2,8,5.4,2,4,1,5.3,3.2};
int n=10,i;
for(i=0;i
规定
关于下班后关闭电源的规定党章中关于入党时间的规定公务员考核规定下载规定办法文件下载宁波关于闷顶的规定
超过全班平均成绩10%者发给一等奖,超过全班平均成绩5%者发给二等奖。程序输出学生学号、成绩和奖学金等级。请绘制流程图。
第9页 (共14页)
C语言程序设计 笔试试题(A卷)
六、编程题(本题20分)
(考查课做前两道,考试课做后两道) 1. 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中
是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余
数代替该数字,再将第一位和第四位交换,第二位和第三位交换。 (本
小题10分)
第10页 (共14页)
C语言程序设计 笔试试题(A卷)
2. 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:删除字符串中所有的*号。在编写函数时,不得使用C语言提供的字符串函数。(本小题10分)
例如:若字符串中的内容为 ****A*BC*DEF*G*******
删除后,字符串内容应该是:ABCDEFG void fun( char *a)
{
}
main()
{ int s[81];
gets(s);
fun(s);
puts(s);
}
第11页 (共14页)
C语言程序设计 笔试试题(A卷)
3. 60名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun(),它的功能是:找出学生的最低分,由函数值返回。(本小题10分)
#include
#include
#define N 60
struct slist { double s;
struct slist *next; };
typedef struct slist STREC; double fun(STREC *h)
{
}
第12页 (共14页)
C语言程序设计 笔试试题(A卷)
STREC * creat (double *s) { STREC *h,*p,*q;
int i=0;
h=p=(STREC*)malloc(sizeof(STREC));
p->s=0;
while(is=s[i]; i++; p->next=q; p=q;
}
p->next=NULL;
return h;
}
outlist(STREC *h)
{ STREC *p;
p=h->next;
printf("head");
do
{
printf("->%2.0f ",p->s);
p=p->next;
}while(p!=0);
printf("->NULL\n\n "); }
第13页 (共14页)
C语言程序设计 笔试试题(A卷)
main()
{ double s[N]={56,89,76,95,91,68,75,85}, max;
STREC *h;
h=creat(s);
outlist(h);
max=fun(h);
printf("min=%6.1f\n ",max); }
第14页 (共14页)