大一下第2次作业(markdown改)
一、作业
6-7 删除字符串中数字字符
1.设计思路
(1)主要描述题目算法
第一步:用for循环和if语句,一个一个字符判断,找到数字字符就跳过去判断下一个,否则使指针指向不是(已判断过的)数字字符的字符(替换它)。
第二步:添加结束字符。
2.实验代码
void delnum(char *s)
{
int i=0,j=0;
for(i=0;*(s+i)!='\0';i++)
{
if(*(s+i)>='0'&&*(s+i)<='9')
{
continue;
}
else
{
*(s+j)=*(s+i);
j++;
}
}
*(s+j)='\0';
}
(2)本题调试过程碰到问题及解决办法
错误:
原因:未加*(s+j)='\0',字符串是以\0为结束标志,找不到\0会越界访问,结果未知。
6-8 统计子串在母串出现的次数
1.设计思路
(1)主要描述题目算法
第一步:用外循环控制趟数,再用for循环,令j=i,k=0,退出内循环的条件为子串中的字符不为母串中的字符。
第二步:在内循环中,用if语句判断子串下一个是否为结束符,如果是,说明已经判断完一次,次数加1,跳出内循环。
第三步:从母串的下一个字符重新判断
2.实验代码
int fun(char *str,char *substr)
{
int i=0,j=0,k=0,count=0;
for(i=0;*(str+i)!='\0';i++)
{
for(j=i,k=0;*(str+j)==*(substr+k);j++,k++)
{
if(*(substr+k+1)=='\0')
{
count++;
break;
}
}
}
return count;
}
(2)本题调试过程碰到问题及解决办法
无。
3.流程图
6-9 字符串中除首尾字符外的其余字符按降序排列
1.设计思路
(1)主要描述题目算法
第一步:用外循环控制趟数,num个数组字符选num-1趟(首尾字符不比较)。
第二步:再用for循环和if语句判断下一个字符的ASCII码是否大于前一个字符的ASCII码,如果是就交换。
2.实验代码
int fun(char *s,int num)
{
int i,j;
char t;
for(i=1;i<num-1;i++)
{
for(j=1;j<num-2;j++)
{
if(*(s+i)>*(s+j))
{
t=*(s+j);
*(s+j)=*(s+i);
*(s+i)=t;
}
}
}
}
(2)本题调试过程碰到问题及解决办法
无。
7-1 输出学生成绩
1.设计思路
(1)主要描述题目算法
第一步:输入学生人数,使用动态分配。
第二步:用for循环输入学生成绩,并把它们相加。
第三步:令max、min等于数组的第一个元素。
第四步:用for循环,如果下一个数组元素大于max,就交换max。如果小于min,就交换min。
2.实验代码
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *a,n,i;
double max,min,sum=0;
scanf("%d",&n);
if((a=(int *)malloc(n*sizeof(int)))==NULL)
exit(1);
for(i=0;i<n;i++)
{
scanf("%d",a+i);
sum=sum+*(a+i);
}
max=*a;min=*a;
for(i=0;i<n;i++)
{
if(*(a+i)<min)
min=*(a+i);
if(*(a+i)>max)
max=*(a+i);
}
printf("average = %.2f\nmax = %.2f\nmin = %.2f",sum/n,max,min);
free(a);
return 0;
}
(2)本题调试过程碰到问题及解决办法
错误:输入样例按回车程序崩溃。
原因:未使用动态内存分配语句。
C高级第二次作业(1)PTA作业提交列表:
7-2 计算职工工资
1.设计思路
(1)主要描述题目算法
第一步:定义结构体。
第二步:用for循环输入n个员工的姓名 基本工资 浮动工资 支出。
第三步:计算并输出。
2.实验代码
#include<stdio.h>
struct person{
char name[100];
float w;
float w1;
float account;
}person1;
int main()
{
int n,i;
float pay;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s %f %f %f",&person1.name,&person1.w,&person1.w1,&person1.account);
pay=person1.w+person1.w1-person1.account;
printf("%s %.2f\n",person1.name,pay);
}
return 0;
}
(2)本题调试过程碰到问题及解决办法
错误:
在编译器运行时结果跟输出样例一样,但是PTA判断我答案错误。
原因:在我仔细的审过题目后,我发现我漏掉了这一点 把定义的变量类型改为float后答案正确。
3.流程图
7-3 计算平均成绩
1.设计思路
(1)主要描述题目算法
第一步:定义结构体。
第二步:用for循环输入学号 姓名 成绩,并将成绩相加。
第三步:计算平均值,并输出。
第四步:用for循环和if语句判断每个人的成绩是否小于平均值,是就输出学生的姓名和学号。
2.实验代码
#include<stdio.h>
struct student{
char num[6];
char name[10];
int grade;
}student1[10];
int main()
{
int n,i;
double aver=0,sum=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s %s %d",student1[i].num,student1[i].name,&student1[i].grade);
sum=sum+student1[i].grade;
}aver=sum/n;
printf("%.2f\n",aver);
for(i=0;i<n;i++)
{
if(student1[i].grade<aver)
printf("%s %s\n",student1[i].name,student1[i].num);
}
return 0;
}
(2)本题调试过程碰到问题及解决办法
错误:
原因:定义char类型的学号数组(由5个数字组成的字符串)的字符个数大于数组长度,没有结束字符,找不到\0会越界访问,结果未知。
将char num[5]改为char num[6]即可。
C高级第二次作业(2)PTA作业提交列表:
8-1 按等级统计学生成绩
1.设计思路
(1)主要描述题目算法
第一步:用for循环再用if语句判断学生成绩的等级,如果学生成绩小于60分,count的值加1。
第二步:返回count的值到主函数。
2.实验代码
int set_grade( struct student *p, int n )
{
int k,count=0;
for(k=0;k<n;k++)
{
if(p[k].score>=85&&p[k].score<=100) p[k].grade='A';
else if(p[k].score>=70&&p[k].score<=84) p[k].grade='B';
else if(p[k].score>=60&&p[k].score<=69) p[k].grade='C';
else
{
p[k].grade='D';
count++;
}
}
return count;
}
(2)本题调试过程碰到问题及解决办法
错误:输出乱码。
原因:将return count语句写进了for循环里,改正后答案正确。
3.流程图
8-2 结构体数组按总分排序
1.设计思路
(1)主要描述题目算法
第一步:用两个for循环,外循环为第i个人的成绩总值,内循环为计算第i个人的成绩总值。
第二步:用冒泡法排序,按总分从大到小交换。
2.实验代码
void calc(struct student *p,int n)
{
int i,j;
p->sum=0;
for(i=0;i<n;i++,p++)
{
for(j=0;j<3;j++)
{
p->sum=p->sum+p->score[j];
}
}
}
void sort(struct student *p,int n)
{
int i,j;
struct student t;
for(i=0;i<n;i++)
{
for(j=0;j<n-1-i;j++)
{
if((p+j)->sum<(p+j+1)->sum)
{
t=*(p+j+1);
*(p+j+1)=*(p+j);
*(p+j)=t;
}
}
}
}
(2)本题调试过程碰到问题及解决办法
错误:将t定义为int类型,编译器报错。
原因:t是作为交换p指针所指的结构体数组的学生数据的“空瓶子”,定义类型要与结构体数组一样。
C高级第二次作业(3)PTA作业提交列表:
总结
1、总结两周里所学的知识点有哪些学会了?
1.本周新学习了结构的概念和定义、结构数组和结构指针,学会了两种结构体变量的定义方法
(1) 先声明结构体类型再定义结构体变量名 例如
#include<stdio.h>
struct Student//声明结构体类型Student
{
int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
}
int main()
{
struct Student student1;//定义变量名
}
(2)在声明结构体类型的同时定义结构体变量名 例如
#include<stdio.h>
struct Student//声明结构体类型Student
{
int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
}student1;//定义变量名
(3)学会了如何使用结构指针 (p=Student)
- (*p).num
- p->num
第2种在*p上加上小括号的原因是因为在默认情况下 . 运算符的优先级是比 *运算符的优先级要高的,要提升 *p 的运算优先级。
(4)学会了如何使用指针指向结构体数组 要先使p=Student
1.(p+i)->num p+i表示结构体数组Student第i个元素的地址
2.若指针p指向数组的某一个元素,则p++就指向其后面元素。
3.指针p指向数组Student,p[i]表示结构体数组Student的第i个元素 Student[i]等同于p[i] 可这样使用p[i].num
2、没有学会的 动态内存分配
一开始不明白为什么要使用动态内存分配(像7-1 输出学生成绩中要使用)但是我没有使用然后在编译器中运行,程序就奔溃。在网上搜索看了这篇博客 不光解释了为什么需要动态内存分配,也解释了讨论组中 二班陈天胤同学对我在讨论组给出的回答的疑问。
2、Git地址
3、点评3个同学的本周作业:
学习进度表格和折线图
大一下第2次作业(markdown改)的更多相关文章
- 集大软件工程15级个人作业Week2
集大软件工程15级个人作业Week2 快速通读教材<构建之法>,并参照提问模板,提出5个问题. 在每个问题后面,请说明哪一章节的什么内容引起了你的提问,提供一些上下文 列出一些事例或资料, ...
- 集大软件工程15级个人作业Week1
集大软件工程15级个人作业Week1 孙志威 201521123077 博客园主页 码云地址 阅读参考材料,并回答下面几个问题 (1)回想一下你初入大学时对网络工程专业的畅想 当初你是如何做出选择网络 ...
- 【大数据应用技术】作业八|爬虫综合大作业Molly134
本次作业的要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3075 前言:本次作业是爬取CBO中国票房2010-2019年每年 ...
- 【大数据应用技术】作业十二|Hadoop综合大作业
本次作业的要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3339 前言 本次作业是在<爬虫大作业>的基础上进行的 ...
- 【大数据应用技术】作业十一|分布式并行计算MapReduce
本次作业在要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3319 1.用自己的话阐明Hadoop平台上HDFS和MapRe ...
- 【大数据应用技术】作业九|安装关系型数据库MySQL 安装大数据处理框架Hadoop
本次作业的要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3161 1.安装MySql 按ctrl+alt+t打开终端窗口,安 ...
- 大数据 --> Spark和Hadoop作业之间的区别
Spark和Hadoop作业之间的区别 熟悉Hadoop的人应该都知道,用户先编写好一个程序,我们称为Mapreduce程序,一个Mapreduce程序就是一个Job,而一个Job里面可以有一个或多个 ...
- 【大数据应用技术】作业十|分布式文件系统HDFS 练习
本次作业的要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3292 1.目录操作 在HDFS中为hadoop用户创建一个用户目 ...
- 第五周作业:markdown语法小总结
第五周作业 markdown语法总结 早就想写这么一个文章了,关于markdown的语法,因为最近使用的比较多,所以特地总结一下 一,标题 首先要介绍的就是标题, 标题一共有六级 # h1 ## h2 ...
随机推荐
- [luogu P2324] [SCOI2005]骑士精神
[luogu P2324] [SCOI2005]骑士精神 题目描述 输入输出格式 输入格式: 第一行有一个正整数T(T<=10),表示一共有N组数据.接下来有T个5×5的矩阵,0表示白色骑士,1 ...
- Vue keep-alive总结
<keep-alive>是Vue的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM. <keep-alive> 包裹动态组件时,会缓存不活动的组件实例,而不是 ...
- java下使用chromedriver获取访问页面状态码
##在使用chromedriver的时候 并没有提供api来获取访问页面的状态码,但是可以打开日志来获取到 LoggingPreferences logPrefs = new LoggingPrefe ...
- 蓝桥杯—ALGO-2 最小最大公倍数
问题描述已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少. 输入格式输入一个正整数N. 输出格式输出一个整数,表示你找到的最小公倍数.样例输入9样例输出504数据规模与约定1 ...
- shell 流程控制语句
case语句 case $变量名 in "值1") 如果变量的值等于值1,则执行程序1 ;; "值2") 如果变量的值等于值2,则执行程序2 ;; ...
- 内联函数inline的用法
一.什么是内联函数 在C语言中,如果一些函数被频繁调用,不断地有函数入栈,即函数栈,会造成栈空间或栈内存的大量消耗.为了解决这个问题,特别的引入了inline修饰符,表示为内联函数. 栈空间就是指放 ...
- python全栈开发笔记---基本数据类型--字符串魔法
字符串: def capitalize(self, *args, **kwargs) test = "aLxs" v = test.capitalize() #capitalize ...
- flask-security(一)快速入门
很多例程都是基于flask-sqlalchemy的. 但是我使用sqlalchemy,并没有使用sqlalchemy,看中的也就是flask的灵活性. 暂时写flask的程序,但是为了以后写别的程序方 ...
- 反片语 UVA 156
//该单词不能通过字母重排,得到输入文本中的另外一个单词.在判断是否满足条件时,字母部分大小写 #include<iostream> #include<vector> #inc ...
- 《Python》网络编程之客户端/服务端框架、套接字(socket)初使用
一.软件开发的机构 我们了解的涉及到两个程序之间通讯的应用大致可以分为两种: 第一种是应用类:QQ.微信.网盘等这一类是属于需要安装的桌面应用 第二种是web类:比如百度.知乎.博客园等使用浏览器访问 ...