2019春第八周作业
这个作业属于那个课程 | C语言程序设计II |
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/MS/homework/3080 |
我在这个课程的目标是 | 学会使用动态内存分配来解决问题 |
这个作业在哪个具体方面帮助我实现目标 | 理解和掌握动态内存分配的具体使用 |
参考文献 | C语言程序设计II第八章 |
一、本周完成作业
基础作业1
1.实验代码
#include <stdio.h>
#define MAXS 20
void f( char *p );
void ReadString( char *s );
int main()
{
char s[MAXS];
ReadString(s);
f(s);
printf("%s\n", s);
return 0;
}
void f( char *p )
{
int i=0,m=0,n,temp;
while(p[i]!='\0')
i++;
n=i-1;
while(m<=n)
{
temp=p[m];
p[m]=p[n];
p[n]=temp;
m++;
n--;
}
}
2.设计思路
3.本题调试过程碰到的问题及解决办法
本题比较简单基本没什么问题
4.运行结果截图
基础作业2
1.实验代码
#include <stdio.h>
#include <string.h>
#define MAXS 10
char *str_cat( char *s, char *t );
int main()
{
char *p;
char str1[MAXS+MAXS] = {'\0'}, str2[MAXS] = {'\0'};
scanf("%s%s", str1, str2);
p = str_cat(str1, str2);
printf("%s\n%s\n", p, str1);
return 0;
}
char *str_cat(char *s, char *t)
{
char*m=s;
while(*s!='\0'){
s++;
}
while(*t!='\0'){
*s=*t;
t++;
s++;
}
return m;
}
2.设计思路
3.本题调试过程碰到的问题及解决办法
一开始没有定义一个指针等于s,出现了错误,然后自己问同学得以解决
错误截图
4.运行结果截图
基础作业3
1.实验代码
#include<stdio.h>
#include<stdlib.h>
int main ()
{
int n,i,*p;
double max,min,sum=0,average;
scanf("%d",&n);
if((p=(int*)calloc(n,sizeof(int)))==NULL){
printf("Not able to allocate memory.\n");
exit(1);
}
for(i=0;i<n;i++){
scanf("%d",p+i);
}
max=min=*(p+0);
for(i=0;i<n;i++){
sum=sum+*(p+i);
if(*(p+i)>max){
max=*(p+i);
}
if(*(p+i)<min){
min=*(p+i);
}
}
average=sum/n;
printf("average = %.2f\nmax = %.2f\nmin = %.2f",average,max,min);
free(p);
return 0;
}
2.设计思路
3.本题调试过程碰到的问题及解决办法
一开始想的太复杂,找max和min时用一个中间数来跟*(p+i)交换导致部分正确,然后换了一个方法就对了
错误截图
4.运行结果截图
基础作业4
1.实验代码
#include<stdio.h>
#include<string.h>
int main()
{
int i,j;
char a[5][80], t[80];
for (i = 0; i < 5; i++)
{
scanf("%s",&a[i]);
}
for (i=1;i<5;i++)
{
for (j =0; j < 5-i ;j++)
if (strcmp(a[j], a[j+1]) > 0)
{
strcpy(t,a[j]);
strcpy(a[j], a[j + 1]);
strcpy(a[j + 1], t);
}
}
printf("After sorted:\n");
for (i = 0; i < 5; i++){
printf("%s\n",a[i]);
}
return 0;
}
2.设计思路
3.本题调试过程碰到的问题及解决办法
本题都是一些小错误,经过自己检查和问同学之后改正
4.运行结果截图
预习作业
1.实验代码
#include<stdio.h>
struct student
{
char num[6],name[10];
int sore;
};
int main()
{
int N,i,sum=0;
double average;
struct student s[10];
scanf("%d",&N);
for(i=0;i<N;i++)
{
scanf("%s %s %d",&s[i].num ,&s[i].name ,&s[i].sore );
sum=sum+s[i].sore ;
}
average=sum*1.0/N;
printf("%.2f\n",average);
for(i=0;i<N;i++)
{
if(s[i].sore<average)
printf("%s %s\n",s[i].name,s[i].num);
}
}
2.设计思路
3.本题调试过程碰到的问题及解决办法
主要难点在于不知道前面要加一个 struct student 来定义,后面基本比较简单,算出总和跟平均值,再按要求输出一些同学的name跟sore
数组s【5】导致部分正确,经过自己多次检查后改正
错误截图
4.运行结果截图
挑战作业实在太难,不会做
学习感悟
总之就是还是要靠自己多钻研,老师只是辅助,要靠自己多找资料和问同学来学习,继续加油吧
结对编程优缺点
总的来说还是优点大于缺点的,能够相互学习共同进步取长补短,毕竟人多力量大嘛,2个人总比自己一个人解决问题好,好的队友也算自己半个老师了