第八周作业

第八周作业
Deadline:2019-04-19(周五)23:00

本周教学目标
掌握常用字符串函数以及使用指针操作字符串的方法,掌握动态内存分配。

本周作业头

一、本周完成的作业
题目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,q=0,h,t;
    while(p[i]!='\0')
        i++;
    h=i-1;
    while(q<=h)
    {
        t = p[q];
        p[q] = p[h];
        p[h] = t;
        q++;
        h--;
    }
    return ;
}

2) 设计思路

3).本题调试过程碰到问题及解决办法
问题1:当时一下子没有想出怎么计算字符串的长度

解决方法:利用i计数,然后h = i-1;
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 ){
	
	s=strcat(s,t);
	return s;							
}

2).设计思路

3).本题调试过程碰到问题及解决办法
问题:因为就使用了一个函数,没有问题

4).运行结果截图

题目3: 输出学生成绩

1).实验代码

#include<stdio.h>
#include<stdlib.h>
int main(){
  int n,i;
  float *p,sum,max,min,avg;
  scanf("%d",&n);
  if((p=(float*)malloc(n*sizeof(float)))==NULL){
    exit(1);
  }
  sum=0.0;
  max=-1;
  min=1000;
  for(i=0;i<n;i++)
  {
    scanf("%f",p+i);
    sum+=*(p+i);
    if(min>*(p+i))
      min=*(p+i);
    if(max<*(p+i))
      max=*(p+i);
  }
  avg=sum/n;
  printf("average = %.2f\nmax = %.2f\nmin = %.2f",avg,max,min);
  free(p);
  return 0;
}

2).设计思路

3).本题调试过程碰到问题及解决办法
问题:指针运用还是不够熟练,有时候会搞错
解决方法:看C语言程序设计ii ,看例题

4).运行结果截图

题目4:
1).实验代码

#include<stdio.h>
#include<string.h>
int main(){
	int i,j;
	char s[5][80],a[80];
	for(i=0;i<5;i++)
		scanf("%s",s[i]);
	for(i=0;i<4;i++)
		for(j=0;j<4-i;j++)
			if(strcmp(s[j],s[j+1])>0  )
			{
				strcpy(a,s[j]);
				strcpy(s[j],s[j+1]);
				strcpy(s[j+1],a);
			}
	printf("After sorted:\n");
	for(i=0;i<5;i++)
		printf("%s\n",s[i]);
	return 0;
}

2).设计思路

3).本题调试过程碰到问题及解决办法
问题1:strcmp(s[j],s[j+1])>0
解决方法:刚开始不明白,后来仔细看书上的解释才明白是计算ASCII码的大小的。

4).运行结果截图

题目5: 计算平均成绩
1).实验代码

#include<stdio.h>
#include<string.h>

struct student{ /*学生信息结构定义*/
		int num;
		char id[10];
		char name[10];
		float cj;		
	};

int main()
{
	struct student s[10];
	int i,N;
	float sum = 0,ave;
	scanf("%d",&N);
	for(i=0; i<N; i++ )
	{
		scanf("%s%s%f",&s[i].id,&s[i].name,&s[i].cj);
		sum += s[i].cj;
	}
	ave = sum/N;
	
	printf("%.2f\n",ave);
	for(i=0; i<N; i++)
	{
		if(s[i].cj < ave)
			printf("%s %s\n",s[i].name,s[i].id);
	}
	return 0;
}

2).设计思路

3).本题调试过程碰到问题及解决办法
问题:结构的具体使用方法
解决方法:预习书上的列题

4).运行结果截图

二、学习进度条

三、学习进度统计和学习感悟

学习感悟:题目难度适中,对我来说是一个很好的跷板,对自己知识的掌握程度愈来愈熟练!

四、结对编程
结对编程搭档很给力,我们互相讨论了许多问题,有许多新的收获。

posted on 2019-04-19 22:55  译梦  阅读(85)  评论(0编辑  收藏  举报

导航