C第九次博客作业--指针
一、PTA实验作业
题目1:两个4位正整数的后两位互换
1. 本题PTA提交列
2. 设计思路
3.代码截图
本题调试过程碰到问题及PTA提交列表情况说明
刚开始想到的交换是令t=a;a=b;b=t这种形式,但是答案没有正确,两个数字并没有交换,我也没有用到调用函数里面的p和q,而是自己重新定义了两个整数,所以整个代码里指针好像没有发挥什么作用,所以答案是错误的。然后看了室友的代码,才把p和q用上,然后参考了她的交换法,如下图所示:可是我不懂这个交换为什么用-和+来换。我发现我改成这样也没有正确,原因是我多加了p=&number1这个,指针指向一个地址我还不太会用
题目2:求出数组中最大数和次最大数
1. 本题PTA提交列
2. 设计思路
3.代码截图
本题调试过程碰到问题及PTA提交列表情况说明
刚开始只用了一个循环,导致没有交换,原样输出。后来加了一个循环,但是没有注意第二个循环是从1开始,导致次大数和a[1]没有交换
题目3: 找最大值及其下标
1. 本题PTA提交列
2. 设计思路
3.代码截图
本题调试过程碰到问题及PTA提交列表情况说明
没有给max赋值,输出的时候总是8,没有用到指针*b,position总是0
二、截图本周题目集的PTA最后排名
三、阅读代码
该代码的功能是判断出回文字符串,优点是用的代码量少,清晰又简洁,巧妙的定义了strlen(s)
四、本周学习总结
1.自己总结本周学习内容
本周学了结构,结构是一种允许程序员把一些数据分量聚合成一个整体的数据类型,它与数组的区别在于:数组中所有元素的数据类型必须是相同的,而结构中各成员的数据类型可以不同。
结构的定义用struct,要用大括号括起来,以分号结束,大括号中以定义变量的形式列出各信息项。结构的嵌套定义,必须先定义成员的结构类型,再定义主结构类型。结构的定义有单独定义:先定义一个结构类型,再定义这种结构类型的变量;混合定义:在定义结构类型的同时定义结构变量 struct 结构名{ 类型名 结构成员名}结构变量表;无类型名定义:在定义结构变量是省略结构名struct { 类型名 结构成员名} 结构变量名表;
结构变量的使用
结构数组操作
2.罗列本周一些错题
读入一行英文文本,将其中每个
单词的最后一个字母改成大写,然后输出此文本行 (这里的“单词”是指由空格隔开或句号结尾的字符串)
注意:按照1,2,3,4顺序填空,不要写序号,空格或回车隔开。
#include "stdio.h"
#include "ctype.h"
void up1st (_____2_______ )
{
int k = 0 ;
for ( ; ____3____ ; p++ )
{
if ( k )
{ if ( *p == ' ' || *p == '.' )
{
*(p -1 ) =______4________;
k=0;
}
}
else
if ( *p != ' ' )
k = 1 ;
}
*( p-1 ) = toupper( *(p-1) ) ;
}
int main( )
{
char chrstr[81] ;
printf( "\nPlease enter a string: " );
________1_____ ;
printf( "\n\nBefore changing:\n %s", chrstr );
up1st( chrstr );
printf( "\nAfter changing:\n %s", chrstr );
}
参考答案
gets(chrstr);
char *p
*p
toupper( *(p-1))
我的作答
int *toupper,int *p
P=0;*p
3、填空题
分值10.0
得分: 3.0
Fun函数用来删除字符串中所有空格,
如输入: as df gghk lkj78,
则输出: asdfgghklkj78
#include <stdio.h>
#include <ctype.h>
void Fun(char *str)
{
int i,j;
i=j=0;
while(____2_____)
{
if(str[i]!=' ')
str[j++]=str[i];
i++;
}
str[j]=___3____;
}
int main()
{
char str[81];
int n;
gets(str);
puts(str);
_____1______;
printf("*** str: %s\n",str);
}
参考答案
Fun(str)
str[i]
'\0'
我的作答
str[i]=getchar()=='\0'
str[i]
n=0
4、填空题
分值10.0
得分: 3.0
给定程序中,函数fun的功能是:将形参s所指字符串中的数字字符转换成对应的数值,
计算出这些数值的累加和作为函数值返回。
例如,形参s所指的字符串为:abs5def126jkm8,
程序执行后的输出结果为:22。
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int Fun(char *s)
{
int sum=0 ;
while(___2___)
{
if(isdigit(*s)) /* if(*s>='0'&& *s<='9')*/
_____3_________;
s++;
}
return sum;
}
int main()
{
char s[81];
int sum;
printf("\nEnter a string:");
gets(s);
_____1______;
printf("\nThe result is: %d\n",sum);
}
参考答案
sum=Fun(s)
*s
sum=sum+*s-'0'
我的作答
*s
s=sum*32+s-'0'
puts(s)