C语言博客作业-结构体

一、PTA实验作业

6-2 按等级统计学生成绩

1. 本题PTA提交列表

2. 设计思路

定义i,count存放不及格人数
for i=0 to n-1{
	判断 score的值的范围
	if 100>=score>=85  p->grade='A' 
	if else 84>=score>=70  p->grade='B'
	if else 69>=score>=60  p->grade='C'
	else  p->grade='D' count自增 
} 
    返回 count; } 

3.代码截图

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

这题较简单 没有问题

6-4 结构体数组按总分排序

1. 本题PTA提交列表

2. 设计思路

第一个函数{
	定义i,j;
	for i=0 to n-1 循环一次p下移{
		for j=0 to 2 {
			访问sum,sum+=score算出sum 
		}end for 
	}end for 
} 
第二个函数{
	定义i,j
	定义结构变量temp
	选择排序法排序 
} 

3.代码截图

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


发现了几个问题,一是没有把所以数据输出,而且没有排序

一调试就发现if后面没有{} 导致if 后面只执行一句

7-2 时间换算

1. 本题PTA提交列表

2. 设计思路

定义time结构{hour,minute,second} 
定义结构变量now,just
输入 just.hour,just.minute,just.second
输入n
把just赋值给now
 now.second=now.second+n
 if second 超过60 second-60 minute+1{
 	if minute 超过60 minute-60 hour+1{
 		if hour 超过24 hour-24 
	 }
 }
 输出 过了n秒后的时间 

3.代码截图

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


发现还没输入n,结果就输出来了,仔细看输入发现:是中文的,然后用英文的输入

随便用个时间发现可以,但是pta提交只有1分

发现输出格式出现问题

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

三、阅读代码

求线性表L 中所有奇数之和的算法

#include <stdio.h>
#define N 10
typedef struct sqlist
 {
   int data[N];
   int last;
   }LIST;   //  自定义数据类型,这样LIST可以代替结构变量出现在变量定义和参数声明的地方了

 int Total(List list)
 {
   int sum=0;
    for(int i=0;i<=list.last;i++){
       if(list.data[i]%2);   // 非0为奇数,sum加权求和
         sum+=list.data[i];}
     return sum;  
 }
 void Show(LIST list)
 {
   int i;
   for(i=0;i<=list.last;i++)
      printf("%3d", list.data[i]);
   printf("\n");
 }


int main()   //主函数只充当输入输出功能
 {
    LIST list;
    int i,sum;
    for(i=0;i<=5;i++)
     list.data[i]=i;
    list.last=5;
    Show(list);
    sum=Total(list);
    printf("sum=%3d\n",sum);
    return 0;
}
/*字符串部分复制*/

include <stdio.h>  
#include<string.h>  
#define MAXN 20  
  
void strmcpy( charchar *t, int m, charchar *s );  
  
int main()  
{  
    char t[MAXN]="happy new year", s[MAXN];     //主函数只充当输入输出功能

    int m;  
  
    scanf("%d", &m);  
    strmcpy( t, m, s );  
    printf("%s\n", s);  
  
    return 0;  
}  
  void strmcpy( charchar *t, int m, charchar *s ){  
    int i,j,len;  
  
    strcpy(s, t);          //字符串赋值的方式
    len = strlen(s);  
    printf("s = %s, len = %d\n", s, len);  
    for(i=m-1;i>0;i--){      // 实现部分字符串复制
        for(j=i;j<len;j++){  
            *(s+j-1)=*(s+j);    
        }  
    }  
    *(s+len-m+1)='\0';  
}  

四、本周学习总结

1.你学会了什么?

结构体

  • 结构体实际上是c编译没有提供的数据类型,可以由程序员根据实际情况来自己构造的一种新的数据类型。

  • 结构体定义的一般格式为

  • struct 结构体名{
    数据类型 成员名 1;
    数据类型 成员名2;
    ……

              数据类型  成员名n;
    

};
其中;struct是用来说明类型是结构体的关键字,结构体的定义描述了该结构体的组织形式。在程序执行时,结构体说明并不引起系统为该结构体分配空间。真正占用储存空间的是具有相应结构类型的变量。

共用体

  • 共用体是C语言中的一种数据类型,是指将不同类型的数据项存放于同一段内存单元的一种构造数据类型。特点:节省空间。
  • 定义格式为union 共用体类型名 {类型名 成员1; 类型名 成员2;···类型名 成员n;;} 共用体变量名表 ;与结构体一样,公用体变量的定义可以跟在结构体定义的后面,也可以在main函数中定义,格式为union 公用体名 共用体变量名

枚举

递归函数原理

  • 递归就是子程序(或函数)直接调用自己或通过一系列调用语句间接调用自己,是一种描述问题和解决问题的基本方法
  • 实际上,递归是把一个不能或不好解决的大问题转化为一个或几个小问题,再把这些小问题进一步分解成更小的问题, 直至每个小问题都可以直接解决。因此,递归有两个基本要素:
        (1)边界条件:确定递归到何时终止,也称为递归出口。
        (2)递归模式:大问题是如何分解为小问题的,也称为递归体。递归函数只有具备了这两个要素,才能在有限次计算后得出结果

2.罗列本周一些错题。


  • 结构变量之间相互赋值,应该是结构变量1=结构变量2

  • 当时对结构体预习不充分 ,第三步不懂
posted @ 2017-12-17 22:26  Soyam  阅读(498)  评论(5编辑  收藏  举报