C语言上机实训.docx
《C语言上机实训.docx》由会员分享,可在线阅读,更多相关《C语言上机实训.docx(22页珍藏版)》请在冰豆网上搜索。
C语言上机实训
C语言上机实训
试题2
所属语言:
C语言
试卷方案:
C语言上机实训
试卷总分:
100分
共有题型:
3种
一、程序填空共1题(共计30分)
第1题(30.0分)题号:
470
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
从两个数组中分别提取任意元素x[i],y[j],问|x[i]-y[j]|
的最小值是多少?
-------------------------------------------------------*/
#include
#include
/***********SPACE***********/
#definemin(x,y)(【?
】)xx:
y
intmin_distance(intx[],inty[],intm,intn)
{
intminimum=INT_MAX;
intindex_x=0,index_y=0;
while(index_x/***********SPACE***********/
if(【?
】)x[index_x]>=y[index_y]
{
minimum=min(minimum,x[index_x]-y[index_y]);
index_y++;
}
else
{
minimum=min(minimum,y[index_y]-x[index_x]);
/***********SPACE***********/
【?
】index_x++
;
}
returnminimum;
}
#include
voidmain(void)
{
intx[]={1,3,7,11,18};
intm=sizeof(x)/sizeof(int);
inty[]={4,5,8,13,22};
intn=sizeof(y)/sizeof(int);
inti,min_distance(int[],int[],int,int);
printf("\nComputeMinimumDistanceBetweenTwoSortedArrays");
printf("\n==================================================");
printf("\n\nGivenArray#1:
");
for(i=0;iprintf("%5d",x[i]);
printf("\n\nGivenArray#2:
");
for(i=0;iprintf("%5d",y[i]);
printf("\n\nMinimumDistance=%d",min_distance(x,y,m,n));
}
答案:
=======(答案1)=======
xx:
y
=========或=========
y>x?
x:
y
=======(答案2)=======
x[index_x]>=y[index_y]
=========或=========
y[index_y]<=x[index_x]
=======(答案3)=======
index_x++
=========或=========
index_x=index_x+1
=========或=========
++index_x
二、程序改错共1题(共计30分)
第1题(30.0分)题号:
26
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
实现3行3列矩阵的转置,即行列互换。
------------------------------------------------------*/
#include
fun(inta[3][3],intn)
{
inti,j,t;
for(i=0;ifor(j=0;j/**********FOUND**********/
scanf("%d",&a[i][j]);
for(i=0;i{
for(j=0;j
printf("%4d",a[i][j]);
printf("\n");
}
for(i=0;i/**********FOUND**********/
for(j=0;j{
/**********FOUND**********/
a[i][j]=t;
a[i][j]=a[j][i];
/**********FOUND**********/
t=a[j][i];
}
for(i=0;i{
for(j=0;jprintf("%4d",a[i][j]);
printf("\n");
}
}
main()
{
intb[3][3];
fun(b,3);
}
答案:
=======(答案1)=======
scanf("%d",&a[i][j]);
=========或=========
scanf("%d",(*(a+i)+j));
=======(答案2)=======
for(j=0;j
=========或=========
for(j=0;i>j;j++)
=========或=========
for(j=0;j<=i;j++)
=========或=========
for(j=0;i>=j;j++)
=========或=========
for(j=i+1;j=========或=========
for(j=i;j=========或=========
for(j=0;j<=i-1;j++)
=========或=========
for(j=0;i-1>=j;j++)
=========或=========
for(j=i+1;j<=n-1;j++)
=========或=========
for(j=i;j<=n-i;j++)
=======(答案3)=======
t=a[i][j];
=======(答案4)=======
a[j][i]=t;
三、程序设计共1题(共计40分)
第1题(40.0分)题号:
341
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
删除所有值为y的元素。
数组元素中的值和y的值由
主函数通过键盘输入。
------------------------------------------------*/
#include
#include
#include
#defineM20
voidwwjt();
voidfun(intbb[],int*n,inty)
{
/**********Program**********/
inti,j;
for(i=0;i<*n;)
{
if(bb[i]==y)
{for(j=i;j<*n;j++)
bb[j]=bb[j+1];
*n=*n-1;
}
else
i++;
}
/**********End**********/
}
main()
{
intaa[M],n,y,k;
printf("\nPleaseentern:
");scanf("%d",&n);
printf("\nEnter%dpositivenumber:
\n",n);
for(k=0;kprintf("Theoriginaldatais:
\n");
for(k=0;kprintf("\nEnteranumbertodeletede:
");scanf("%d",&y);
fun(aa,&n,y);
printf("Thedataafterdeleted%d:
\n",y);
for(k=0;kprintf("\n");
wwjt();
}
voidwwjt()
{
FILE*IN,*OUT;
intn;
inti[10];
into;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("ReadFILEError");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("WriteFILEError");
}
for(n=0;n<10;n++)
{
fscanf(IN,"%d",&i[n]);
}
fun(i,&n,3);
for(o=0;o{
fprintf(OUT,"%d\n",i[o]);
}
fclose(IN);
fclose(OUT);
}
答案:
----------------------
inti,j;
for(i=0;i<*n;)
{
if(bb[i]==y)
{for(j=i;j<*n;j++)
bb[j]=bb[j+1];
*n=*n-1;
}
else
i++;
}
----------------------
试题1
所属语言:
C语言
试卷方案:
C语言上机实训
试卷总分:
100分
共有题型:
3种
一、程序填空共1题(共计30分)
第1题(30.0分)题号:
417
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
利用全局变量计算长方体的体积及三个面的面积。
-------------------------------------------------------*/
#include
ints1,s2,s3;
intvs(inta,intb,intc)
{
intv;
/***********SPACE***********/
v=【?
】;
s1=a*b;
/***********SPACE***********/
s2=【?
】;
s3=a*c;
returnv;
}
main()
{
intv,l,w,h;
printf("\ninputlength,widthandheight:
");
/***********SPACE***********/
scanf("%d%d%d",【?
】,&w,&h);
/***********SPACE***********/
v=【?
】;
printf("v=%ds1=%ds2=%ds3=%d\n",v,s1,s2,s3);
}
答案:
=======(答案1)=======
a*b*c
=========或=========
a*b*c
=======(答案2)=======
b*c
=========或=========
b*c
=======(答案3)=======
&l
=======(答案4)=======
vs(l,w,h)
=========或=========
vs(l,w,h)
二、程序改错共1题(共计30分)
第1题(30.0分)题号:
392
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
统计出若干个学生的平均成绩,最低分以及得最低分的人数。
例如:
输入10名学生的成绩分别为92,87,68,56,92,84,67,
75,92,66,则输出平均成绩为77.9,最低高分为56,得最
低分的人数为1人。
------------------------------------------------------*/
#include
floatMin=0;
intJ=0;
floatfun(floatarray[],intn)
{
inti;floatsum=0,ave;
Min=array[0];
for(i=0;i{
if(Min>array[i])Min=array[i];
/**********FOUND**********/
sum=+array[i];
}
/**********FOUND**********/
ave=sum\n;
for(i=0;i/**********FOUND**********/
if(array[i]=Min)J++;
return(ave);
}
main()
{
floata[10],ave;
inti=0;
for(i=0;i<10;i++)
scanf("%f",&a[i]);
ave=fun(a,10);
printf("ave=%f\n",ave);
printf("min=%f\n",Min);
printf("Total:
%d\n",J);
}
答案:
=======(答案1)=======
sum+=array[i];
=========或=========
sum=sum+array[i];
=======(答案2)=======
ave=sum/n;
=======(答案3)=======
if(array[i]==Min)J++;
三、程序设计共1题(共计40分)
第1题(40.0分)题号:
390
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
编写函数求1~100中奇数的平方和。
结果为166650.000000。
------------------------------------------------*/
#include
voidwwjt();
floatsum(intn)
{
/**********Program**********/
/**********End**********/
}
main()
{
printf("sum=%f\n",sum(100));
wwjt();
}
voidwwjt()
{
FILE*IN,*OUT;
inti;
floato;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("ReadFILEError");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("WriteFILEError");
}
for(j=0;j<5;j++)
{
fscanf(IN,"%d",&i);
o=sum(i);
fprintf(OUT,"%f\n",o);
}
fclose(IN);
fclose(OUT);
}
答案:
----------------------
floats=0;
inti;
for(i=1;i<=n;i=i+2)
s=s+i*i;
return(s);
----------------------
试题3
所属语言:
C语言
试卷方案:
C语言上机实训
试卷总分:
100分
共有题型:
3种
一、程序填空共1题(共计30分)
第1题(30.0分)题号:
410
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
有n个整数,使其前面各数顺序向后移m个位置,最后m个数
变成最前面的m个数
-------------------------------------------------------*/
#include
/***********SPACE***********/
move(【?
】)
intn,m,array[20];
{
int*p,array_end;
/***********SPACE***********/
array_end=*(【?
】);
for(p=array+n-1;p>array;p--)
/***********SPACE***********/
*p=*(【?
】);
*array=array_end;
m--;
if(m>0)move(array,n,m);
}
main()
{
intnumber[20],n,m,i;
printf("thetotalnumbersis:
");
scanf("%d",&n);
printf("backm:
");
scanf("%d",&m);
for(i=0;iscanf("%d,",&number[i]);
scanf("%d",&number[n-1]);
/***********SPACE***********/
move(【?
】);
for(i=0;iprintf("%d,",number[i]);
printf("%d",number[n-1]);
}
答案:
=======(答案1)=======
array,n,m
=======(答案2)=======
array+n-1
=========或=========
array+n-1
=======(答案3)=======
p-1
=========或=========
p-1
=======(答案4)=======
number,n,m
二、程序改错共1题(共计30分)
第1题(30.0分)题号:
413
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
读取7个数(1-50)的整数值,每读取一个值,程序打印
出该值个数的*。
------------------------------------------------------*/
#include
main()
{
inti,a,n=1;
/**********FOUND**********/
while(n<7)
{
do
{
scanf("%d",&a);
}
/**********FOUND**********/
while(a<1&&a>50);
/**********FOUND**********/
for(i=0;i<=a;i++)
printf("*");
printf("\n");
n++;
}
}
答案:
=======(答案1)=======
while(n<=7)
=========或=========
while(n<8)
=======(答案2)=======
while(a<1||a>50);
=========或=========
while(a>50||a<1);
=======(答案3)=======
for(i=1;i<=a;i++)
三、程序设计共1题(共计40分)
第1题(40.0分)题号:
337
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
将两个两位数的正整数a、b合并形成一个整数放在
c中。
合并的方式是:
将a数的十位和个位数依次放
在c数的百位和个位上,b数的十位和个位数依次放
在c数的十位和千位上。
例如:
当a=45,b=12。
调用该函数后,c=2415。
------------------------------------------------*/
#include
voidwwjt();
voidfun(inta,intb,long*c)
{
/**********Program**********/
/**********End**********/
}
main()
{
inta,b;longc;
printf("inputa,b:
");
scanf("%d%d",&a,&b);
fun(a,b,&c);
printf("Theresult