代码改变世界

第一次作业

2018-03-25 21:55  无敌伟业  阅读(207)  评论(0编辑  收藏  举报

PTA第一次作业第一题:

#include <stdio.h>

void sum_diff( float op1, float op2, float *psum, float *pdiff );

int main()
{
    float a, b, sum, diff;

    scanf("%f %f", &a, &b);
    sum_diff(a, b, &sum, &diff);
    printf("The sum is %.2f\nThe diff is %.2f\n", sum, diff);
	
    return 0; 
}
void sum_diff( float op1, float op2, float *psum, float *pdiff )
{
  *psum=op1+op2;
  *pdiff=op1-op2;
}

第一步:求两个数的和
第二步:求两个数的差
PTA第一次作业第二题:

#include <stdio.h>

void splitfloat( float x, int *intpart, float *fracpart );

int main()
{
    float x, fracpart;
    int intpart;

    scanf("%f", &x);
    splitfloat(x, &intpart, &fracpart);
    printf("The integer part is %d\n", intpart);
    printf("The fractional part is %g\n", fracpart);

    return 0;
}
void splitfloat( float x, int *intpart, float *fracpart)
{
  *intpart=(int)x;
  *fracpart=x-*intpart;
}

第一步:拆分的实数部分
第二步:拆分的小数部分
PTA第二次作业第一题:

#include <stdio.h>
#define MAXN 10

int search( int list[], int n, int x );

int main()
{
    int i, index, n, x;
    int a[MAXN];

    scanf("%d", &n);
    for( i = 0; i < n; i++ )
        scanf("%d", &a[i]);
    scanf("%d", &x);
    index = search( a, n, x );
    if( index != -1 )
        printf("index = %d\n", index);
    else
        printf("Not found\n");

    return 0;
}
int search( int list[], int n, int x )
{
  int i;
  for(i = 0;i < n;i++)
  {
    if(list[i] == x)
    {
     return i;
     break;
    }
  }
  return -1;
}

第一步:定义一个数组
第二步:查找数组之中的元素
第三步:按照要求输出结果
流程图:

无错误
PTA第二次作业第二题:

#include<stdio.h>
#define N 10
int fun(int *a,int *b,int n);
int main()
{ int a[N],i,max,p=0;
for(i=0;i<N;i++) scanf("%d",&a[i]);
 max=fun(a,&p,N);
 printf("max=%d,position=%d\n",max,p);
 return 0;
}
int fun(int *a,int *b,int n)
{
  int j,m=0;
  for(j = 1;j < N; j++)
  {
    if(m<a[j])
    {
m=a[j];
*b=j;
    }
  }
  return m;
}

第一步:定义一个m用来储存最大值
第二步:定义一个数组来进行交换
第三步:输出定义的值
路程图:

PTA第三次作业第一题:

#include<stdio.h>
void input(int *arr,int n);
void max_min(int *arr,int n);
void output(int *arr,int n);
int main()
{ int a[10];
input(a,10);
 max_min(a,10);
 output(a,10);
 return 0;
}
void input(int *arr,int n)
{
  int i;
  for(i = 0;i < n;i ++)
  {
    scanf("%d",&arr[i]);
  }
}
void max_min(int *arr,int n)
{
  int j,max = arr[0],min = arr[0],c,d,e,f;
  for(j = 0;j < n;j++)
  {
    if(max < arr[j])
    {
      max = arr[j];
      e = j;
    }
    c = max;
    if(min > arr[j])
    {
      min = arr[j];
      f = j;
    }
    d = min;
}
arr[e] = arr[9];
  arr[f] = arr[0];
  arr[0] = d;
  arr[9] = c;
}
void output(int *arr,int n)
{
  int x;
  for(x = 0;x < n;x++)
  {
    printf("%3d",arr[x]);
  }
  }

第一步:定义一个数组输入数
第二步:定义一个数组做交换定义两个数做储存
第三步:按照规定排序
流程图:

PTA第三次作业第二题:

#include<stdio.h>
void sort(int *x,int n);
int main ( )
{int *p,i,a[10];
 p=a;
 for (i=0;i<10;i++)  scanf("%d",p++);
 p=a;
 sort(a,10);
 for(i=0;i<10;i++)  printf("%4d",*p++);
 printf("\n");
 return 0;
 }

void sort(int *x,int n)
{
	int i,t,k,j;
	for(i=0;i<(n-1);i++)
	{
		k=i;
		for(j=i+1;j<n;j++)
		{
			if(*(x+j)>*(x+k))
			{
				k=j;
			}
		}
		if(i!=k)
		{
			t=*(x+i); *(x+i)=*(x+k); *(x+k)=t;
		}
	 } 
} 

第一步:定义一些字母常量
第二步:定义一个数组进行第一次排序
第三步:定义数组进行多次排序
第四步:输出结果
流程图:


PTA第四次作业第一题:

#include <stdio.h>
#include <string.h>

#define MAXN 20
typedef enum {false, true} bool;

bool palindrome( char *s );

int main()
{
    char s[MAXN];

    scanf("%s", s);
    if ( palindrome(s)==true )
        printf("Yes\n");
    else
        printf("No\n");
    printf("%s\n", s);

    return 0;
}

bool palindrome(char *s)  
{  
int n=strlen(s);  
int i, j,count=0;  
for (i = 0, j = n - 1; i < n, j >= 0; i++, j--)  
{  if (*(s + i) == *(s + j))  
{  
count++;  
}  
}  
  if (count == n)  
return true;  
  
}  

第一步:定义一些变量
第二步:定义一个循环判断回文并计数
第三步:输出结果
流程图:

PTA第四次作业第二题:

#include <stdio.h>
#define MAXN 20

void strmcpy( char *t, int m, char *s );
void ReadString( char s[] ); /* 由裁判实现,略去不表 */

int main()
{
    char t[MAXN], s[MAXN];
    int m;

    scanf("%d\n", &m);
    ReadString(t);
    strmcpy( t, m, s );
    printf("%s\n", s);

    return 0;
}
void strmcpy(char *t, int m, char *s)  
{  
int i, j, len;
strcpy(s, t);  
len = strlen(s);  
for (i = m - 1; i>0; i--) {  
for (j = i; j<len; j++) {  
*(s + j - 1) = *(s + j);  
}  
}  
*(s + len - m + 1) = '\0';  
}  

第一步:定义一些变量
第二步:运用数组将M复制到N
第三步:输出结果
流程图:

总结:
在这两周的学习中,我学到了指针的简单的定义,了解了一些简单的指针的运用。但稍微迊一点的还是不会。还有在指针的运用的时候,在“*”号后面的括号内填写的加法我不会。还是需要多努力研究一下。
评论交流:徐铭博:http://www.cnblogs.com/xmb1547828350/p/8597402.html
杨雨鑫:http://www.cnblogs.com/yangyuxin/p/8646332.html
张国庆:http://www.cnblogs.com/zgq947/p/8644349.html
折线图: