1.输入三个数,由大到小排序
#include<stdio.h>
int main()
{
int *p1=NULL;
int *p2=NULL;
int *p3=NULL;
int a,b,c;
a=b=c=0;
scanf("%d%d%d",&a,&b,&c);
p1=&a;p2=&b;p3=&c;
if(*p1<*p2)
{
int *t=p1;
p1=p2;
p2=t;
}
if(*p1<*p3)
{
int *t=p1;
p1=p3;
p3=t;
}
if(*p2<*p3)
{
int *t=p2;
p2=p3;
p3=t;
}
printf("%d\n%d\n%d\n",*p1,*p2,*p3);
return 0;
}
2.输入三个字符串,按由小到大的顺序输出
#include<iostream>
using namespace std;
main()
{
char x[10];
char y[10];
char z[10];
cin.getline(x,10);
cin.getline(y,10);
cin.getline(z,10);
char *p1=NULL; char *p2=NULL; char *p3=NULL;
p1=x;p2=y;p3=z;
if(strcmp(x,y)>=0)
{
char *t=p1;
p1=p2;
p2=t;
}
if(strcmp(x,z)>=0)
{
char *t=p1;
p1=p3;
p3=t;
}
if(strcmp(y,z)>=0)
{
char *t=p2;
p2=p3;
p3=t;
}
printf("%s\n%s\n%s\n",p1,p2,p3);
return 0;
}
3.10个整数,最小的与第一位调换,最大的与最后一位调换
#include<stdio.h>
int main()
{
int x[10];
for(int i=0;i<10;i++)
scanf("%d",&x[i]);
int min,max;
min=max=x[0];
int *p1=NULL;
int *p2=NULL;
for(i=1;i<10;i++)
{
if(x[i]<min)
{
min=x[i];
p1=&x[i];
}
if(x[i]>max)
{
max=x[i];
p2=&x[i];
}
}
int t=*p1;*p1=x[0];x[0]=t;
t=*p2;*p2=x[9];x[9]=t;
for(i=0;i<10;i++)
printf("%d\n",x[i]);
return 0;
}
4.循环移动
#include<stdio.h>
int main()
{
int n,m;
n=m=0;
int x[100]={0};
printf("输入n,m:");
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
{
scanf("%d",&x[i]);
}
for(i=0;i<m;i++)
{
for(int j=1;j<n;j++)
{
int temp=0;
temp=x[n-j];
x[n-j]=x[n-1-j];
x[n-1-j]=temp;
}
}
for(i=0;i<n;i++)
printf("%d\n",x[i]);
return 0;
}
7.一个字符串,从m开始换成其他字符串
#include<stdio.h>
#include<string>
int main()
{
char x[10];
char y[10];
gets(x);
gets(y);
char *m=NULL;
char *n=NULL;
int c=0;
scanf("%d",&c);
m=x+c;
n=y;
strcpy(m,n);
puts(m);
return 0;
}
8.计算字符串字母空格数字其他字符多少
#include<iostream>
using namespace std;
int main()
{
char x[50]={0};
int letter=0;
int space=0;
int num=0;
int other=0;
cin.getline(x,50);
for(int i=0;x[i]!='\0';i++)
{
if(x[i]>='a'&&x[i]<='z'||x[i]>='A'&&x[i]<='Z')
letter++;
else if(x[i]==' ') space++;
else if(x[i]>='0'&&x[i]<='9') num++;
else other++;
}
printf("%d\n%d\n%d\n%d\n",letter,space,num,other);
return 0;
}
9.3*3矩形转置
#include<stdio.h>
void change(int x[3][3])
{
for(int i=1;i<=2;i++)
for(int j=0;j<=1;j++)
{
int temp=x[i][j];
x[i][j]=x[j][i];
x[j][i]=temp;
}
for(i=0;i<3;i++)
{
for(int j=0;j<3;j++)
printf("%d",x[i][j]);
printf("\n");
}
}
int main()
{
int a[3][3]={0};
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
scanf("%d",&a[i][j]);
change(a);
return 0;
}
11.十个等长的字符串,有小到大输出
#include<iostream>
using namespace std;
main()
{
char x[10];
char y[10];
char z[10];
cin.getline(x,10);
cin.getline(y,10);
cin.getline(z,10);
char *p1=NULL; char *p2=NULL; char *p3=NULL;
p1=x;p2=y;p3=z;
if(strcmp(x,y)>=0)
{
char *t=p1;
p1=p2;
p2=t;
}
if(strcmp(x,z)>=0)
{
char *t=p1;
p1=p3;
p3=t;
}
if(strcmp(y,z)>=0)
{
char *t=p2;
p2=p3;
p3=t;
}
printf("%s\n%s\n%s\n",p1,p2,p3);
return 0;
}
类似的题目,改用二维数组存放字符串,用char (*p)[10]指针指向一行数组