西南交大复试练习题
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
b[i][j]=a[i][j];
for(i=0;i<n;i++)
for(j=i;j<n;j++)
{
t=b[i][j];
b[i][j]=b[j][i];
b[j][i]=t;
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
b[i][j]=b[i][j]+a[i][j];
for(i=0;i<n;i++)
1】用π/4≈1-1/3+1/5-1/7+…公式求π的近似值,直到某一项的绝对值小于10-6为止
#include"stdio.h"
#include"math.h"
int main()
{
int s=1;
float t=1,pi=0,n=1.0;
while(fabs(t)>1e-6)
{
pi=pi+t;
n=n+2;
s=-s;
t=s/n;
}
pi=pi*4;
printf("pi=%10.6f\n",pi);
return 0;
}
2】求Fibonacci数列前40个数
#include"stdio.h"
int main()
{
long int f1=1,f2=1;
int i;
for(i=1;i<=20;i++)
{
printf("%8ld,%8ld",f1,f2);
[1]未用调用函数
#include"stdio.h"
int main()
{
long t,k;
int n;
scanf("%ld",&t);
n=10;
t=t/10;
k=t%10;
while(t/100)
{
t=t/100;
k=k+(t%10)*n;
n=10*n;
}
printf("%ld",k);
return 0;
#include"string.h"
int main()
{
char str[100],k;
int i,j,n;
gets(str);
j=strlen(str)-1;//j=0;while(str[j])j++;j=j-1;
for(i=0;i<j;i++,j--)
{
k=str[i];str[i]=str[j];str[j]=k;
if(i%2==0)putchar('\n');
f1=f1+f2;
f2=f2+f1;
}
return 0;
}
3】删除字符串中的数字字符,以‘#’作为字符串的结束标志
修改简单版
#include"stdio.h"
#include"string.h"
void fun(char *p)
{
char *q=p;
char a[100];int i=0;
#include"stdio.h"
intmain()
{
char str[100],*p;
int num[4],i;
p=str;
gets(str);
for(i=0;i<4;i++)
num[i]=0;
for(;*p!='\0';p++)
{
if((*p<='z'&&*p>='a')||(*p<='Z'&&*p>='A')) num[0]++;
#include"stdio.h"
#define n 3
int main()
{
int i,j,a[n][n],b[n][n],t;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
}
puts(str);
}
7】主对角线上元素平方和
#include"stdio.h"
#define n 3
intmain()
{
int i,j,k=0;
int a[n][n];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(i=0;i<n;i++)
while(*q!='#')
{
if(*q<'0'||*q>'9')
a[i++]=*q++;
else
q++;
}
a[i]='\0';
strcpy(p,a);
}
int main()
{
char s1[100];
printf("请输入字符:\n");
gets(s1);
fun(s1);
puts(s1);
putchar('\n');
{
int a,b,t1,t2,temp;
scanf("%d,%d",&t1,&t2);
if(t1<t2)
{
temp=t1;t1=t2;t2=temp;
}
a=t1;b=t2;
while(b!=0)
{temp=a%b;a=b;b=temp;}
b=t1*t2/a;//a为公约数;b公倍数
printf("a=%d\n",a);
return 0;
}
原版
#include"stdio.h"
#include"string.h"
void fun(char *p)
{
char a[100];
int i,j;
for(i=0,j=0;*(p+i)!='#';i++)
{
if(*(p+i)<'0'||*(p+i)>'9')
a[j++]=*(p+i);
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(i=0;i<5;i++)
printf("%d",a[i]);
}
[2]选择法
#include"stdio.h"
int main()
{
int a[5];
int i,j,t;
for(i=0;i<5;i++)
scanf("%d",&a[i]);
}
a[j]='\0';
strcpy(p,a);
}
int main()
{
char s1[100];
gets(s1);
fun(s1);
puts(s1);
putchar('\n');
return 0;
}
4】输出10000—20000之间个位数是7的素数个数,并将其中最大的素数返回。
#include"stdio.h"
#include"math.h"
intmain()
{
int i,j,n,word=0,max;
for(i=10000;i<=20000;i++)
{
if(i%10==7)
{
n=sqrt(i);
for(j=2;j<=n;j++)
if(i%j==0)
break;
if(j>=n+1)
{
word=word+1;
max=i;
}
}
}
printf("这样的素数有%d个,\n其中最大的一个是%d.\n",word,max);
return 0;
}
5】编写函数完成以下功能,统计字符串str中饱含的英文字母、空格、数字和其他字符的个数,并将统计结果保存到数组num中,num【0】存英文字母个数,num【1】存,空格个数,num【2】存数字个数,num【3】存其他字符个数。
return 0;
}
14】冒泡法选择法
#include"stdio.h"
int main()
{
int a[5];
int i,j,t;
for(i=0;i<5;i++)
scanf("%d",&a[i]);
for(i=0;i<4;i++)
for(j=0;j<4-i;j++)
if(a[j]>a[j+1])
{
else if(*(a+i)=='Z')
*(a+i)='z';
else *(a+i)=*(a+i)+1;
}
*(a+i)='\0';
strcpy(str2,a);
puts(str2);
return 0;
}
9】非零整数的最大公约数
[1]穷举法求
#include"stdio.h"
int main()
{
int i,j,a,b,t;
scanf("%ld",&t);
fun(t,&k);
printf("%ld",k);
[1]未调用函数的情况
#include"stdio.h"
int main()
{
int a,b,c;
scanf("%d%d",&a,&b);
c=a/10*1000+b/10*100+a%10*10+b%10;
printf("%d",c);
return 0;
}
[2]调用函数的情况
#include"stdio.h"
int main()
{
int i;
char a[n],str2[n];
gets(a);
for(i=0;*(a+i)!='\0';i++)
if((*(a+i)>='a'&&*(a+i)<='z')||(*(a+i)>='A'&&*(a+i)<='Z'))
{
if(*(a+i)=='z')
*(a+i)='a';
for(j=0;j<n;j++)
if(i==j)k=a[i][j]*a[i][j]+k;
printf("主对角线上元素平方和为:%d\n",k);
return 0;
}
8】将字符串中的字母变为其后的一个,z变a,Z变A。
#include"stdi.h"#include"string.h"
#define n 100
}
[2]用了调用函数
#include"stdio.h"
void fun(long t,long *k)
{
int n;
n=10;
t=t/10;
*k=t%10;
while(t/100)
{
t=t/100;
*k=*k+(t%10)*n;
n=10*n;
}
}
int main()
{
long t,k;
//int n;
scanf("%d%d",&a,&b);
j=a>b?b:a;
for(i=1;i<=j;i++)
if(a%i==0&&b%i==0)
t=i;
j=a*b/t;
printf("最大公约数%d,最小公倍数%d\n",t,j);
return 0;
}
[2]//法二:辗转相除法
#include"stdio.h"
intmain()
#include"stdio.h"
int main()
{
long a,b,k;
int n=10;
scanf("%ld",&a);
b=a%10;
while(a/100)
{
a=a/100;
b=a%10*n+b;
n=10*n;
}
printf("%ld",b);
return 0;
}
[2]调用函数的情况
#include"stdio.h"
for(i=0;i<4;i++)
for(j=i+1;j<5;j++)
if(a[j]>a[i])
{
t=a[j];
a[j]=a[i];
a[i]=t;
}
for(i=0;i<5;i++)
printf("%d ",a[i]);
}
15】将长整型数中每一位上为偶数的数依次取出,构成一个新数放在t中,高位仍在高位,低位仍在低位。如当s中的数为87653142时,t中的数为8642
void fun(long a,long *b)
{
long s;int n=10;
s=a%10;
while(a/100)
{
a=a/100;
s=a%10*n+s;
n=10*n;
}
*b=s;
}
int main()
{
long a,b,k;
scanf("%ld",&a);
fun(a,&b);
printf("%ld",b);
void fun(int a,int b, int *c)
{
*c=a/10*1000+b/10*100+a%10*10+b%10;
}
int main()
for(i=0;i<n;i++)
for(j=i;j<n;j++)
{
t=b[i][j];
b[i][j]=b[j][i];
b[j][i]=t;
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
b[i][j]=b[i][j]+a[i][j];
for(i=0;i<n;i++)
1】用π/4≈1-1/3+1/5-1/7+…公式求π的近似值,直到某一项的绝对值小于10-6为止
#include"stdio.h"
#include"math.h"
int main()
{
int s=1;
float t=1,pi=0,n=1.0;
while(fabs(t)>1e-6)
{
pi=pi+t;
n=n+2;
s=-s;
t=s/n;
}
pi=pi*4;
printf("pi=%10.6f\n",pi);
return 0;
}
2】求Fibonacci数列前40个数
#include"stdio.h"
int main()
{
long int f1=1,f2=1;
int i;
for(i=1;i<=20;i++)
{
printf("%8ld,%8ld",f1,f2);
[1]未用调用函数
#include"stdio.h"
int main()
{
long t,k;
int n;
scanf("%ld",&t);
n=10;
t=t/10;
k=t%10;
while(t/100)
{
t=t/100;
k=k+(t%10)*n;
n=10*n;
}
printf("%ld",k);
return 0;
#include"string.h"
int main()
{
char str[100],k;
int i,j,n;
gets(str);
j=strlen(str)-1;//j=0;while(str[j])j++;j=j-1;
for(i=0;i<j;i++,j--)
{
k=str[i];str[i]=str[j];str[j]=k;
if(i%2==0)putchar('\n');
f1=f1+f2;
f2=f2+f1;
}
return 0;
}
3】删除字符串中的数字字符,以‘#’作为字符串的结束标志
修改简单版
#include"stdio.h"
#include"string.h"
void fun(char *p)
{
char *q=p;
char a[100];int i=0;
#include"stdio.h"
intmain()
{
char str[100],*p;
int num[4],i;
p=str;
gets(str);
for(i=0;i<4;i++)
num[i]=0;
for(;*p!='\0';p++)
{
if((*p<='z'&&*p>='a')||(*p<='Z'&&*p>='A')) num[0]++;
#include"stdio.h"
#define n 3
int main()
{
int i,j,a[n][n],b[n][n],t;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
}
puts(str);
}
7】主对角线上元素平方和
#include"stdio.h"
#define n 3
intmain()
{
int i,j,k=0;
int a[n][n];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(i=0;i<n;i++)
while(*q!='#')
{
if(*q<'0'||*q>'9')
a[i++]=*q++;
else
q++;
}
a[i]='\0';
strcpy(p,a);
}
int main()
{
char s1[100];
printf("请输入字符:\n");
gets(s1);
fun(s1);
puts(s1);
putchar('\n');
{
int a,b,t1,t2,temp;
scanf("%d,%d",&t1,&t2);
if(t1<t2)
{
temp=t1;t1=t2;t2=temp;
}
a=t1;b=t2;
while(b!=0)
{temp=a%b;a=b;b=temp;}
b=t1*t2/a;//a为公约数;b公倍数
printf("a=%d\n",a);
return 0;
}
原版
#include"stdio.h"
#include"string.h"
void fun(char *p)
{
char a[100];
int i,j;
for(i=0,j=0;*(p+i)!='#';i++)
{
if(*(p+i)<'0'||*(p+i)>'9')
a[j++]=*(p+i);
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(i=0;i<5;i++)
printf("%d",a[i]);
}
[2]选择法
#include"stdio.h"
int main()
{
int a[5];
int i,j,t;
for(i=0;i<5;i++)
scanf("%d",&a[i]);
}
a[j]='\0';
strcpy(p,a);
}
int main()
{
char s1[100];
gets(s1);
fun(s1);
puts(s1);
putchar('\n');
return 0;
}
4】输出10000—20000之间个位数是7的素数个数,并将其中最大的素数返回。
#include"stdio.h"
#include"math.h"
intmain()
{
int i,j,n,word=0,max;
for(i=10000;i<=20000;i++)
{
if(i%10==7)
{
n=sqrt(i);
for(j=2;j<=n;j++)
if(i%j==0)
break;
if(j>=n+1)
{
word=word+1;
max=i;
}
}
}
printf("这样的素数有%d个,\n其中最大的一个是%d.\n",word,max);
return 0;
}
5】编写函数完成以下功能,统计字符串str中饱含的英文字母、空格、数字和其他字符的个数,并将统计结果保存到数组num中,num【0】存英文字母个数,num【1】存,空格个数,num【2】存数字个数,num【3】存其他字符个数。
return 0;
}
14】冒泡法选择法
#include"stdio.h"
int main()
{
int a[5];
int i,j,t;
for(i=0;i<5;i++)
scanf("%d",&a[i]);
for(i=0;i<4;i++)
for(j=0;j<4-i;j++)
if(a[j]>a[j+1])
{
else if(*(a+i)=='Z')
*(a+i)='z';
else *(a+i)=*(a+i)+1;
}
*(a+i)='\0';
strcpy(str2,a);
puts(str2);
return 0;
}
9】非零整数的最大公约数
[1]穷举法求
#include"stdio.h"
int main()
{
int i,j,a,b,t;
scanf("%ld",&t);
fun(t,&k);
printf("%ld",k);
[1]未调用函数的情况
#include"stdio.h"
int main()
{
int a,b,c;
scanf("%d%d",&a,&b);
c=a/10*1000+b/10*100+a%10*10+b%10;
printf("%d",c);
return 0;
}
[2]调用函数的情况
#include"stdio.h"
int main()
{
int i;
char a[n],str2[n];
gets(a);
for(i=0;*(a+i)!='\0';i++)
if((*(a+i)>='a'&&*(a+i)<='z')||(*(a+i)>='A'&&*(a+i)<='Z'))
{
if(*(a+i)=='z')
*(a+i)='a';
for(j=0;j<n;j++)
if(i==j)k=a[i][j]*a[i][j]+k;
printf("主对角线上元素平方和为:%d\n",k);
return 0;
}
8】将字符串中的字母变为其后的一个,z变a,Z变A。
#include"stdi.h"#include"string.h"
#define n 100
}
[2]用了调用函数
#include"stdio.h"
void fun(long t,long *k)
{
int n;
n=10;
t=t/10;
*k=t%10;
while(t/100)
{
t=t/100;
*k=*k+(t%10)*n;
n=10*n;
}
}
int main()
{
long t,k;
//int n;
scanf("%d%d",&a,&b);
j=a>b?b:a;
for(i=1;i<=j;i++)
if(a%i==0&&b%i==0)
t=i;
j=a*b/t;
printf("最大公约数%d,最小公倍数%d\n",t,j);
return 0;
}
[2]//法二:辗转相除法
#include"stdio.h"
intmain()
#include"stdio.h"
int main()
{
long a,b,k;
int n=10;
scanf("%ld",&a);
b=a%10;
while(a/100)
{
a=a/100;
b=a%10*n+b;
n=10*n;
}
printf("%ld",b);
return 0;
}
[2]调用函数的情况
#include"stdio.h"
for(i=0;i<4;i++)
for(j=i+1;j<5;j++)
if(a[j]>a[i])
{
t=a[j];
a[j]=a[i];
a[i]=t;
}
for(i=0;i<5;i++)
printf("%d ",a[i]);
}
15】将长整型数中每一位上为偶数的数依次取出,构成一个新数放在t中,高位仍在高位,低位仍在低位。如当s中的数为87653142时,t中的数为8642
void fun(long a,long *b)
{
long s;int n=10;
s=a%10;
while(a/100)
{
a=a/100;
s=a%10*n+s;
n=10*n;
}
*b=s;
}
int main()
{
long a,b,k;
scanf("%ld",&a);
fun(a,&b);
printf("%ld",b);
void fun(int a,int b, int *c)
{
*c=a/10*1000+b/10*100+a%10*10+b%10;
}
int main()