苏州市职业大学2010─2011学年第二学期试卷《计算机语言C》答案与评分标准一、填空题 (每空1分,共161分)1. 下列程序由两个源程序文件:t4.h 和t4.c 组成,程序编译运行的结果是:【】。
t4.h 的源程序为:#define N 10#define f2(x) (x*N)t4.c 的源程序为:#include <stdio.h>#define M8#define f(x)((x)*M)#include "t4.h"main( ){ int i,j;i=f(1+1); j=f2(1+1);printf("%d%d\n",i,j);}【答案】16 112. 执行以下程序后,输出'#'号的个数是【】。
#include <stdio.h>main(){ int i,j;for(i=1; i<5; i++)for(j=2; j<=i; j++) putchar('#');}【答案】63. 请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。
【】( double,double);main(){ double x,y;scanf("%lf%lf",&x,&y );printf("%lf\n",max(x ,y));}double max(double a,double b){ return(a>b ? a:b); }【答案】double max4. 下面程序把从终端读入的10个整数以二进制的方式写到一个名为bi.dat的新文件中。
请填空。
#include<stdio.h>FILE *fp;main( ){ int i,j;if((fp=fopen("【】","wb"))==NULL) exit(0);for(i=0;i<10;i++){ scanf("%d",&j);fwrite(&j,sizeof(int),1,【】);}fclose(fp);}【答案】bi.dat fp5. 以下程序中函数fun 的功能是:统计person 所指结构体数组中所有性别(sex)为M的记录的个数,存入变量n 中,并作为函数值返回。
请填空。
#include <stdio.h>#define N 3typedef struct{ int num; char nam[10]; char sex; } SS;int fun(SS person[]){ int i,n=0;for(i=0; i<N; i++)if( 【】=='M') n++;return n;}main(){ SS W[N]={{1, "AA",‟F‟},{2, "BB",'M'},{3, "CC",'M'}}; int n;n=fun(W); printf("n=%d\n", n);}【答案】person[i].sex6. 己知a所指的数组中有N个元素。
函数fun的功能是,将下标k(k>0)开始的后续元素全部向前移动一个位置。
请填空。
void fun(int a[N],int k){ int i;for(i=k;i 【】;i++)a【】=a[i];}【答案】<N i-17. 若有定义语句:int a=5;,则表达式a++的值是【】。
【答案】58. 若有定义:int k; ,以下程序段的输出结果是【】。
for(k=2;k<6;k++,k++) printf("##%d",k);【答案】##2##49. 以下程序的输出结果是【】。
#include <stdio.h>void fun(int x){if(x/2>0) fun(x/2);printf("%d",x);}main(){fun(3);printf("\n");}【答案】1310. 以下程序运行后的输出结果是【】。
main(){ int i=10, j=0;do{ j=j+i; i--;}while(i>2);printf("%d\n",j);}【答案】5211. 下面程序的运行结果是:【】int f( int a[], int n){ if(n>1) return a[0]+f(&a[1],n-1);else return a[0];}main ( ){ int aa[3]={1,2,3},s;s=f(&aa[0],3); printf("%d\n",s);}【答案】612. 下列程序运行后的输出结果是【】。
void swap(int x,int y){ int t;t=x;x=y;y=t;printf("%d %d ",x,y); }main( ){ int a=3,b=4;swap(a,b); printf("%d %d\n",a,b);}【答案】4 3 3 413. 设i,j,k均为int型变量,则执行完下面的for循环后,k的值为【】。
for(i=0,j=10;i<=j;i++,j--)k=i+j;【答案】1014. 以下函数的功能是计算s=1+1/2!+1/3!+……+1/n!,请填空。
double fun(int n){double s=0.0,fac=1.0; int i;for(i=1;i<=n;i++){fac=fac【】;s=s+fac;}return s;}【答案】*(1.0/i)15. 以下程序运行后的输出结果是【】。
main(){ int a=1,b=3,c=5;if (c=a+b) printf("yes\n");else printf("no\n");}【答案】yes16. 以下fun函数的功能是在N行M列的整形二维数组中,选出一个最大值作为函数值返回,请填空。
(设M,. N已定义)int fun(int a[N][M]){int i,j,row=0,col=0;for(i=0;i<N;I++)for(j=0;jif(a[i][j]>a[row][col]){row=i;col=j;}return(【】);}【答案】a[row][col]17. 下列程序的运行结果是【】。
int k=0;void fun(int m){m+ =k;k+ =m;printf("m=%dk=%d",m,k+ +);}main( ){ int i=4;fun(i+ +); printf("i=%dk=%d\n",i,k);}【答案】m=4 k=4 i=5 k=518. 以下程序运行后的输出结果是【】。
#include<stdio.h>main(){int a=200,b=010;printf(”%d%d\n”,a,b);}【答案】200819. 下列程序用于判断a、b、c 能否构成三角形,若能,输出YES,否则输出NO。
当给a、b、c 输入三角形三条边长时,确定a、b、c 能构成三角形的条件是需同时满足三个条件:a+b>c,a+c>b,b+c>a。
请填空。
main( ){ float a,b,c;scanf("%f%f%f",&a,&b,&c);if( 【】)printf("YES\n"); /*a、b、c 能构成三角形*/ else printf("NO\n"); /*a、b、c 不能构成三角形*/}【答案】(a+b>c)&&(a+c>b)&&(b+c>a)20. 下列程序的输出结果是【】。
#include <string.h>main( ){ char a[ ]={'\1', '\2', '\3', '\4', '\0'};printf("% d%d\n",sizeof(a),strlen(a));}【答案】5 421. 请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。
【】( double,double);main(){ double x,y;scanf("%lf%lf",&x,&y );printf("%lf\n",max(x ,y));}double max(double a,double b){ return(a>b ? a:b); }【答案】double max22. 设i,j,k均为int型变量,则执行完下面的for循环后,k的值为【】。
for(i=0,j=10;i<=j;i++,j--)k=i+j;【答案】1023. 有下列程序:int sub(int n) { return(n/10+n%10);}main( ){ int x,y;scanf("%d",&x);y=sub(sub(sub(x)));printf("%d\n",y);}若运行时输入:1234<CR>,程序的输出结果是【】。
【答案】1024. 下列程序的功能是输出如下形式的方阵:13 14 15 169 10 11 125 6 7 81 2 3 4请填空。
main( ){ int i,j,x;for(j=4;j 【】;j--){ for(i=1;i<=4;i+ +){ x=(j-1)*4+ 【】;printf("%4d",x);}printf("\n");}}【答案】>0 i25. 若有程序,要求给i赋10,给j赋20,则应该从键盘输入【】。
main(){ int i,j;scanf("i=%d,j=%d",&i,&j);printf("i=%d,j=%d\n ",i,j);}【答案】i=10,j=2026. 下列程序中的函数strcpy2( )实现字符串两次复制,即将t 所指字符串复制两次到s 所指内存空间中,全并形成一个新字符串。