记录一下现在写的代码,以后深造或者工作了还能翻出来拷打一下之前的自己。
5872 利用指针 对三个数升序排序
#include<stdio.h>
#include<math.h>
#include<string.h>
void sort(int *a,int *b,int *c)
{
int arr[3];
int n,p,q;
arr[0]=*a;
arr[1]=*b;
arr[2]=*c;
int i;
int j;
int tmp=0;
for(i=0;i<2;i++)
{
for(j=0;j<2-i;j++)
{
if(arr[j]>arr[j+1])
{
tmp=arr[j+1];
arr[j+1]=arr[j];
arr[j]=tmp;
}
}
}
for(i=0;i<2;i++)
{
printf("%d ",arr[i]);
}
printf("%d",arr[i]);
}
int main()
{
int a,b,c;
int *p1=&a;
int *p2=&b;
int *p3=&c;
while(scanf("%d %d %d",p1,p2,p3)!=EOF)
{
sort(p1,p2,p3);
}
}
5875 利用指针 对一个数组大于指定数据的过滤,如何输出
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int n,x;
scanf("%d",&n);
scanf("%d",&x);
int a[n];
int i,j=0;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
int *p;
p=a;
int b[100];
for(i=0;i<n;i++)
{
if(x<=*(p+i))
{
b[j]=*(p+i);
j++;
}
}
int len;
len=j;
for(i=0;i<len;i++)
{
printf("%d ",b[i]);
}
return 0;
}
5873 输入的整数 检查是否在给定的范围 在返回1,不在返回2
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int n,min,max;
scanf("%d",&n);
scanf("%d",&min);
scanf("%d",&max);
int num[n];
int i;
for(i=0;i<n;i++)
{
scanf("%d",&num[i]);
if(min<=num[i]&&num[i]<=max)
{
break;
}
}
if(i==n)
{
printf("0 ");
printf("%d ",num[i-1]);
}
else
{
printf("1 ");
printf("%d ",num[i]);
}
return 0;
}
5876
利用指针将数字字符串转换为int整数 (ps:a-'0'可将字符串a转为对应整形数)
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int hanshu(char *p)
{
int n=0;
int i;
char c;
c=*p;
int k=1;
if(c=='+')
{
k=1;
}
else if(c=='-')
{
k=-1;
}
else if(c>='0'&&c<='9')
{
n=c-'0';
}
else
{
return 0;
}
for(i=1;*(p+i)!='\0';i++)
{
if(*(p+i)>='0'&&*(p+i)<='9')
{
n=n*10+(*(p+i)-'0');
}
else break;
}
return k*n;
}
int main()
{
int n;
char str[20];
while(scanf("%s",str)!=-1)
{
n=hanshu(str);
printf("%d\n",n);
}
return 0;
}
5877 利用指针 在一个排好序的数组中 插入一个新数据 插入后再排序
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int n;
float x;
scanf("%d",&n);
float a[n];
scanf("%f",&x);
int i;
for(i=0;i<n;i++)
{
scanf("%f",&a[i]);
}
float *p;
int j=0;
int m=n+1;
p=(float *)malloc(m*sizeof(float));
for(i=0;i<n;i++)
{
p[i]=a[i];
}
p[i]=x;
float tmp=0;
for(i=0;i<n;i++)
{
for(j=0;j<n-i;j++)
{
if(p[j]>p[j+1])
{
tmp=p[j+1];
p[j+1]=p[j];
p[j]=tmp;
}
}
}
for(i=0;i<=n;i++)
{
printf("%.2f ",p[i]);
}
return 0;
}
5878 利用指针 完成一个双精度矩阵最大值的查找(同时返回坐标)及输出。(ps:二维数组的形参还是用数组指针吧)
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void insert(double (*p)[10],int n,int m)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
scanf("%lf",*(p+i)+j);
}
}
}
double find(double (*p)[10],int *n,int *m,int a,int b)
{
double max=**p;
int i,j;
int r=0;
int c=0;
for(i=0;i<a;i++)
{
for(j=0;j<b;j++)
{
if(max<*(*(p+i)+j))
{
max=*(*(p+i)+j);
r=i;
c=j;
}
}
}
*n=r+1;
*m=c+1;
return max;
}
int main()
{
int n,m,h,l;
double shu[10][10],ma;
while(scanf("%d%d",&n,&m)!=-1)
{
insert(shu,n,m);
ma=find(shu,&h,&l,n,m);
printf("%.2f %d %d\n",ma,h,l);
}
return 0;
}
5879 在一个字符串中取出部分字符 从原字符串的n到m位取出来重新整一个字符串
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void select(char a[],char *b,int n,int m)
{
int i;
int j=0;
for(i=n-1;i<m;i++)
{
b[j++]=a[i];
}
}
int main()
{
char str[100];
int n,m;
while(scanf("%s",str)!=-1)
{
scanf("%d %d",&n,&m);
char *p;
p=(char *)malloc((m-n+1)*sizeof(char));
select(str,p,n,m);
printf("%s",p);
}
}