资料:软件学院
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、单选题(每小题1分,共10分)
1. 无法实现数学公式 ab/xy 运算的语句是_______。
A)a*b/x*y B)a*b/x/y
C)a*b/(x*y) D)a/(x*y)*b
2. 设 int x=1, y=1;表达式(!x||y--)的值是_______。
A)0 B)1
C)2 D)-1
3. 若有语句:int a[3][4]={0};则下面正确的叙述是。
A)只有元素a[0][0]可得到初值0
B)此定义语句不正确
C)数组a中各元素都可得到初值,但其值不一定为0
D)数组a中每个元素均可得到初值0
4. 逻辑运算符两侧运算对象的数据类型。
A)只能是0或1 B)只能是0或非0正数
C)只能是整型或字符型数据D)可以是任何类型的数据
5. 设int a=5,b=4;则表达式(a=b++)?++a:b++的值是。
A)4 B)5
C)6 D)3
6. 以下不正确的说法是。
A)全局变量、静态变量的初值是在编译时指定的
B)静态变量如果没有指定初值,则其初值为0
C)动态局部变量如果没有指定初值,则其初值不确定
D)函数中的静态变量在函数每次调用时,都会重新设置初值
7. 若有说明:int *p1, *p2,m=5,n=6;以下有不正确赋值语句的选项是。
A)p1=&m; p2=&p1 ; B)p1=&m; p2=&n; *p1=*p2 ;
C)p1=&m; p2=p1 ; D)p1=&m; *p1=*p2 ;
8. 当定义一个结构变量时,系统分配给它的空间大小是。
A)各成员所占内存空间的总和
B)结构体中第一个成员所占的内存空间
C)成员中占内存空间最大者所占的存储空间
D)结构体中最后一个成员所占的存储空间
9. 以下选项中合法的字符常量是。
A)"B" B)'\010'
C)68 D)D
10. 关于函数的返回值,以下正确的是_______。
A)任何函数都有返回值
B)函数的返回值类型和return语句的表达式类型相同
C)函数的返回值类型和函数的类型相同
D)如未指定函数的类型,则其返回值为void类型
二、填空题(每空1分,共10分)
1、若a是int变量,则执行表达式a=35/3%3后,a的值是。
2. 在一个函数内部直接或间接调用自身称为函数的调用。
3. C程序的运行总是从函数开始的。
4. 设有如下定义: int x=10,y=3,z;
则语句printf("%d\n",z=(x%y,x/y)); 的输出结果是。
5. 计算 a 、 b 中最小值的条件表达式为。
6. 函数fopen("data","r")以只读方式打开了一个文件。
7. 已知 int j,i=1; 则执行j=-i++; 语句后,变量i和j的值为。
8.有如下定义:
struct{int x; int y;}s[2]={{2,2},{5,4}}, *p=s;
则:表达式 ++p->x 的结果是。
9. 有定义语句:char s[]="abcdef"; 则数组s有个元素。
10. 若i为整型变量,i=0;
while (i=0) i++;
则以上循环执行次。
哈尔滨工程大学本科生考试试卷
(2011 年秋季学期)
课程编号: 0920111 课程名称:程序设计基础
三、阅读程序,写出程序输出结果(每小题4分,共24分)
1.
#include "stdio.h"
void main( )
{ int x;
scanf("%d",&x);
if(x++>5)
printf("%d",x);
else
printf("%d\n", --x);
}
程序运行时,输入的数据为3。
2.
#include <stdio.h>
void main()
{int i,j,m,n;
m=n=1;
for(i=0;i<2;i++)
for(j=0;j<2;j++)
if(j>=i)m=1;
n++;
printf("%d\n",n);
}
3.
#include <stdio.h>
void main()
{int a[5]={1,3,5,7,9},i,x;
x=a[4];
for(i=3;i>0;i--)
a[i+1]=a[i];
a[0]=x;
printf("%d",a[2]);
}
4.
#include <stdio.h>
int func(int,int);
void main()
{int k=4,m=1,p;
p=func(k+3,m+2);
printf("%4d",p);
p=func(k,m);
printf("%4d\n",p);
}
int func(int a, int b)
{static int m=2;
int i=1;
i+=m+1;
m=i+a+b;
return m;
}
5.
#include<stdio.h>
int b=2;
int func(int *a)
{ b+=*a; return(b); }
void main()
{int a=2,res=4;
res+=func(&b);
printf(”%d\n”,res);
}
6.
#include "stdio.h"
void main()
{ struct cmplx{ int x;
int y;
} cnum[2]={6,2,4,9};
printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].x);
}
四、程序填空(每空2分,共24分)
1. 求S=a+aa+aaa+…+aa……a之值。
其中a是一位数字,a、n由键盘输入。
例如:a=2,n=5时,S=2+22+222+2222+22222。
#include <stdio.h>
void main()
{int a,n,i=1,s=0,t=0;
scanf("%d%d",&a,&n);
t= 【1】 ;
for(i=1; 【2】 ;i++)
{s=s+t;
t= 【3】 +a;
}
printf("%d\n",s);
}
2. 求数组a中偶数的个数和偶数的平均值
#include <stdio.h>
void main()
{int a[10],k,s,i;
float ave;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(k=s=i=0;i<10;i++)
{if( 【4】 !=0)
continue;
s+= 【5】 ;
k++; }
if(k!=0)
{ ave= 【6】 ;
printf("%d,%f",k,ave);
}
}
3. 下列程序的功能是,判断字符串是否是“回文”。
(提示:回文是指正反序相同的字符串,例如:"13531")。
#include <stdio.h>
【7】 fun(char str[])
{ int n,k,flag=1;
for(n=0;str[n]!='\0';n++);
for(k=0;k<n/2;k++)
if(str[k]!=str[n-1-k])
{ flag=0;
【8】; }
return flag;
}
void main()
{ char s[80];
printf("Please enter string:");
gets(s);
if( 【9】 ==1)
printf("Yes!\n");
else
printf("No!\n");
}
4. 程序的功能是:由键盘输入一个文件名,然后把从键盘输入的字符依次存放到该文件中,用#作为结束输入的标志。
n个
#include <stdio.h>
#include <stdlib.h>
void main()
{ 【10】 *fp;
char ch,fname[10];
printf("Input the name of file \n");
gets(fname);
if((fp=fopen(fname, 【11】))==NULL)
{printf("Cannot open the file!\n");
exit(0); }
printf("Enter data\n");
while((ch=getchar())!='#')
fputc( 【12】 ,fp);
fclose(fp);
}
五、程序改错(每个正确语句3分,共12分)
1. 以下程序是用选择法对10个整数按降序排序。
#include "stdio.h"
#define N 10
void sort(int a[] );
void main()
{int i,a[10];
for(i=0;i<=N-1;i++)
scanf("%d",&a[i]);
sort(a[10],N); /***错误语句1***/ printf("output the sorted array:\n");
for(i=0;i<=N-1;i++) printf("%5d",a[i]);
printf("\n");
}
void sort(int a[ ])
{int i,j,k,t;
for(i=0;i<N-1;i++)
{ k=i;
for(j=i+1;j<N;j++)
if(a[j]<a[k]) k=j; /***错误语句2***/
if(k!=i){t=a[i];a[i]=a[k];a[k]=t;}
}
}
2. 下面程序的功能是:将一个字符串中第m个字符开始的全部字符复制成为另一个字符串。
#include<stdio.h>
void strcopy(char *str1,char *str2,int m)
{ char p1,p2; /***错误语句3****/
p1=str1+m; /***错误语句4***/
p2=str2;
while(*p1!='\0')
*p2++=*p1++;
*p2='\0';
}
void main()
{int m;
char *p1,*p2,str1[80],str2[80];
p1=str1;p2=str2;
gets(p1); scanf("%d",&m);
strcopy(str1,str2,m);
puts(p1);puts(p2);}
六、编写程序(共20分)
1. 统计某字符在一个字符串中出现的次数。
(7分)#include<stdio.h>
2. 10个评委打分,去掉最高分和最低分,求平均得分。
(7分) (不允许用数组)。
3. 用“递归”方法编写程序,计算两个正整数的最大公约数。
(6分)。