复试编程训练二
11.冒泡法排序
#include <stdio.h>
int main()
{
int i,j,temp;
int a[10]= {1,3,5,7,2,4,6,8,9,10};
for(i=0; i<9; i++)
for(j=0; j<i; j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
for(i=0; i<10; i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
运行结果:
12.3*4矩阵,编程求出其中值最大的那个元素的值,以及其所在的行号和列号
#include <stdio.h>
int main()
{
int i,j,max,maxi=0,maxj=0;
int a[3][4]= {
{1,2,3},{6,5,4},{9,7,8}};
max=a[0][0];
for(i=0; i<3; i++)
for(j=0; j<4; j++)
{
if(a[i][j]>max)
{
max=a[i][j];
maxi=i;
maxj=j;
}
}
printf("max=%d,maxi=%d,maxj=%d\n",max,maxi,maxj);
return 0;
}
运行结果:
13.输入一行字符,统计其中有多少个单词,单词之间用空格分开
#include <stdio.h>
int main()
{
char string[81];
int i,num=0,word=0; //一开始word=0,相当于加上第一个词
char c;
gets(string);
for(i=0; (c=string[i])!='\0'; i++)
{
if(c==' ') //遇到空格时,相当于一个单词的开始
word=0;
else if(word==0) //空格的下一个字符,即本单词的第一个字符,进行num++
{
word=1;
num++;
}
}
printf("%d words",num); //num为单词个数
printf("\n");
return 0;
}
运行结果:
14.有3个字符串,要求找出其中的最大者
#include <stdio.h>
#include <string.h>
int main()
{
char str[3][10],temp[10];
for(int i=0; i<3; i++)
gets(str[i]);
if(strcmp(str[0],str[1])>0)
strcpy(temp,str[0]);
else
strcpy(temp,str[1]);
if(strcmp(str[1],temp)>0)
strcpy(temp,str[1]);
printf("the largest string is:%s\n",temp);
return 0;
}
运行结果:
15.输入4个整数,找出其中最大的数
#include <stdio.h>
int max1(int a,int b)
{
if(a>b)
return a;
else
return b;
}
int main()
{
int a,b,c,d,m;
scanf("%d %d %d %d",&a,&b,&c,&d);
m=max1(a,b);
m=max1(m,c);
m=max1(m,d);
printf("max=%d\n",m);
return 0;
}
运行结果:
16.5个学生,第5个比第四个大2岁,第四个比第三个大2岁,…,第一个为10岁。问第五个多大。递归实现。
#include <stdio.h>
int f(int n)
{
if(n==1)
return 10;
else
return f(n-1)+2;
}
int main()
{
int n;
scanf("%d",&n);
printf("第%d个学生:%d岁\n",n,f(n));
printf("\n");
return 0;
}
运行结果:
17.用递归求n!
#include <stdio.h>
int main()
{
int i,n,sum=1;
scanf("%d",&n);
for(i=1; i<=n; i++)
sum=sum*i;
printf("%d!=%d\n",n,sum);
return 0;
}
#include <stdio.h>
int f(int n)
{
if(n==0||n==1)
return 1;
else
return f(n-1)*n;
}
int main()
{
int n;
scanf("%d",&n);
printf("%d!=%d\n",n,f(n));
printf("\n");
return 0;
}
运行结果:
18.汉诺塔问题
#include <stdio.h>
void hanoi(int n,char one,char two,char three)
{
if(n==1)
printf("%c-->%c\n",one,three);
else
{
hanoi(n-1,one,three,two);
printf("%c-->%c\n",one,three);
hanoi(n-1,two,one,three);
}
}
int main()
{
int m;
scanf("%d",&m);
hanoi(m,'A','B','C');
printf("\n");
return 0;
}
运行结果:
19.选择排序
#include <stdio.h>
int main()
{
int a[10]= {2,3,4,7,6,5,1,8,10,9};
int i,j,k,temp;
for(i=0; i<9; i++)
{
k=i;
for(j=i+1; j<10; j++)
{
if(a[j]<a[k])
k=j;
}
if(k!=i)
{
temp=a[i];
a[i]=a[k];
a[k]=temp;
}
}
for(i=0; i<10; i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
运行结果:
20.有一个字符串,内有若干字符,现输入一个字符,要求程序将字符串中的该字符删去。
#include <stdio.h>
void delete_string(char str[],char ch)
{
int i,j;
for(i=0,j=0; str[i]!='\0'; i++)
{
if(str[i]!=ch)
str[j++]=str[i];
}
str[j]='\0';
}
int main()
{
char str[20],ch;
gets(str);
ch=getchar();
delete_string(str,ch);
printf("%s",str);
printf("\n");
return 0;
}
运行结果:
还没有评论,来说两句吧...