C语言博客作业--结构体

一、PTA实验作业

题目1:按等级统计学生成绩

1. 本题PTA提交列表

2. 设计思路

for i=0 to i=n
    如果分数大于等于85,就让grade为A
    如果分数大于等于75,就让grade为B
    如果分数大于等于60,就让grade为C
    如果分数小于60,就让grade为D,count++  count用于统计不合格人数
end i
返回count

3.代码截图

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

  • 本题没错

题目2:6-4 结构体数组按总分排序

1. 本题PTA提交列表

2. 设计思路

calc函数
定义i
for i=0 to i=n
    将三科总分存入sum
end
sort函数
定义struct student 类型的temp
冒泡排序:for i=0 to i=n-1
                    for j=0 to j=n-i-1
                        如果前一个的总分小于后一个交换两个结构变量
                    end
                end

3.代码截图

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

  • 本题没错

题目3:7-2 时间换算

1. 本题PTA提交列表

2. 设计思路

struct time{
    int hour;
    int minute;
    int second;
}now     //用来存放时间的时分秒
定义pass存放过去时间
输入现在时间
输入过去时间
将过去时间加在now.second
while(now.second>=60)
    now.minute++;
    now.second-60;    //表示过去一分钟
while(now.minute>=60)
    同上     //表示过去一小时
while(now.hour>=24)
    now.hour-=24;     //过去一天

3.代码截图

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

  • 答案错误:时间格式应该是59后00我却设置为59后60导致错误

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

三、阅读代码

1.strcat函数的源代码

char * __cdecl strcat (
        char * dst,
        const char * src
        )
{
        char * cp = dst;

        while( *cp )
                cp++;                   /* find end of dst */
       /*不能写成while(*cp++)/ 因为这样的话为*cp为0时还会+1,导致cp执向了\0的后一个。

        while( *cp++ = *src++ ) ;       /* Copy src to end of dst */

        return( dst );                  /* return dst */

}

他的做法非常的精简,特别是while( cp++ = src++ )这一句要是我肯定不会把赋值语句放在while里面,虽然这样也是可行的,而且更精简,但它的做法也是可行的

不失为一个好做法

2.strcmp函数

int __cdecl strcmp (
        const char * src,
        const char * dst
        )
{
        int ret = 0 ;

        while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)
                ++src, ++dst;

        if ( ret < 0 )
                ret = -1 ;
        else if ( ret > 0 )
                ret = 1 ;

        return( ret );
}

我觉得这个代码就是好在! (ret = (unsigned char )src - (unsigned char )dst) && dst这个循环条件设置的很精练,定义了一个ret变量存放两数组比较的结果,

并且用&&dst这个条件保证会比较到dst的最后一个字符或两字符串不相等,这样大大减少了代码量,还用了const来保证数组的值不会被改变,在不需要改变数组的

情况下这样定义可以很好的避免意外

四、本周学习总结

1.总结本周学习内容

  • struct结构体是一种自定义型变量,可以用于存储一个变量的个个属性,使他们整体化

    • 结构的定义:单独定义,混合定义,无类型名定义
    • 结构的使用:一般可以用.运算符引用结构中的变量,对于指针来说还可以用->运算符
    • 结构的整体赋值可以一次对多个变量进行操作,但在结构成员数量较多时运行效率很低
  • union共用体和结构体非常相似,只是里面的变量会公用相同内存单元,必要的时候可以用它减少内存的使用
  • 枚举类型enum 类型名{常量1,常量2....常量n} 变量名
    • 枚举元素不是变量,而是常数,因此枚举元素又称为枚举常量。因为是常量,所以不能对枚举元素进行赋值。
    • 枚举元素作为常量,它们是有值的,C 语言在编译时按定义的顺序使它们的值为,1,2,…。
  • 递归实际上是把问题简化为形式相同,但较简单的问题,程序书写时只给出统一形式,到运算时再展开,每经过一次递归,问题就被简化一次
  • 递归的关键在于归纳出递归式子,确定出口,写程序时只要给出运算规律,对于具体过程不要深究

2.罗列本周一些错题。

A选项会给出一整串字符串,只有C会输出M

根据运算符优先级可以知道它最后是对地址进行自增所以错误

它这里Shangxi和zhangsan比较时要注意z是小写

这一题要注意先是函数的嵌套调用再是输出

时间: 2024-10-18 23:15:10

C语言博客作业--结构体的相关文章

C语言第十次博客作业--结构体

#一.PTA实验作业(5分) ##题目1:6-3 结构体数组中查找指定编号人员 ###1. 本题PTA提交列表(要提交列表,不是结果) ###2. 设计思路 struct student { char num[10]; int year,month,day ; };该结构体表示人员的编号,出生年月日. 定义一个环境变量 for i=0 to i<8 若找到指定编号,则return *(std+i) ###3.代码截图(注意,截图,截图,截图.不要粘贴博客上.不用用···语法去渲染) ###4.本

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

C语言博客作业--函数嵌套调用

一.实验作业(6分) 本周作业要求: 选一题PTA题目介绍. 学习工程文件应用,设计实现学生成绩管理系统. 学生成绩管理系统要求 设计一个菜单驱动的学生成绩管理程序,管理n个学生m门考试科目成绩,实现以下功能: 命令1:能够新增学生信息,并计算总分和平均分. 能够新增学生成绩信息. (学生按照学号排序,新增学生应该按照学号插入已有数组,并保持有序,插入排序实现) 命令2:根据输入学号和课程号修改学生成绩信息. 命令3:根据输入学号和课程删除学生成绩信息. 命令4:输出显示所有学生成绩信息.(按照

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

一.PTA实验作业 题目1:7-2 求整数序列中出现次数最多的数 1. 本题PTA提交列表 2. 设计思路 Begin 输入整数个数N 定义数组a[N] 输入数组a for(i 0 to N-1){//进行N次判断 for(j 0 to N-1) if(a[i]和a[j]相等) count加一 i等于0//第一次判断 使max=count; n=i;//n放下标,max放次数 i不等于0且count大于max 使max=count; n=i;//重新赋值 count为0//每次循环count为0

C语言博客作业--字符数组

题目1:题目名称 本题PTA提交列表(要提交列表,不是结果) 设计思路(伪代码或流程图) 伪代码尽量文字描述,请用下面markdown符号渲染.如: 定义变量i表示XXXXX for i=0 to n-1 a[i]执行运算等等. end for 3.代码截图(注意,截图,截图,截图.不要粘贴博客上.不用用···语法去渲染) 4.本题调试过程碰到问题及PTA提交列表情况说明. PTA提交列表中的每个错误详细说明为什么及如何解决. 题目2,3同题目1 二.截图本周题目集的PTA最后排名.(2分) P

C语言博客作业--函数

一.PTA实验作业 6-1 符号函数 1.本题PTA提交列表 2.设计思路 3..本题调试过程碰到问题及PTA提交列表情况说明. 前面的错误都是由于关系运算符中==写成=导致的 6-6 使用函数输出水仙花数 1.本题PTA提交列表 2.设计思路 1.narcissistich函数(判断number是否为水仙花数) 定义循环变量i,j,a储存每一位上的数,sum总和count位数 for(i=number;i>0;i=i/10)每执行一次count+1 for(k=1;k<=count;k++)

C语言博客作业--数据类型

一.PTA实验作业 题目1:7-2 区位码输入法 1. 本题PTA提交列表 2. 设计思路 { 定义字符型变量 ch1,ch2,ch3,ch4; 定义整数型变量 a,b; ch1=getchar(); //输入值 ch2=getchar(); ch3=getchar(); ch4=getchar(); a=10(ch1-48)+ch2-48+160; //运算结果 b=10(ch3-48)+ch4-48+160; putchar(a); putchar(b); } 3.代码截图 4.本题调试过程

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. 设计思路 定义number数组存放数字,count数组存放出现次数 定义i控制第一层循环,j控制第二层循环,N表示有N个数字,max为比较出现次数时候使用的最大值 for i=0 to <1000 { 清零count[i]=0 } while(输入N){ for i=0 to <N {//按顺序取数 输入number[i] for j=0 to <N {//和所有数比较 如果出现了相同的数则