西南交大考研复试C语言上机题库.docx
《西南交大考研复试C语言上机题库.docx》由会员分享,可在线阅读,更多相关《西南交大考研复试C语言上机题库.docx(70页珍藏版)》请在冰点文库上搜索。
西南交大考研复试C语言上机题库
/*请编一个函数fun(char*s),函数的功能是把字符串中的内容逆置。
例如:
字符串中原有的内容为:
abcdefg,则调用该函数后,串中的内容为:
gfedcba。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
*/
#include
#include
#defineN81
voidfun(char*s)
{
char*l,t;
for(l=s;*l!
='\0';l++);
l--;
for(;l-s>=1;s++,l--)
{
t=*s;
*s=*l;
*l=t;
}
}
voidmain()
{chara[N];
printf("Enterastring:
");
gets(a);
printf("Theoriginalstringis:
");
puts(a);
fun(a);
printf("\n");
printf("Thestringaftermodified:
");
puts(a);
}/*编写程序,实现矩阵(3行3列)的转置(即行列互换)。
例如,输入下面的矩阵:
100200300
400500600
700800900
程序输出:
100400700
200500800
300600900
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
*/
#include
voidfun(intarray[3][3])
{
inti,j,t;
for(i=0;i<=2;i++)
for(j=i+1;j<=2;j++)
{
t=array[i][j];
array[i][j]=array[j][i];
array[j][i]=t;
}
}
voidmain()
{
inti,j;
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");
}
}/*请编一个函数fun(int*a,intn,int*odd,int*even),函数的功能是分别求出数组中所有奇数之和以及
所有偶数之和。
形参n给出数组中数据的个数;利用指针odd返回奇数之和,利用指针even返回偶数之和。
例如:
数组中的值依次为:
1,9,2,3,11,6;则利用指针odd返回奇数之和24;利用指针even返回偶数
之和8。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写
的若干语句。
*/
#include
#defineN20
voidfun(int*a,intn,int*odd,int*even)
{
int*p;
n--;
*odd=*even=0;
for(p=a;p<=a+n;p++)
if(*p%2)
(*odd)++;
else
(*even)++;
}
voidmain()
{
inta[N]={1,9,2,3,11,6},i,n=6,odd,even;
printf("Theoriginaldatais:
\n");
for(i=0;iprintf("%5d",*(a+i));
printf("\n\n");
fun(a,n,&odd,&even);
printf("Thesumofoddnumbers:
%d\n",odd);
printf("Thesumofevennumbers:
%d\n",even);
}/*要求程序的功能是:
把20个随机数存入一个数组,然后输出该数组中的最小值。
其中确定最小值的下标
的操作在fun函数中实现,请给出该函数的定义。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
*/
#include
#include
#defineVSIZE20
intvector[VSIZE];
intfun(intlist[],intsize)
{
inti,pos,min;
min=list[0];
pos=0;
for(i=0;iif(list[i]{
min=list[i];
pos=i;
}
returnpos;
}
voidmain()
{
inti;
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]);
}
/*请编一个函数floatfun(doubleh),函数的功能是对变量h中的值保留2位小数,并对第三位进行四舍五
入(规定h中的值为正数)。
例如:
h值为8.32433,则函数返回8.32;
h值为8.32533,则函数返回8.33。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
*/
#include
floatfun(floath)
{
intt;
t=h*100+0.5;
h=t/100.0;
returnh;
}
voidmain()
{floata;
printf("Entera:
");
scanf("%f",&a);
printf("Theoriginaldatais:
");
printf("%f\n\n",a);
printf("Theresult:
%f\n",fun(a));
}
/*编写函数fun,函数的功能是:
从字符串中删除指定的字符。
同一字母的大、小写按不同字符处理。
若程序执行时,输入字符串为:
turbocandborlandc++,从键盘上输入字符:
n,则输出后变为:
turbocadborladc++,如果输入的字符字符串中不存在,则字符串照原样输出。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
*/
#include
voidfun(chars[],intc)
{
char*p,*t;
for(p=s;*p!
='\0';p++)
if(*p==c)
{
for(t=p;*t!
='\0';t++)
*t=*(t+1);
p--;
}
}
voidmain()
{
staticcharstr[]="turbocandborlandc++";
charch;
printf("原始字符串:
%s\n",str);
printf("输入一个字符:
");
scanf("%c",&ch);
fun(str,ch);
printf("str[]=%s\n",str);
}/*编写函数intfun(intlim,intaa[MAX]),该函数的功能是求出小于lim的所有素数并放在aa数组
中,该函数返回求出素数的个数。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
*/
#include
#defineMAX200
intfun(intlim,intaa[MAX])
{
inti,j,count=0;
aa[0]=2;
for(i=3;i{
for(j=0;j<=count;j++)
if(!
(i%aa[j]))
break;
if(j>=count)
{
count++;
aa[count]=i;
}
}
return++count;
}
voidmain()
{
intlimit,i,sum;
intaa[MAX];
printf("输入一个整数:
");
scanf("%d",&limit);
sum=fun(limit,aa);
for(i=0;iif(i%10==0&&i!
=0)printf("\n");
printf("%5d",aa[i]);
}
}/*请编写函数fun,函数的功能是求出二维数组周边元素之和,作为函数值返回。
二维数组中的值在主函数
中赋予。
例如:
二维数组中的值为
13579
29994
69998
13570
则函数值为61。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
*/
#include
#defineM4
#defineN5
intfun(inta[M][N])
{
inti,j,sum=0;
for(i=0;iif(i==0||i==M-1)
for(j=0;jsum+=a[i][j];
else
sum+=a[i][0]+a[i][N-1];
returnsum;
}
voidmain()
{intaa[M][N]={{1,3,5,7,9},
{2,9,9,9,4},
{6,9,9,9,8},
{1,3,5,7,0}};
inti,j,y;
printf("Theoriginaldatais:
\n");
for(i=0;i{for(j=0;jprintf("\n");
}
y=fun(aa);
printf("\nThesum:
%d\n",y);
printf("\n");
}
/*请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按降序排列。
例如,
原来的字符串为CEAedca,排序输出为CedcEAa。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
*/
#include
#include
voidfun(char*s,intnum)
{
char*l,t;
for(l=s;*l!
='\0';l++);
l-=2;
s++;
for(;l-s>=1;s++,l--)
{
t=*s;
*s=*l;
*l=t;
}
}
voidmain()
{
chars[10];
printf("输入7个字符的字符串:
");
gets(s);
fun(s,7);
printf("\n%s",s);
}/*请编一个函数voidfun(inttt[M][N],intpp[N]),tt指向一个M行N列的二维数组,求出二维数
组每列中最小元素,并依次放入pp所指一维数组中。
二维数组中的数已在主函数中赋予。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写
的若干语句。
*/
#include
#defineM3
#defineN4
voidfun(inttt[M][N],intpp[N])
{
inti,j;
for(j=0;j<=N-1;j++)
{
pp[j]=tt[0][j];
for(i=1;iif(tt[i][j]pp[j]=tt[i][j];
}
}
voidmain()
{intt[M][N]={{22,45,56,30},
{19,33,45,38},
{20,22,66,40}};
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("%4d",p[k]);
printf("\n");
}/*请编一个函数fun,其中n所指存储单元中存放了数组中元素的个数。
函数的功能是:
删除所有值为y的元素。
数组元素中的值和y的值由主函数通过键盘输入。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
*/
#include
#defineM20
voidfun(intbb[],int*n,inty)
{
int*p,*t;
for(p=bb;pif(*p==y)
{
for(t=p;t*t=*(t+1);
p--;
(*n)--;
}
}
voidmain()
{intaa[M],n,y,k;
printf("\nPleaseentern:
");
scanf("%d",&n);
printf("\nEnter%dpositivenumber:
\n",n);
for(k=0;kscanf("%d",&aa[k]);
printf("Theoriginaldatais:
\n");
for(k=0;kprintf("%5d",aa[k]);
printf("\nEnteranumbertodeleted:
");
scanf("%d",&y);
fun(aa,&n,y);
printf("Thedataafterdeleted%d:
\n",y);
for(k=0;kprintf("%4d",aa[k]);
printf("\n");
}/*编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。
例如,假定输入的字符串为:
asdasasdfgasdaszx67askmklo,子字符串为:
as,则应输出6。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
*/
#include
#include
intfun(char*str,char*substr)
{
intcount=0;
for(;*str!
='\0';str++)
if(*str==*substr&&*(str+1)==*(substr+1))
count++;
returncount;
}
voidmain()
{
charstr[81],substr[3];
intn;
printf("输入主字符串:
");
gets(str);
printf("输入子字符串:
");
gets(substr);
puts(str);
puts(substr);
n=fun(str,substr);
printf("n=%d\n",n);
}
/*请编写一个函数intfun(intx),它的功能是:
判断整数x是否是同构数。
若是同构数,函数返回1;
否则返回0。
所谓“同构数”是指这样的数,它出现在它的平方数的右边。
例如:
输入整数5,5的平
方数是25,5是25中右侧的数,所以5是同构数。
x的值由主函数从键盘读入,要求不大于100。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
*/
#include
#include
intfun(intx)
intm;
m=x*x;
if(x<10)
if(x==m%10)
return1;
else
return0;
else
if(x==m%100)
return1;
else
return0;
}
voidmain()
{
intx,y;
printf("\nPleaseenteraintegernumbers:
");
scanf("%d",&x);
if(x>100)
{
printf("dataerror!
\n");
exit(0);
}
y=fun(x);
if(y)
printf("%dYES\n",x);
else
printf("%dNO!
\n",x);
}/*编写一个函数fun,它的功能是:
实现两个字符串的连接(不使用库函数strcat)。
例如,分别输入下面两个字符串:
FirstString--
SecondString
程序输出:
FirstString--SecondString
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
*/
#include
voidfun(charp1[],charp2[])
{
for(;*p1!
='\0';p1++);
for(;*p2!
='\0';p1++,p2++)
*p1=*p2;
*p1='\0';
}
voidmain()
{chars1[80],s2[40];
printf("Enters1ands2:
\n");
scanf("%s%s",s1,s2);
printf("s1=%s\n",s1);
printf("s2=%s\n",s2);
printf("Invokefun(s1,s2):
\n");
fun(s1,s2);
printf("Afterinvoking:
\n");
printf("%s\n",s1);
}/*程序定义了N×N的二维数组,并在主函数中自动赋值。
请编写函数fun(inta[][N]),函数的功能是:
使数组中第一列元素中的值与最后一列元素中的值对调、第二列元素中的值与倒数第二列元素中的值
对调、……、其他依次类推。
例如:
a数组中的值为
|0111279|
|19745|
|20131831|
a=|145682|
|1591741|
|9712110|
|54791|
则返回主程序后a数组中的值应为|13181320|
|286514|
|1417915|
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
*/
#include"stdio.h"
#include"stdlib.h"
#defineN5
voidfun(inta[][N])
{
inti,j;
for(i=0;ifor(j=0;N-1-2*j>=1;j++)
{
a[i][j]=a[i][j]^a[i][N-1-j];
a[i][N-1-j]=a[i][N-1-j]^a[i][j];
a[i][j]=a[i][j]^a[i][N-1-j];
}
}
voidmain()
{
inta[N][N],i,j;
printf("*****Thearray*****\n");
for(i=0;i{for(j=0;j{a[i][j]=rand()%30;printf("%4d",a[i][j]);}
printf("\n");
}
fun(a);
printf("*****THERESULT*****\n");
for(i=0;i{for(j=0;jprintf("\n");
}
}/*请编写函数fun,函数的功能是:
实现B=A+A',即把矩阵A加上A的转置,存放在矩阵B中。
计算结果在main函数中输出。
例如,输入下面的矩阵:
其转置矩阵为:
|123||147|
|456||258|
|789||369|
程序输出:
|2610|
|61014|
|101418|
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
*/
#include
voidfun(inta[3][3],intb[3][3])
{
inti,j;
for(i=0;i<=2;i++)
for(j=0;j<=2;j++)
b[i][j]=a[i][j];
for(i=0;i<=2;i++)
for(j=0;j<=2;j++)
b[j][i]+=a[i][j];
}
voidmain()
{
inta[3][3]={{1,2,3},{4,5,6},{7,8,9}},t[3][3];
inti,j;
f