程序设计上机全.docx
《程序设计上机全.docx》由会员分享,可在线阅读,更多相关《程序设计上机全.docx(288页珍藏版)》请在冰点文库上搜索。
程序设计上机全
试卷编号:
8398
所属语言:
大学计算机基础
试卷方案:
h
试卷总分:
1160分
共有题型:
1种
━━━━━━━━━━━━━━━━━━
一、程序设计共116题(共计1160分)
━━━━━━━━━━━━━━━━━━
第1题(10.0分)题号:
387
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
用函数求N个[10,60]上的整数中能被5整除的最大
的数,如存在则返回这个最大值,如果不存在则
返回0。
------------------------------------------------*/
intfind(intarr[],intn)
{
intm=0;
/**********Program**********/
/**********End**********/
return(m);
}
#defineN30
#include"stdlib.h"
#include"stdio.h"
main()
{
inta[N],i,k;
for(i=0;ia[i]=random(51)+10;
for(i=0;i{
printf("%5d",a[i]);
if((i+1)%5==0)printf("\n");
}
k=find(a,N);
if(k==0)
printf("NOFOUND\n");
else
printf("themaxis:
%d\n",k);
yzj();
getch();
}
yzj()
{
FILE*IN,*OUT;
intn;
inti[5];
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<5;n++)
{
fscanf(IN,"%d",&i[n]);
}
o=find(i,5);
fprintf(OUT,"%d\n",o);
fclose(IN);
fclose(OUT);
}
答案:
----------------------
inti;
for(i=0;iif(arr[i]%5==0&&arr[i]>m)
m=arr[i];
----------------------
第2题(10.0分)题号:
365
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
求一个四位数的各位数字的立方和。
-----------------------------------------------*/
#include"stdio.h"
intfun(intn)
{
/**********Program**********/
/**********End**********/
}
main()
{
intk;
k=fun(1234);
printf("k=%d\n",k);
yzj();
getch();
}
yzj()
{
FILE*IN,*OUT;
intiIN,iOUT,i;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("PleaseVerifyTheCurrerntDir..ItMayBeChanged");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("PleaseVerifyTheCurrentDir..ItMayBeChanged");
}
for(i=0;i<5;i++)
{
fscanf(IN,"%d",&iIN);
iOUT=fun(iIN);
fprintf(OUT,"%d\n",iOUT);
}
fclose(IN);
fclose(OUT);
}
答案:
----------------------
intd,k,s=0;
while(n>0)
{d=n%10;
s+=d*d*d;
n/=10;
}
returns;
----------------------
第3题(10.0分)题号:
398
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
编写函数fun(str,i,n),从字符串str中删除第i个
字符开始的连续n个字符(注意:
str[0]代表字符串
的第一个字符)。
------------------------------------------------*/
#include"stdio.h"
main()
{
charstr[81];
inti,n;
printf("请输入字符串str的值:
\n");
scanf("%s",str);
printf("你输入的字符串str是:
%s\n",str);
printf("请输入删除位置i和待删字符个数n的值:
\n");
scanf("%d%d",&i,&n);
while(i+n-1>strlen(str))
{
printf("删除位置i和待删字符个数n的值错!
请重新输入i和n的值\n");
scanf("%d%d",&i,&n);
}
fun(str,i,n);
printf("删除后的字符串str是:
%s\n",str);
getch();
yzj();
}
fun(charstr[],inti,intn)
{
/**********Program**********/
/**********End**********/
}
yzj()
{
FILE*IN,*OUT;
intn;
chari[200];
charo[200];
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("ReadFileError");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("WriteFileError");
}
fscanf(IN,"%s",i);
fun(i,2,8);
fprintf(OUT,"%s\n",i);
fclose(IN);
fclose(OUT);
}
答案:
----------------------
while(str[i+n-1])
{
str[i-1]=str[i+n-1];
i++;
}
str[i-1]='\0';
----------------------
第4题(10.0分)题号:
23
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
从键盘输入一个大于3的整数,调用函数fun判断
其是否素数,然后在main函数中输出相应的结论
信息。
例如:
7是素数,8不是素数。
请编写fun函数。
素数是
仅能被1和自身整除的数
-------------------------------------------------*/
#include"stdio.h"
main()
{
intm,flag;
printf("inputaninteger:
");
scanf("%d",&m);
flag=fun(m);
if(flag)
printf("%disaprime.\n",m);
else
printf("%disnotaprime.\n",m);
yzj();
}
intfun(intn)
{
/**********Program**********/
/**********End**********/
}
yzj()
{
FILE*IN,*OUT;
intiIN,iOUT,i;
IN=fopen("5.in","r");
if(IN==NULL)
{
printf("PleaseVerifyTheCurrerntDir..ItMayBeChanged");
}
OUT=fopen("5.out","w");
if(OUT==NULL)
{
printf("PleaseVerifyTheCurrentDir..ItMayBeChanged");
}
for(i=0;i<10;i++)
{
fscanf(IN,"%d",&iIN);
iOUT=fun(iIN);
fprintf(OUT,"%d\n",iOUT);
}
fclose(IN);
fclose(OUT);
}
答案:
----------------------
inti;
intj;
j=1;
for(i=2;i{if(n%i==0)j=0;
}
returnj;
----------------------
第5题(10.0分)题号:
381
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
用辗转相除法求两个整数的最大公约数。
------------------------------------------------*/
#include
intgcd(intn,intm)
{
/**********Program**********/
/**********End**********/
}
main()
{
intn,m,result;
clrscr();
scanf("%d%d",&n,&m);
result=gcd(n,m);
printf("thegcdis%d\n",result);
yzj();
getch();
}
yzj()
{
FILE*IN,*OUT;
intm,n;
inti[2];
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<6;n++)
{
for(m=0;m<2;m++)
{
fscanf(IN,"%d",&i[m]);
}
o=gcd(i[0],i[1]);
fprintf(OUT,"%d\n",o);
}
fclose(IN);
fclose(OUT);
}
答案:
----------------------
intr,t;
if(nr=n%m;
while(r!
=0)
{n=m;m=r;r=n%m;}
return(m);
----------------------
第6题(10.0分)题号:
380
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
给定n个数据,求最大值出现的位置(如果最大值出
现多次,求出第一次出现的位置即可)。
------------------------------------------------*/
#include
intstation(ints[],intn)
{
/**********Program**********/
/**********End**********/
}
main()
{
inta[100],n,i,t;
clrscr();
scanf("%d",&n);
for(i=0;iscanf("%d",&a[i]);
t=station(a,n);
printf("themax_valuepositionis:
%d\n",t);
yzj();
getch();
}
yzj()
{
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]);
}
o=station(i,10);
fprintf(OUT,"%d\n",o);
fclose(IN);
fclose(OUT);
}
答案:
----------------------
inti,k;
k=0;
for(i=1;i<=n;i++)
if(s[i]>s[k])k=i;
return(k+1);
----------------------
第7题(10.0分)题号:
350
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
从低位开始取出长整型变量s奇数位上的数,依次
构成一个新数放在t中。
例如:
当s中的数为:
7654321时,t中的数为:
7531。
------------------------------------------------*/
#include"stdio.h"
longfun(longs,longt)
{
/**********Program**********/
/**********End**********/
}
returnt;
}
main()
{
longs,t,m;
clrscr();
printf("\nPleaseenters:
");scanf("%ld",&s);
m=fun(s,t);
printf("Theresultis:
%ld\n",m);
getch();
yzj();
}
yzj()
{
FILE*IN,*OUT;
intn;
longi,t,m;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("ReadFileError");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("WriteFileError");
}
for(n=0;n<5;n++)
{
fscanf(IN,"%ld",&i);
m=fun(i,t);
fprintf(OUT,"%ld\n",m);
}
fclose(IN);
fclose(OUT);
}
答案:
----------------------
longsl=10;
t=s%10;
while(s>0)
{s=s/100;
t=s%10*sl+t;
sl=sl*10;
----------------------
第8题(10.0分)题号:
351
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
请编一个函数voidfun(inttt[M][N],intpp[N]),
tt指向一个M行N列的二维数组,求出二维数组每列
中最小元素,并依次放入pp所指一维数组中。
二维
数组中的数已在主函数中赋予。
------------------------------------------------*/
#include
#include
#defineM3
#defineN4
voidfun(inttt[M][N],intpp[N])
{
/**********Program**********/
/**********End**********/
}
main()
{
intt[M][N]={{22,45,56,30},
{19,33,45,38},
{20,22,66,40}};
intp[N],i,j,k;
clrscr();
printf("Theoriginaldatais:
\n");
for(i=0;i{
for(j=0;jprintf("%6d",t[i][j]);
printf("\n");
}
fun(t,p);
printf("\nTheresultis:
\n");
for(k=0;kprintf("\n");
getch();
NONO();
}
NONO()
{
inti,j,array[3][4],p[4];
FILE*rf,*wf;
rf=fopen("in.dat","r");
wf=fopen("out.dat","w");
for(i=0;i<3;i++)
for(j=0;j<4;j++)
fscanf(rf,"%d",&array[i][j]);
fun(array,p);
for(j=0;j<4;j++)
{
fprintf(wf,"%7d",p[j]);
fprintf(wf,"\n");
}
fclose(rf);
fclose(wf);
}
答案:
----------------------
inti,j;
for(j=0;j{
pp[j]=tt[0][j];
for(i=1;iif(tt[i][j]pp[j]=tt[i][j];
}
----------------------
第9题(10.0分)题号:
501
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
有一个一维数组score,内放10个学生的成绩,用一
个函数来求平均成绩。
例如:
如果10个学生的成绩分别为92,87,68,56,92,84,
70,65,90,60则平均成绩为:
76.400000
------------------------------------------------*/
#include"stdio.h"
floataverage(floatarray[10])
{
/**********Program**********/
/**********End**********/
}
main()
{
floatscore[]={92,87,68,56,92,84,70,65,90,60};
printf("averagescoreis%f\n",average(score));
wwjt();
}
wwjt()
{
FILE*IN,*OUT;
inti;
floatfIN[10];
floatfOUT;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("PleaseVerifyTheCurrerntDir..ItMayBeChanged");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("PleaseVerifyTheCurrentDir..ItMayBeChanged");
}
for(i=0;i<10;i++)
{
fscanf(IN,"%f",&fIN[i]);
}
fOUT=average(fIN);
fprintf(OUT,"%f\n",fOUT);
fclose(IN);
fclose(OUT);
}
答案:
----------------------
inti;
floataver,s