广州大学学年第学期考试卷
课程程序设计基础考试形式(开/闭卷,考试/查)信息与机电工程学院系专业班级
学号姓名
一、选择题(每题1分,共10分)
1、一个C语言源程序是由()。
A、一个主程序和若干个子程序组成
B、一个或多个函数组成
C、若干个过程组成
D、若干个子程序组成
2、以下不正确的C语言标识符是()。
A、ABC
B、abc
C、a_bc
D、ab.c
3、设n=10,i=4,则运算n%=i-1执行后,n 的值是()。
A、0
B、3
C、2
D、1
4、设int a=4,b=2,则++a-b的结果为(),a的结果为();b的结果为()。
A、2
B、3
C、4
D、5
5、C语言用()表示逻辑“假”的值。
A、true
B、t或y
C、非零整数值
D、整数0
6、对于for(表达式1;;表达式3)可以理解为()。
A、for(表达式1;0;表达式3)
B、for(表达式1;1;表达式3)
C、for(表达式1;表达式1;表达式3)
D、for(表达式1;表达式3;表达式3)
7、在定义int a[10];之后,对a的引用正确的是()。
A、a[10]
B、a[6.3]
C、a(6)
D、a[10-10]
8、以下不正确的叙述是()。
A、宏替换不占用运行时间
B、宏名无类型
C、宏替换只是字符替换
D、宏名必须用大写字母表示
二、填空题(每空2分,共20分)
阅读以下C代码,将答案填入___(n)___内。
[程序1]
#include <stdio.h>
int p(int k,int a[])
{int m,i,c=0;
for(m=2;m<=k;m++){
for(i=2; i<=m;i++)
if(!(m%i)) break;
if(i==m) a[c++]=m;
}
return c;
}
#define MAXN 20
void main ( )
{int i,m,s[MAXN];
m=p(13,s);
for(i=0;i<m;i++)
printf("%4d\t",s[i]);
printf("\n");
}
函数int p(int k,int a[])的功能是(1)__________________。
[程序2]
本程序找出正文文件“st.dat”中的各个不同整数。
该正文文件中各整数间以空格字符、TAB符(制表符)、回车符分隔。
程序中用数组b[]存贮不同的整数,变量k为已存入数组b中的不同整数的个数,并假定文件中的不同整数个数不超过1000个。
#include<stdio.h>
#define N 1000
main ( )
{ FILE ___(2)___;
int b[N],d,i,k ;
if ((fpt=fopen(“st.dat”,”r”)==NULL) { /* 以读方式打开文件*/
printf (“Cannot open file.\n”);
return;
}
k=0;
while (fscanf (___(3)___)==1) { /* 从文件中读一个整数*/
b[k]=d;
for (i=0;b[i]!=d;i++);
if (i==k) k++;
}
fclose(fpt);
for (i=0;i<k;i++) printf (“%d”, b[i]);
printf (“\n”);
}
[答案] (2)________________________________________
(3)________________________________________
[程序3]
#include <stdio.h>
void s(int a[],int n)
{int i,j,t;
for (i=0;i<n;i++){
for(t=a[i],j=i-1;j>=0&&t<a[j];j--)
a[j+1]=a[j];
a[j+1]=t;
}
}
main( )
{int i,c[]={15,3,8,9,6,2};
s(c,6);
for(i=0;i<6;i++)
printf("%4d\t",c[i]);
printf("\n");
}
程序3的输出结果是(4)______________;
函数s(int a[],int n)的功能是(5)_________________________。
4、执行下列语句后,a的值是___________。
int a=12; a*=2+3;
5、定义int a[]={1,2,3,4,5,6},*p=a;表达式(*++p)--的值是______。
6、设a=13.6,b=8 表达式a+b%3*(int)(a-b)/4的值为________。
7、C语言源程序文件的后缀是___________,经编译后生成的文件的后缀是_________,连接后生成的文件的后缀是.exe。
三、理解题(每题5分,共50分)
1、以下程序,从键盘上输入”how are you?”,输出是什么?
main()
{ char a[7];
scanf(“%s”,a);
printf(“%s”,a);
}
2、以下程序执行结果是什么?
#include<stdio.h>
main()
{
int a[3][3]={1,2,3,4,5,6,7,8,9},i,s=1;
for(i=0;i<=2;i++)
s*a[i][i];
printf(“s=%d\n”.s);
}
3、若已定义int a[]={1,2,3,4,5,6};且有*p=a;则表达式(*++p)++的值是__________.
#include <stdio.h>
void FUN(int x,int y)
{
int temp;
temp=x;
x=y;
y=temp;
}
void main()
{
int a=10,b=20;
FUN(a,b);
printf(“%d,%d”,a,b);
}
5、以下程序的执行结果是:# include <stdio.h>
typedef struct{
long x[2];
int y[4];
char z[8];
}MYTYPE;
void main()
{
MYTYPE a;
printf("%d\n",sizeof(a)); }
#include <stdio.h>
main()
{
int *p,i;
i=5;
p=&i;
i=*p+10;
printf(“i=%d\n”,i); }
7、以下程序的执行结果#include<stdio.h>
int x=1;
func(int x)
{
x=3;
}
void main()
{
func(x);
printf(“x=%d\n”,x); }
8、以下程序的执行结果#include <stdio.h> struct stru
{
int x;
char c;
};
void func(struct stru *b)
{
b->x=20;
b->c='y';
}
void main()
{
struct stru a={10,'x'},*p=&a;
func(p);
printf("%d,%c\n",a.x,a.c);
}
9、以下程序输入language programming<CR>的执行结果#include <stdio.h>
main()
{
char str[30];
gets(str);
printf("str=%s\n",str);
}
10、以下程序的执行结果
#include <stdio.h>
main()
{
int i,j;
for(i=4;i>=1;i--)
{
printf(“*”);
for(j=1;j<=4-i;j++)
printf(“\n”);
}
}
四.编程(每小题10分,共20分)
1、编写一段将n个数按输入顺序的逆序排列输出的程序,要求应用指针且不另外开设数组。
2、编写一段实现二分法查找的程序。