大连理工大学C语言机房模拟试题之程序设计题全.docx
《大连理工大学C语言机房模拟试题之程序设计题全.docx》由会员分享,可在线阅读,更多相关《大连理工大学C语言机房模拟试题之程序设计题全.docx(25页珍藏版)》请在冰豆网上搜索。
大连理工大学C语言机房模拟试题之程序设计题全
程序题
程序设计
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
编写函数fun(str,i,n),从字符串str中删除第i个
字符开始的连续n个字符(注意:
str[0]代表字符串
的第一个字符)。
------------------------------------------------*/
#include"stdio.h"
#include"string.h"
main()
{
charstr[81];
inti,n;
voidfun(charstr[],inti,intn);
voidTestFunc();
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);
TestFunc();
}
voidfun(charstr[],inti,intn)
{
/*********Begin**********/
while(str[i+n-1])
{
str[i-1]=str[i+n-1];
i++;
}
str[i-1]='\0';
/*或
intj=i-1,k=i+n-1;
while((str[j++]=str[k++])!
='\0');
*/
/**********End**********/
}
voidTestFunc()
{
FILE*IN,*OUT;
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);
}
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
请编一个函数voidfun(inttt[M][N],intpp[N]),
tt指向一个M行N列的二维数组,求出二维数组每列
中最小元素,并依次放入pp所指一维数组中。
二维
数组中的数已在主函数中赋予。
------------------------------------------------*/
#include"conio.h"
#include"stdio.h"
#defineM3
#defineN4
voidfun(inttt[M][N],intpp[N])
{
/*********Begin**********/
inti,j;
for(j=0;j{
pp[j]=tt[0][j];
for(i=1;iif(tt[i][j]pp[j]=tt[i][j];
}
/**********End**********/
}
main()
{
intt[M][N]={{22,45,56,30},{19,33,45,38},{20,22,66,40}};
voidNONO();
intp[N],i,j,k;
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");
NONO();
}
/*------------------------------------------------
【程序设计】1685
--------------------------------------------------
功能:
能计算从1开始到n的自然数的和,n由键盘输入,
并在main()函数中输出。
------------------------------------------------*/
#include"stdio.h"
intfun(intn)
{
/*********Begin**********/
intsum=0,i;
for(i=1;i<=n;i++)
sum=sum+i;
return(sum);
/**********End**********/
}
main()
{
intm;
voidTestFunc();
printf("Enterm:
");
scanf("%d",&m);
printf("\nTheresultis%d\n",fun(m));
TestFunc();
}
/*------------------------------------------------
【程序设计】1599
--------------------------------------------------
功能:
调用函数fun判断一个三位数是否"水仙花数"。
在main函数中从键盘输入一个三位数,并输
出判断结果。
请编写fun函数。
说明:
所谓"水仙花数"是指一3位数,其各位数字立方和
等于该数本身。
例如:
153是一个水仙花数,因为153=1+125+27。
------------------------------------------------*/
#include"stdio.h"
intfun(intn)
{
/*********Begin**********/
intbw,sw,gw;
bw=n/100;sw=(n-bw*100)/10;gw=n%10;
if(n==bw*bw*bw+sw*sw*sw+gw*gw*gw)return1;
elsereturn0;
/**********End**********/
}
main()
{
intn,flag;
scanf("%d",&n);
flag=fun(n);
if(flag)
printf("%d是水仙花数\n",n);
else
printf("%d不是水仙花数\n",n);
TestFunc();
}
/*--------------------------------------------------------------
【程序设计】
----------------------------------------------------------------
功能:
编写函数sum(intm,intn),求出m~n之间(包括m和n,m被3和5整除的数的和,并将这些数的和作为返回值。
---------------------------------------------------------------*/
#include"stdio.h"
intsum(intm,intn)
{
/*********Begin**********/
inti,s=0;
for(i=m;i<=n;i++)
if(i%3==0&&i%5==0)
s+=i;
returns;
/**********End**********/
}
main()
{
voidTestFunc();
intm=15,n=300;
printf("sum=%d\n",sum(m,n));
TestFunc();
}
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
求5行5列矩阵的主、副对角线上元素之和。
注意,
两条对角线相交的元素只加一次。
例如:
主函数中给出的矩阵的两条对角线的和为45。
------------------------------------------------*/
#include"stdio.h"
#defineM5
intfun(inta[M][M])
{
/*********Begin**********/
inti,s=0;
for(i=0;is+=a[i][i]+a[i][M-i-1];
s-=a[(M-1)/2][(M-1)/2];
returns;
/**********End**********/
}
main()
{
inta[M][M]={{1,3,5,7,9},{2,4,6,8,10},{2,3,4,5,6},{4,5,6,7,8},{1,3,4,5,6}};
inty;
y=fun(a);
printf("s=%d\n",y);
TestFunc();
}
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
根据整型形参m,计算如下公式的值:
y=1/5+1/6+1/7+1/8+1/9+1/10...+1/(m+5)
例如:
若m=9,则应输出:
1.168229
------------------------------------------------*/
#include"stdio.h"
doublefun(intm)
{
/*********Begin**********/
inti;
doubley=0;
for(i=0;i<=m;i++)
y+=1./(i+5);
returny;
/**********End**********/
}
main()
{
intn;
voidTestFunc();
printf("Entern:
");
scanf("%d",&n);
printf("\nTheresultis%1f\n",fun(n));
TestFunc();
}
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
求一批数中最大值和最小值的积。
------------------------------------------------*/
#defineN30
#include"stdlib.h"
#include"stdio.h"
intmax_min(inta[],intn)
{
/*********Begin**********/
inti,max,min;
max=min=a[0];
for(i=1;i{
if(a[i]>max)max=a[i];
if(a[i]}
returnmax*min;
/**********End**********/
}
main()
{
inta[N],i,k;
voidTestFunc();
for(i=0;ia[i]=rand()%51+10;
for(i=0;i{
printf("%5d",a[i]);
if((i+1)%5==0)printf("\n");
}
k=max_min(a,N);
printf("theresultis:
%d\n",k);
//TestFunc();
}
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
把20个随机数存入一个数组,然后输出该数组中的
最小值。
其中确定最小值的下标的操作在fun函数中
实现,请给出该函数的定义。
------------------------------------------------*/
#include"stdio.h"
#include"stdlib.h"
#defineVSIZE20
intvector[VSIZE];
intfun(intlist[],intsize)
{
/*********Begin**********/
inti,min=0;
for(i=1;iif(list[min]>list[i])
min=i;
returnmin;
/**********End**********/
}
main()
{
inti;
voidNONO();
for(i=0;i{
vector[i]=rand();
printf("Vector[%d]=%6d\n",i,vector[i]);
}
i=fun(vector,VSIZE);
printf("\nMininum:
Vector[%d]=%6d\n",i,vector[i]);
NONO();
}
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
求k!
(k〈13),所求阶乘的值作为函数值返回。
(要求使用递归)
------------------------------------------------*/
#include"stdio.h"
#include"conio.h"
longfun(intk)
{
/*********Begin**********/
if(k>0)
return(k*fun(k-1));
elseif(k==0)
return1L;
/**********End**********/
}
main()
{
intm;
voidTestFunc();
printf("Enterm:
");
scanf("%d",&m);
printf("\nTheresultis%ld\n",fun(m));
TestFunc();
}
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
用do-while语句求1~100的累计和。
------------------------------------------------*/
#include"stdio.h"
longintfun(intn)
{
/*********Begin**********/
inti=1,sum=0;
do
{sum=sum+i;
i++;
}while(i<=n);
returnsum;
/**********End**********/
}
main()
{
inti=100;
voidTestFunc();
printf("1~100的累加和为:
%ld\n",fun(i));
TestFunc();
}
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
编写程序,实现矩阵(3行3列)的转置(即行列互换)
例如:
输入下面的矩阵:
100200300
400500600
700800900
程序输出:
100400700
200500800
300600900
------------------------------------------------*/
#include"stdio.h"
voidfun(intarray[3][3])
{
/*********Begin**********/
inti,j,t;
for(i=0;i<3;i++)
for(j=0;j
{t=array[i][j];
array[i][j]=array[j][i];
array[j][i]=t;
}
/*【或】
inti,j,t;
for(i=0;i<3;i++)
for(j=i+1;j<3;j++)
{
t=array[i][j];
array[i][j]=array[j][i];
array[j][i]=t;
}
*/
/**********End**********/
}
main()
{
inti,j;
voidNONO();
intarray[3][3]={{100,200,300},
{400,500,600},
{700,800,900}};
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%7d",array[i][j]);
printf("\n");
}
fun(array);
printf("Convertedarray:
\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%7d",array[i][j]);
printf("\n");
}
NONO();
}
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
将字符串中的小写字母转换为对应的大写字母,
其它字符不变。
------------------------------------------------*/
#include"string.h"
#include"stdio.h"
voidchange(charstr[])
{
/*********Begin**********/
inti;
for(i=0;str[i]!
='\0';i++)
if(str[i]>='a'&&str[i]<='z')
str[i]=str[i]-32;
/**********End**********/
}
main()
{
voidchange();
charstr[40];
voidTestFunc();
gets(str);
change(str);
puts(str);
TestFunc();
}
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
从低位开始取出长整型变量s中偶数位上的数,依次
构成一个新数放在t中。
例如:
当s中的数为:
7654321时,t中的数为:
642。
------------------------------------------------*/
#include"stdio.h"
longfun(longs,longt)
{
/*********Begin**********/
longsl=10;
s/=10;
t=s%10;
while(s>0)
{s=s/100;
t=s%10*sl+t;
sl=sl*10;
}
/**********End**********/
returnt;
}
main()
{
longs,t,m;
voidTestFunc();
printf("\nPleaseenters:
");scanf("%ld",&s);
m=fun(s,t);
printf("Theresultis:
%ld\n",m);
TestFunc();
}
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
求出二维数组外围元素之和,作为函数值返回。
二
维数组的值在主函数中赋予。
---------------------------