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。