精品课程之《C语言》

 

 

C语言样卷

一、 选择题(15’*2)
1.将十六进制数176转换成十进制数是( )
(A)366 (B)268 (C)374 (D)270
2.在C语言中,要求运算数必须是整型的运算符是( )
(A)% (B)/ (C)< (D)!
3.若int类型数据占两个字节,则以下程序的输出为( )
main( )
{ int k= -1;
printf("%d,%u\n",k,k);
}
(A)-1,-1 (B)-1,32767 (C)-1,21768 (D)-1,65535
4.不合法的八进制数是( )
(A)0 (B)028 (C)077 (D)01
5.以下程序的输出结果为( )
(A)abc (B)xyzabc (C)xyz (D)xyz abc
#include <stdio.h>
void f(char *s,char *t)
{
int i=0,j=0;
while(*(s+i)) i++;
while(s[i++]=t[i++]);
}
main()
{
char s[]="xyz",t[]="abc";
f(s,t);
printf("%s\n",s);
}
6.若有以下说明和语句,且0<=i<10,则下面哪个选项是对数组元素的错误引用( )
int a[ ]={1,2,3,4,5,6,7,8,9,0},*p,i;
p=a;
(A)&(a+i) (B)a++ (C)&p (D)&p[i]
7.若有以下的说明和语句, 则它与( )中的说明是等价的。
char s[3][5]={"aaaa","bbbb","cccc"};
A. char s[ ][ ] ={"aaaa","bbbb","cccc"};
B. char s2[3][] ={"aaaa","bbbb","cccc"};
C. char s3[ ][5]={"aaaa","bbbb","cccc"};
D. char s4[ ][4]={"aaaa","bbbb","cccc"};
8.c语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( )。
A. 地址传递 B. 由实参传给形参,再由形参传回给实参
C. 单向值传递 D. 由用户指定传递方式
9.若用数组名作为函数调用的实参,传递给形参的是数组的( )。
A. 数组的首地址 B. 数组第一个元素的值
C. 数组中全部元素的值 D. 数组元素的个数
10.在一个c源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则此变量需要使用的存储类别是( ) .
A. extern B. register C. auto D. static
11.如果在一个函数中的复合语句中定义了一个变量,则正确的说法是()。
A. 该变量只在该复合语句中有效 B. 该变量在该函数中有效
C. 该变量在本程序范围内均有效 D. 该变量为非法变量
12.下列程序中有3个具有相同功能,只有一个程序和其他程序所完成的功能不同,请选择( )
(A) sum=0;
i=0;
while(i<=50)
sum+=i++;
(B) sum=0;
i=1;
while(i++<50)
sum+=i;
(C) sum=0;
i=0;
while(i<50)
sum+=++i;
(D) sum=0;
i=0;
while(++i<=50)
sum+=i;

13.下面程序段循环体执行次数为( )
int n=1;
do
{
n= + +n*5;
}while(n=10)
(A)1次 (B)2次 (C) 3次 (D)4次
14.下列程序的输出结果是( )
(A)xyabcAB (B)abcABz (C)Ababcz (D)xycdBCD
#include <stdio.h>
main()
{
char *p1,*p2,str[50]= "xyz";
p1="abcd";
p2="ABCD";
strcpy(str+2,strcat(p1+2,p2+1));
printf("%s",str);
}
15.有下列程序:
main( )
{
int array [ ][3]={1,2,3,4,5,6,7,8,9};
int k,l,n=0;
for(k=0;k<3;k++)
printf("%3d",array[k][k]);
printf("\n");
for(k=0;k<3;k++)
{
for(l=k+l;l<3;l++)
{
n=array[k][l];
array[k][l]=array[l][k];
array[l][k]=n;
}
}
for(l=0;l<3;l++)
printf("%3d",array[l][0]);
printf(“\n”);
}
此程序的功能是对数组array表示的3阶方阵进行( )
(A) 转置
(B) 第2行调至第一行、第3行调至第2行、第1行调至第3行
(C) 相邻元素交换
(D) 第1行与第1列对调
二、 填空题(2’*5=10’)
16.一个C语言程序是由 组成的。
17.设C语言中,int类型数据占2个字节,则long int类型数据占 个字节;unsigned int类型占 个字节。
18.若有excc((v1,v2),(v3,v4,v5),v6);该调用语句中含有 个实参。
19.下面的for循环语句的循环次数是 。
int i;
for(i=1;i<100;i+=2) i++;
20.下列程序完成的功能是

#include <stdio.h>
main()
{
int ch1,ch2;
while((ch1=getchar())!='\n')
if(ch1>='a'&&ch1<='z')
{
ch2=ch1-32;
putchar(ch2);
}
else putchar(ch1);
}

三、写出以下程序的运行结果(4’* 5)
21、 下程序正确的运行结果是( )
main()
{ int a=2,i;
for(i=0;i<3;i++)printf("%d",f(a));
}
f(int a)
{ int b=0;static int c=3;
b++,c++;
return(a+b+c);
}
22、#include "math,h"
main()
{ int n;
scanf("%d",&n);
printf("%d=",n);
if(n<0)printf("-");
n=fabs(n);
fun(n);
}
fun(int n)
{ int k,r;
for(k=2;k<sqrt(n);k++)
{ r=n%k;
while(r==0)
{ printf("%d",k);n=n/k;
if(n>1)printf("*");
r=n%k;
}
}
if(n!=1)printf("%d\n",n);
}

23、int x1=30,x2=40;
main( )
{ int x3=10,x4=20;
sub(x3,x4);
sub(x2,x1);
printf("%d,%d,%d,%d\n",x3,x4,x1,x2);
}
sub(int x,int y)
{ x1=x;x=y;y=x1; }
24、#include <stdio.h>
main()
{ int a=4,b=7;
printf(“%d\n”,(a=a+1,b=b+a,b+1));
printf(“%d\n”,a=a+1,b=b+a,b+1);
}
四、程序填空题(5’*2)
25、 下面的程序通过函数average()计算数组中各元素的平均值,请填空。
#include <stdio.h>
float average(int pa[],int n)
{
int i;
float avg=0.0;
for(i=0;i<n;i++)
avg=avg+ ;
avg= ;
return avg;
}
main()
{
int i,a[5]={2,4,6,8,10};
float mean;
mean=average(a,5);
printf("mean=%f\n",mean);
}
26、下面程序用0-9之间不同的3个数构成一个3位数,统计共有多少种方法,请填空。
#include <stdio.h>
main()
{
int i,j,k,count=0;
for(i=1;i<=9;i++)
for(j=0;j<=9;j++)
if( ) continue;
else
for(k=0;k<=9;k++)
if( ) count++;
printf("count=%d",count);
}
五、编程题(30’)
27、1!+2!+3!+……+10!
28、编写一个判断一个数是否是素数的函数,若是返回1,否则返回0。
29、输出以下图形:


 

版权所有·苏州农业职业技术学院电子信息技术系
地址:苏州市西园路279号