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]指针指向一行数组