五邑大学试卷_C语言程序设计_信息学院各专业_B卷
选择题(30%:15小题,每小题2分)
1. 在一个C程序中()。
A)main函数必须出现在所有函数之前B)main函数可以在任何地方出现
C)main函数必须出现在所有函数之后D)main函数必须出现在固定位置
2. C语言中最基本的数据类型包括( )。
A)整型、浮点型、逻辑型B)整型、浮点型、字符型
C)整型、字符型、逻辑型D)整型、浮点型、逻辑型、字符型
3. 以下二维数组a 的正确说明是( )。
A)int a[1,1]; B)float a(3,4);
C)double a[2][4]; D)float a(3)(4);
4. 设有:int a=2,b=3,c=7,d=8,m=3,n=3; 执行(m=a>b)&&(n=c>d) 后的n 值为()。
A)0 B)1 C )2 D)3
5. 一般情况下,C语言是以()表示运算结果为逻辑真。
A)F B)T C)1 D)0
6. 设a、b和c都是int型变量,且a=3,b=4,c=5;则以下的表达式中,值为0的表达式是( )。
A)a&&b B)a<=b C)a||b+c&&b-c D)!((a
7. 若x=4,则x*=x+2的值为( )。
A)36 B)24 C)18 D)20
8. int *p1,*p2; 以下表达式错误的是( )。
A)p1+p2 B)p1-p2 C)p1=p2 D)p1= =p2
9. 设有如下定义:
struct sk
{ int a;
float b;
}data;
int *p;
若要使p指向data中的a域,正确的赋值语句是( )。
A)p=&a; B)p=data.a; C)p=&data.a; D)*p=data.a;
10. 下面各项中,含有错误的是()。
A)char s[10];
s="program";
B)char s[ ]={ 'p ', 'r ', 'o ', 'g ', 'r ', 'a ', 'm', '\0'};
C ) char s[10] ="program";
D)char s[10]={"program"};
11. while(leap) 和下列哪个等价?()
A)while (0) B)while (5)
C)while (leap= =0) D)while (leap!=0)
12. 有以下程序:
main()
{
int i,t[][3]={9,8,7,6,5,4,3,2,1};
printf("%d",t[2][1]);
}
执行后的输出结果是()。
A)6 B)5 C)3 D)2
13. 在嵌套使用if语句时,C语言规定else总是()。
A)和之前与其具有相同缩进位置的if配对。
B)和之前与其最近的if配对。
C)和之前与其最近的且不带else的if配对。
D)和之前的第一个if配对。
14. 设有字符数组str[20],以下哪条输入语句能将键盘输入的字符串送到数组中?()
A)scanf(“%c”,str); B)gets(str);
C)getchar(str); D)scanf(“%s”,str[0]);
15. 设指针变量p指向数组a的首地址,则以下哪个选项与其他三个选项不等价?()
A)*(p+i) B)*(a+i) C)p+i D)a[i]
填空题(20%:20空,每空1分)
1. C 源程序的基本单位是_ _ _____。
2. 根据变量的作用域,C 语言的变量分为 和 。
3. 在 C 语言中,将一个变量的地址称为该变量的__ ____;如果有一个变量专门用
来存放另一个变量的地址,则称它为 。
4. 简单变量作为函数参数时,其参数传递方式为__ _ ____。
5. 设 x, y, z 均为 int
型变量,则描述“ x 或y 中有一个小于z ”的表达式是
__ __。
6. 若函数定义为:
int data()
{ float x=9.9;
return(x); }
则函数返回的值是___ _____。
7. 设int a[4]={1,3,5,7};则*(a+2)的值为____ ____。
8. 设y 是int 型变量,请写出判断y 为奇数的关系表达式 。
9. 设有定义:int n,*k=&n;
以下语句利用指针变量k 读写变量n 中的内容,请将语句补充完整。
scanf("%d",___ _____);
printf("%d\n",__ ____);
10. 以下函数的功能是:把两个整数指针所指的存储单元中的内容进行交换。请填空。
void exchange(int *x,int *y)
{ int t;
t=*y;
*y=__ __;
*x=____ _;
}
11. 设有定义:int a=3,*p; 则能使指针变量p指向变量a的语句是___ __ ___。
12. 设i=3,执行表达式“m=++i”后m的值是。
13. 在C语言中,表达式1/2的值是,表达式1.0/2 的值是。
14. 将一个C源程序变为可执行的目标程序要经过和连接。
15. 设有字符数组str[20],使用输入语句能将键盘输入的字符串送到数组中。
1.
main()
{ int i=0,s=0;
while(i<5)
{ if(i%2= =1)
{ i++; continue; }
i++;
s=s+i;
}
printf("s=%d", s);
}
程序运行后输出:。
2.
main()
{ int n1,n2;
scanf(“%d”,&n2);
while(n2!=0)
{ n1=n2%10;
n2=n2/10;
printf(“%d”,n1);
}
}
程序运行后,若输入1298,则输出:。
3.
main()
{ int a[10]={2,4,0,-5,1,6,-8,5,6,5};
int i,s=0,count=0;
for(i=0; i<10; i++)
if(a[i]>0)
{ s=s+a[i];
count++;
}
printf ("s=%d,count=%d",s,count);
程序运行后输出:。
4.
main()
{ int a[6]={4,5,8,3,6,1};
int j,t;
for(j=0; j<5; j++)
if(a[j]>a[j+1])
{t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(j=0; j<6; j++)
printf("%d ",a[j]);
}
程序运行后输出:。
四、程序填空(根据给出的程序功能说明,补充完整程序中缺少的代码,每一空行只填写一条语句或一个表达式,不写、多写、错写不给分。)(16%:3小题,共8空,每空2分)
1. 鸡兔共有30只,脚共有90只,下面程序段是计算鸡兔各有多少只。
for( x=0; x<=30; x++)
{ y=30-x;
if(______________)
printf(“_______________\n”, x, y):
}
2. 数组a包括10个整型元素。下面程序的功能是求出a中各相邻两个元素的和,并将这些和存在数组b中,按每行3个元素的形式输出。
main()
{ int a[10],b[10], i;
for(i=0; i<10; i++)
scanf(“%d”,&a[i]);
for (__________; i<10; i++)
__________________;
for(i=1; i<10; i++)
{ printf(“%3d”, b[i]);
if (___________==0) printf(“\n”);
}
}
3. 下面程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。请在下划线处填写适当内容,使程序能正常运行。
#include
#include
void main()
{ char a[ ]="clanguage", t;
int i, j, k;
k=strlen(a);
for( i=0; i<=k-2; i+=2 )
for( j=i+2; j<=k-1; )
if( )
{ t=a[i]; a[i]=a[j]; a[j]=t; }
printf("%s",a);
printf("\n");
}
程序设计(14%:2小题,每小题7分)
1.编写程序,要求从键盘输入一个无符号整数x,并判断是否为素数,如果是打印yes,否
则打印no。
2. 编写函数
int sum(int a[],int n);
该函数返回数组a中a[0]~a[n-1]的和。比如设有数组x[]={1,2,3,4,5,6,7,8,9,10},则函数调用sum(x,10)的结果等于55。
int sum(int a[],int n)
{
}