模拟试题(一)
一、填空(10分)
1.设x、y、z和k都是int型变量,则执行表达式:x=(y=4,z=16,k=32) 后,x的值为。 2.设x和y均为int型变量,则以下语句:x+=y;y=x-y;x-=y;的功能是 。 3.设有定义int a=12,b=12;则语句 printf(\,%d\\n\,--a,++b);的输出结果是: 4.执行语句:for(i=1;i++<4;)后;变量i的值是 。 5.有以下程序运行后,输出结果是 。 #define PT 5.5
#define S(x) PT*x*x main()
{int a=1,b=2;
printf(\ }
6.设有如下定义:a=1,b=2,c=3,d=4,m=2,n=2; 则执行表达式:(m=a>b)&&(n=c>d)后,n的值为 。 二、选择题(20分)
1.设有如下的变量定义: int i=8,k,a,b; unsinged long w=5; double x=1.42,y=5.2;
则以下符合C语言语法的表达式是
A)a+=a-=b=4*(a=3) B)x%(-3) C)a=a*3=2 D)y=float(i) 2.假定有以下变量定义: int k=7,x=12; 则能使值为3 的表达式是 A)x%=k%=5 B)x%=k-k%5 C)x%=k-k%3 D)(x%=k)-(k%=5) 3.以下程序运行后,输出结果是
A)cde B)字符c的ASCII码值 C)字符c的地址 D)出错 main()
{ char *s=\ s+=2;
printf(\ }
4.以下叙述中正确的是
A) 输入项可以是一个实型常量,如 scanf(\,3.5);
B) 只有格式控制,没有输入项,也能正确输入数据到内存,如: scanf(\,
b=%d\);
C) 当输入一个实型数据时,格式控制可以规定小数点后的位数,如:scanf(\,
&f);
D) 当输入数据时,必须指明变量地址,例如: scanf(\,&f); 5.以下程序输出结果是
A)7 B) 6 C)5 D)4 main() { int m=5;
if(m++>5)printf(\else printf(\ }
6. 当执行以下程序段时
A)循环体将执行一次 B)循环体将执行两次
C)循环体将执行无限次 D)系统将提示有语法错误 x=-1;
do { x=x*x;} while(!x); 7. 执行以下程序后,输出的结果是
A)-1 B)1 C)8 D)0 main()
{ int y=10;
do{y--;} while(--y); printf(\}
8. 在下列选项中,没有构成死循环的程序段是
A) int i=100; B) for( ; ; ); C) int k=1000; D) int s=36,su=0; while (1) do {++k} while(s)su+=s--; {i=i0+1; while (k>=1000) ; if(i>100) break;}
9. 以下程序运行后,如果从键盘上输入ABCDE<回车>,则输出结果为 A)8 B)7 C)6 D)5 func(char str[]) { int num =0;
while(*(str+num)!='\\0') num++; return(num); }
main( )
{char str[10],*p=str;
gets(p); printf(\ }
三、阅读下面程序,写出程序运行的输出结果(25分) 1. 下面程序的运行结果是 : main()
{ char ch[7]={\ int i,s=0;
for(i=0;ch[i]>='0'&& ch[i]<'9';i+=2) s=10*s+ch[i]-'0'; printf(\ }
2. 以下程序运行后,输出结果是 int d=1; fun(int p) { int d=5; d+=p++;
printf(\}
main() {int a=3; fun(a); d+=a++;
printf(\}
3. 下面程序的输出结果是 main( )
{ int y=18,i=0,j,a[8]; do
{ a[i]=y%2;i++; y=y/2;
} while(y>0);
for(j=i-1;j>=0;j--) printf(\ printf(\}
4. 以下程序运行后,输出结果是 func(int a,int b) { static int m=0,i=2; i+=m+1;
m=i+a+b; return(m); } main()
{ int k=4,m=1,p;
p=func(k, m);printf(\,\ p=func(k, m);printf(\}
5. 以下程序运行后,输出结果是 main( )
{ static char a[]=\char *p1,*p2; int k;
p1=a; p2=b;
for(k=0;k<7;k++) if(*(p1+k)==*(p2+k)) printf(\ printf(\ }
四、根据下列各编程题题意填空(25分)
1. 下面程序把从终端读入的10个整数以二进制的方式写到一个名为bi.dat 的新文件中。
#include \ FILE *fp; main( ) { int i,j;
if((fp=fopen( ,\for(i=0;i<10;i++ ) { scanf(\ );
fwrite(&j,sizeof(int),1, ); }
fclose(fp); }
2.下面fun函数的功能是从a数组中查找值为y的元素;若找到,返回该元素的下标值,若不存在值为y的元素,返回0;数列放在a数组的a[1]到a[n]中,a[0]元素用来作为临时存储单元。 fun( ,int y,int n) { int k=0; a[0]=y; k=n;
while( )k--; return ; }
3.以下程序的功能是在有10个元素的数组中求出与平均值最接近的元素并输出该元素和平均值。 #include \ # include
for(i=0;i<10;i++) sum+=a[i]; return(sum/10); }
main() { int i,k;
float a[10],aver,b,diff;
for(i=0;i<10;i++) scanf(\ ); aver=average(a); k=0;
diff=fabs(a[0]-aver); for(i=1;i<10;i++) {b=fabs(a[i]-aver); if(b {diff=b; ;} } printf(\个元素的平均值是%f\\n\printf(\最接近平均值的元素是%f\\n\ } 五、编写程序(20分) 1.请编一个函数int fun(int pm),它的功能是:判断pm是否是素数。若pm是素数,返回1;若不是素数,返回0。pm的值由主函数从键盘读入。 2.请编写函数void fun(int *a, int *n, int y),它的功能是:把y值插入到a数组中,a数组中的数由主函数按由小到大的次序从键盘读入,y的值也从键盘读入。插入后,数组中数仍然有序。 组s的值由主函数从键盘读入,用-1来结束输入。 参考答案 一、填空(10分) 1、 设x、y、z和k都是int型变量,则执行表达式:x=(y=4,z=16,k=32) 后,x的值为 32 。 2、 设x和y均为int型变量,则以下语句:x+=y;y=x-y;x-=y;的功能是 交换 。 3、 设有定义int a=12,b=12;则语句 printf(\,%d\\n\,--a,++b);的输出结果是11, 13 4、 执行语句:for(i=1;i++<4;)后;变量i的值是 5 。 5、 9.5 6、 2 二、选择题(20分) 1、A 2、D 3、C 4、D 5、B 6、A 7、D 8、D 9、D 三、阅读下面程序,写出程序运行的输出结果(25分) 1、6 2、8 4 3、10010 4、8,17 5、CDG 四、根据下列各编程题题意填空(25分) 1、\ &j fp 2、int a[] a[0]!=a[k] k 3、&a[i] k=i 五、编写程序(20分) 1、#include \#include \ int fun(int pm) {int i; if (pm>2) {for(i=2;i<=sqrt(pm);i++) if(pm%i==0)break; if (i>=sqrt(pm))return 1; else return 0; } else if(pm==2)return 1; else return 0; } main() {int x; scanf(\ if(fun(x)==1)printf(\是素数\\n\else printf(\不是素数\\n\} 2、 #include \ void fun(int *a, int *n, int y) {int i; *n=*n-1; for(i=*n-1;a[i]>y;i--) a[i+1]=a[i]; a[i+1]=y; (*n)++; } main() {int a[10],i,x,n=0; printf(\请输入数组a的元素\for(i=0; ;i++) {scanf(\if (a[i]==-1)break;} printf(\请输入要插入的x的值\scanf(\fun(a,&n,x); for(i=0;i