C博客作业--指针

一、PTA实验作业

题目1: 两个4位正整数的后两位互换

1. 本题PTA提交列表

2. 设计思路

定义变量mn分别表示表示四位数的后两位。
m=*p求余100
n=*q求余100
*p=(*p除以100)*100加上n;
*q=(*q除以100)*100加上m;

3.代码截图

4.本题调试过程碰到问题及PTA提交列表情况说明。

做本题时候一开始对指针的定义不是很理解,别看这题很简单,但是却需要对指针的定义了解透彻,
即,在函数中可以利用指针次从而改变指针中所表示的量。

题目2: 判断回文字符串

1. 本题PTA提交列表

2. 设计思路

	定义变量并附初值q=0,p=0,i=0;
	p=strlen(s)-1;让p等于数组的长度-1.
	while (q<=p){进行循环直到比较完相对应的数既结束
		如果(s[q]==s[p]){比较对应位上的数值是否相等
			让q自增
			p自减
		如果出现不相等
		返回 false;
循环结束后
	返回 true;

3.代码截图

4.本题调试过程碰到问题及PTA提交列表情况说明。

第一次大题上的思路是没有错的,就是利用两端向中间靠拢,一次对比两个字符是否相等。
然而上面这个错误的原因是在在找最后一个点时p要-1,

可是在我改变了最后一个端点后仍然还是有一个小错误,不能够解决。后来干脆直接用一个
p=(strlen(s)-1)就解决了,我也不知道为什么

题目3: 使用函数实现字符串部分复制

1. 本题PTA提交列表

2. 设计思路

3.代码截图

4.本题调试过程碰到问题及PTA提交列表情况说明。

起先对主函数中的ReadString( char s[] ); 这个函数不清楚不知道他是否有输入t的这一个步骤
所以一开始没有gets(t)着一步,
然后在增加了一步输入和return true 和 return flase 就可以了

二、截图本周题目集的PTA最后排名

三、三、阅读代码

#include<stdio.h>
void spacenum(char *a,int *n)
{
    int i;
    *n=0;                 
    for(i=0;*(a+i);i++)   
       if(*(a+i)==’ ’))
          (*n)++;                      
}
int main( )
{
    char str[100];
    int count;
    gets(str);                 
    spacenum(str,&count);          
    printf(“space=%d\n”,count);
    return 0;
}

这道题的用处是用来统计字符串中空格的个数,优点是:充分利用了指针的灵活性,很好用,而且非常的简洁明了,

 #include <conio.h>
 #include <stdio.h>
 #define  M  20
void  fun ( int a[ ], int x, int *n)
{
	int i,j;
	for(i=0;i<*n;i++)
	   if(a[i]==x) 
	       break;
   for(j=i;j<*n-1;j++)
	   a[j]=a[j+1];
   *n=*n-1;
}

int main( )
{
   int k, m, x, a[M];
  
   printf( "\nPlease enter a number: " ); 
   scanf( "%d", &m );
   printf( "\nPlease enter %d numbers(from small to large): ", m );
   for( k = 0; k < m; k++ )  
      scanf( "%d", &a[k] );
   printf ("\nEnter x :  "); 
   scanf ( "%d", &x );
   fun (a, x, &m );
   printf( "\nAfter deleter:\n" );
   for( k = 0; k < m; k++ ) 
       printf( " %d,", a[k] );
   printf("\n");
   
}

从a中删除第一个遭到与x值相同的数组元素,删除后a的数组仍然由小到大有序排列
优点:这道题的删除函数做的十分巧妙,函数那里先判断a数组中是否有与x相等的数,有的话跳出循环重构数组。

四、本周学习总结(1分)

1.自己总结本周学习内容。

  • (1)指针的定义 方式 类型名 *指针变量名
    指针的变量名必须是一个合法标识符
    指针之间只能进行减法运算,而不能进行加乘除运算,
    减法运算是指数组所指的地址的差值
    在函数的运算中,可以通过改变地址中的值来影响实参的改变

2.罗列本周一些错题。

在判断 if(x>a[i])后就退出循环break。

posted @ 2017-12-16 22:08  z&jack  阅读(611)  评论(4编辑  收藏  举报