第八周作业

第八周作业:

(1)函数实现字符串逆序:
本题要求实现一个字符串逆序的简单函数。
函数接口定义:

void f( char *p );

函数f对p指向的字符串进行逆序操作。要求函数f中不能定义任何数组,不能调用任何字符串处理函数。
裁判测试程序样例:

#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;
}
/* 你的代码将被嵌在这里 */

输入样例:

Hello World!

输出样例:

!dlroW olleH

1.实验代码:

void f( char *p )
{
    int i,n=0,j,t;
    while(p[i]!='\0')      //测量字符串的长度//
    i++; 
    j=i-1;
    while(n<=j)
{
    t=p[n];                //进行首位交换//
    p[n]=p[j];
    p[j]=t;
    n++;
    j--;
    }
    return;
}

2.设计思路:
流程图下周作业补上。

3.问题及解决方法:
本题主要问题是对于字符串测量有点小问题,不过还行,就是首位交换的时候需要注意一下。

4.运行结果截图:

(2)字符串的连接:
本题要求实现一个函数,将两个字符串连接起来。
函数接口定义:

char *str_cat( char *s, char *t );

函数str_cat应将字符串t复制到字符串s的末端,并且返回字符串s的首地址。
裁判测试程序样例:

#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;
}

/* 你的代码将被嵌在这里 */

输入样例:

abc
def

输出样例:

abcdef
abcdef

1.实验代码:

char *str_cat( char *s, char *t )
{
    char *p;
    p=strcat(s,t);
    return p;
}

2.设计思路:
流程图下周作业补上。

3.问题及解决方法:
首先的问题是测量str字符串长度,但是看下书还是可以解决,然后对于字符串t复制到字符串s的末端有点不太懂。本题自己只会一点点,参照了百度资料。

4.运行结果截图:

(3)输出学生成绩 :
本题要求编写程序,根据输入学生的成绩,统计并输出学生的平均成绩、最高成绩和最低成绩。建议使用动态内存分配来实现。
输入格式:

输入第一行首先给出一个正整数N,表示学生的个数。接下来一行给出N个学生的成绩,数字间以空格分隔。
输出格式:

按照以下格式输出:

average = 平均成绩
max = 最高成绩
min = 最低成绩

结果均保留两位小数。
输入样例:

3
85 90 95

输出样例:

average = 90.00
max = 95.00
min = 85.00

1.实验代码:

#include <stdio.h>
int main()
{
	int n, a[9999];
	double average, max = 0, min = 1000, sum = 0;     //根据题目要求保留两位小数//
	scanf("%d", &n);
	for (int i = 0; i < n; i++)        //利用for循环进行累加//
	{
		scanf("%d", &a[i]);
		sum += a[i];
	}
	average = sum / n;
	for (int i = 0; i < n; i++)       //通过冒泡排序法寻找最值//
	{
		if (a[i] > max)
			max = a[i];
		if (a[i] < min)
			min = a[i];
	}
	printf("average = %.2f\n", average);    //依次输出平均成绩和最大值和最小值//
	printf("max = %.2f\n",max);
	printf("min = %.2f\n",min);
	return 0;
}

2.设计思路:
流程图下周作业补上。

3.问题及解决方法:
题目前面还行,利用for循环累加等等,本题涉及到冒泡排序法,但是自己对于冒泡排序还是有点不理解,然后主要还是不知道怎么使用动态内存分配来实现。
对于这种题目还是有点不理解的,通过百度可以找到一点方法。

4.运行结果截图:

(4)本题能力有限。

学习进度条:

学习感悟:
还是那句老话,随着课程的进行,知识越来多,题目也越来越难,困惑也越来越多。上课也跟不上。感悟就是 难!

posted @ 2019-04-19 21:44  迷人林  阅读(219)  评论(1编辑  收藏  举报