C博客作业--指针

一、PTA实验作业

题目1:6-3 统计大于等于平均分人数

1. 本题PTA提交列表

2. 设计思路(伪代码或流程图)

int fun ( float *s, int n, float *aver )
     定义整型变量i,j;浮点型变量sum=0,ave
     遍历数组    sum=sum+*(s+i)
     求平均分    ave=sum/n*1.0
     n=0;
     遍历数组,若大于等于ave,n++
     *aver=ave
     返回n值

3.代码截图

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

  • 一开始计算平均分ave的时候,用i-1作为个数,用Dev c验证的时候,答案是正确的,但是提交PTA时总是答案错误,想不明白为什么;

  • 后面找舍友帮忙解决,发现传过来的形参中n就表示成绩的个数,改用n后,答案依然正确,PTA提交也正确,和舍友讨论了很久,用i来表示的话最后值会莫名加1,本来i应该等于n的,但是用i答案错误,i-1答案正确,但PTA过不了,所以只能用n;

    题目2:6-5 判断回文字符串

    1. 本题PTA提交列表

    2. 设计思路(伪代码或流程图)

    定义一个指针*a=s,定义i=0,j=0,k=0;
    遍历数组 i++,a++;i,j都为数组长度
    a--;
    while(*s!=‘\0‘)
    如果*s==*a    k++;
    否则 返回FALSE;
    s++;a--;
    如果k==i    表示对称,返回TRUE

    3.代码截图

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

  • 这一题遇到了一个很头疼的问题,在编译器上调试的时候,主函数编译不过去,提交PTA显示编译错误,但是我觉得代码是没问题的,可是没法调试了,这很尴尬,想了很久没想出什么问题;

  • 后来在q群上发求助,同学说把typedef enum {false, true} bool;里面的false、true、bool都改成大写,返回值也用大写,而且在PTA里函数之前还要重新写这段代码,编译才过得去;

    题目3:6-10 字符串串动变化

    1. 本题PTA提交列表

    2. 设计思路(伪代码或流程图)

    3.代码截图

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

  • 这题虽然在PTA上面一次提交正确,但是在编译器上有过错误,主要是后移时j的初值取错了,应该是j=index,我开始用i=index-1;是一个不该犯的错误

  • 测试后重新看下代码,立马就发现问题了

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

    三、阅读代码

    1.吴军霖古风排版代码

    #include<stdio.h>
    int main()
    {
    int n,m,sum;
    static char s[1111];
    scanf("%d ",&n);
    gets(s);
    for(sum=0; s[sum]; sum++);
    m=sum/n+(sum%n>0);
    for(int r=1;r<=n;r++){
        //n行m列.
        for(int c=m;c;--c){
            if(s[n*(c-1)+r-1]) printf("%c",s[n*(c-1)+r-1]);
            else printf(" ");
        }
        printf("\n");
    }
    return 0;
    }
  • 这题代码量很少,但是方法很巧妙,也有点难理解,定义sum,用循环求出排版需要的列数m,m=sum/n+(sum%n>0)是最巧妙的地方,随后用嵌套循环逐列从右到左输出字符,这里巧妙的找到了行、列的值与下标之间的关系,遇到结束符输出空格,直到最后一行最后一列;

    2.删除字符子串的代码

    #include<stdio.h>
    int main()
    {
    char s[81],sub[81];
    gets(s);
    gets(sub);
    int i,j;
    do{
        for(i=0,j=0;s[i];i++){
            if(s[i]=sub[0]){
                for(int u=1;sub[u];u++)  if(s[i+u]!=sub[u]) break;
            if(sub[u]=‘\0‘)   i=i+u;
            }
        }
        s[u++]=a[i++];
    }while(u!=i);
    puts(s);
    return 0;
    }
  • 利用三个循环,对数组进行重新构建,遍历母串,如果找到一个字符等于子串的第一个字符,判断接下去的字符是否都跟子串对应相等,如果不等,跳出循环,都相等,i就跳过一个子串的长度,s[u++]=a[i++]为构建数组的操作,不断循环判断,直到u==i;

    四、本周学习总结

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

    (1) 用指针表示数组,可以通过指针对数组进行操作;

    int a[10];
    int *p;
    p=a;
    //可以通过指针p对数组赋值,*(p+1)=1;即a[1]=1

(2)将指针作为形参传入函数,可以在函数里用指针,对对应的实参进行操作,而且操作保留,可以返回多个值,例如;

void fun(int *p,int *q);
 int main()
 {int a,b;
  scanf("%d%d",&a,&b);
  fun(&a,&b);
  printf("%5d%5d\n",a,b);
  return 0;
 }
void fun(int *p,int *q)
{
    int m,n;
    m=*p%100;
    n=*q%100;
    *p=*p/100*100+n;
    *q=*q/100*100+m;
}

(3)初步了解了结构,结构大概就是自己定义的一个数据类型,里面可以包含很多成员,成员的类型也可以多种;

(4)如何定义结构类型(struct是关键字+结构名)

struct point{
   double x;
   int y;
};

(5)结构的嵌套定义:

struct date{
   int year,month,day;
};
struct student{
   int num;
   char name[10];
   int computer,english,math;
   double average;
   struct date addr;
};

(6)在main函数中可以定义结构变量,结构变量通过结构成员操作符“.”对某个成员进行引用,如果两个结构变量类型相同,也可直接赋值;如:


struct student{
   int num;
   char name[10];
   int computer,english,math;
   double average;
};
int main(){
   struct student s1,s2;
   s1.num=2;
   s1,average=60.5;
   s1=s2;

(7)上周第一次做流程图,一些简单的代码懂得用流程图来表示了,也学会了一些作图软件的基本操作;

2.罗列本周一些错题

  • 这题主要对指针的运用还是不太熟练,指针p应该指向s,还有后面返回值应该返回p,a完全是我捏造出来的;

  • 调用函数需要一个返回值,所以要将结果赋给变量sum;

  • 这题对题目没有理解,导致都错了

  • 做得太急,这个函数不需要返回值,最后n=n-1表示删除后的最后一个元素;

  • 形参传的应该是n的地址,n表示地址,n++便是地址加1,应该用n=n+1;
时间: 2024-11-09 02:17:45

C博客作业--指针的相关文章

C语言第九次博客作业--指针

一.PTA实验作业 题目1:两个4位正整数的后两位互换 1. 本题PTA提交列表 2. 设计思路 定义循环变量i,两个数组a[4],b[4] for i=0 to 3 a[i]*p取各个位 *p/=10 end for i=0 to 3 b[i]*q取各个位 *q/=10 end 分别对*p和*q重新赋值 3.代码截图 4.本题调试过程碰到问题及PTA提交列表情况说明. 题目2: 输出月份英文名 1. 本题PTA提交列表 2. 设计思路 if形参n不再月份范围内 return NULL 定义指针

c语言博客作业-指针

一.PTA实验作业 题目1: 1. 本题PTA提交列表 2. 设计思路(用代码表示扣分) 定义整型变量i,count记录平均分,实型变量sum保存总分 for i=0 to n sum = sum+*(s+i) i++ 平均分=sum/n: for i=0 to n 如果 *(s+i)大于等于平均分 count++ return count 3.代码截图 4.本题调试过程碰到问题及PTA提交列表情况说明. 一开始想让指针变量自增进行运算,但是让它自增的方法有些不对,而且也有自增了回不来的问题,目

C语言博客作业--一二维数组

一.PTA实验作业 题目1:7-2 求整数序列中出现次数最多的数 1. 本题PTA提交列表 2. 设计思路 定义变量n,i,j,max等于0,a[]10用于存放输入的值,b[10]用于存放a[]中各个数有多少个; 输入n的值 i从0开始,每次加1,输入a[i]的值,直到i==n结束循环 i从0开始,判断i是否<n,,进入下一步,每次加一,直到条件不满足 j从0开始,判断j是否<n,,进入下一步,每次加一,直到条件不满足 如果a[i]==a[j],b[i]加一 i从0开始,判断i是否 输出a[j

文件服务相关博客作业

nfs和sameba博客作业 博客实践作业: (1) nfs server导出/data/目录: (2) nfs client挂载/data/至本地的/mydata目录:本地的mysqld或mariadb服务的数据目录设置为/mydata, 要求服务能正常启动,且可正常 存储数据 (3) 客户端(lamp)部署wordpress,并让其正常访问:要确保能正常发文章,上传图片: (4) 客户端2(lamp),挂载nfs server导出的文件系统至/var/www/html:验正其wordpres

https的博客作业

博客作业:分别使用httpd-2.2和httpd-2.4实现 1.建立httpd服务,要求: (1) 提供两个基于名称的虚拟主机www1, www2:有单独的错误日志和访问日志: (2) 通过www1的/server-status提供状态信息,且仅允许tom用户访问: (3) www2不允许192.168.0.0/24网络中任意主机访问: 2.为上面的第2个虚拟主机提供https服务: 前提准备: 172.16.1.1测试httpd-2.4,这是centos7系统 172.16.1.2测试htt

博客作业1--抽象数据类型

一.作业题目 实验题目 试仿照三元组或复数的抽象数据类型写出有理数抽象数据类型的描述 (有理数是其分子.分母均为整数且分母不为零的分数). 有理数基本运算如下所示: 1.构造有理数R,元素x1,x2分别被赋以分子.分母值 2.销毁有理数R 3.用e(引用类型参数)返回有理数T的分子或分母,当入参i为1时返回分子, i为2是返回分母. 4.将有理数R的分子或分母更改为e,入参i为1时改变分子, i为2是改变分母 5.有理数R1,R2相加,结果存入有理数R3 6.有理数R1,R2相减,结果存入有理数

个人博客作业Week7(心得体会)

Alpha阶段结束了,内心可以说是五味杂陈.不是说我们的产品拿不上台面那般差劲,复杂的心绪主要来源于和别的队的比较,别的队才刚刚发布没多久访问量和注册量就破百了,并且还发起了找bug送红包的活动.可能是觉得付出了相同的努力,却没办法换回相同的效果,看来还是得审视自己的问题. 本周的个人作业是阅读关于软件开发本质和开发方法的博客/文章,结合自己在个人项目/结对编程/团队项目的经历,谈谈自己的理解或心得.借这个机会找一下我们的不足吧. 阅读材料目录:

个人博客作业1

发表在你的个人博客上,也可以同时转发到你的团队博客上来增加你们团队博客的人气.具体要求如下: 1)在开始实现程序之前,使用下述PSP表格记录下你估计将在程序的各个模块的开发上耗费的时间. PSP2.1 Personal Software Process Stages Time Planning 计划 · Estimate · 估计这个任务需要多少时间 8 Development 开发 · Analysis · 需求分析 (包括学习新技术) 0 · Design Spec · 生成设计文档 0.5

第零次博客作业

第一部分:结缘计算机 1. 你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢?(必答) 当年高考前在专业这件事上纠结了好久,因为我对于大学各个专业具体学什么都不甚了解,于是就迟迟没有明确的目标,可以说整个高三自己一直都是迷茫的状态,就这样一直保持到了高考.我当年高考是先出成绩,后填报志愿,等到成绩出来之后发现意外地比期望要高,而北航应该是最适合我的学校了.身为一个比较"宅"的理科男,我当时打算将专业锁定在"数学"."计算机"."