这个作业属于那个课程	C语言程序设计II
这个作业要求在哪 https://edu.cnblogs.com/campus/zswxy/computer-scienceclass3-2018/homework/3078
我在这个课程的目标是 学习字符串的几种函数
这个作业在那个具体方面帮助我实现目标 更加收悉字符串
参考文献 《C语言程序设计》

6-1 函数实现字符串逆序 (15 分)

本题要求实现一个字符串逆序的简单函数。

函数接口定义:

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.实验代码

#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,j=0,z,m;
while(p[i]!='\0')
{
i++;
z=i-1;
}
while(j<=z) //字符数组处理字符串,将字符串的首字符和最后一个字符交换,注意交换的次数
{
m=p[j];
p[j]=p[z];
p[z]=m;
j++;
z--;
}
}

2.思路



3.本题调试过程中碰到问题及解决方法

问题:·一开始没有判断p[i]!='\0'的情况,导致答案错误

解决方法:·多次调试后找到错误并改正

4运行结果

6-3 字符串的连接 (15 分)

本题要求实现一个函数,将两个字符串连接起来。

函数接口定义:
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 )
{
strcat(s,t);
return s;
}

2思路

运行结果、、

7-1 输出学生成绩 (20 分)

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

```

输入格式:

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

输出格式:

按照以下格式输出:

average = 平均成绩

max = 最高成绩

min = 最低成绩

结果均保留两位小数。

输入样例:

3

85 90 95

输出样例:

average = 90.00

max = 95.00

min = 85.00

1实验代码

include <stdio.h>

include <stdlib.h>

int main ()

{

int i,N,*p;

double sum,max,min;

scanf ("%d",&N);

if((p=(int*) calloc (N,sizeof(int)))==NULL)     //为数组p动态分配N个整数类型大小的空间
{
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(max<p[i])
{
max=p[i];
}
if(min>p[i])
{
min=p[i];
}
}
printf ("average = %.2lf\n",sum/N);
printf ("max = %.2lf\n",max);
printf ("min = %.2lf\n",min);
free (p); return 0;

}

2 思路
![](https://img2018.cnblogs.com/blog/1581803/201904/1581803-20190419154724798-1440770243.png) 运行结果
![](https://img2018.cnblogs.com/blog/1581803/201904/1581803-20190419154809230-124566022.png) 7-4 字符串排序 (20 分)
本题要求编写程序,读入5个字符串,按由小到大的顺序输出。 输入格式:
输入为由空格分隔的5个非空字符串,每个字符串不包括空格、制表符、换行符等空白字符,长度小于80。 输出格式:
按照以下格式输出排序后的结果:

After sorted:

每行一个字符串
输入样例:

red yellow blue green white

输出样例:

After sorted:

blue

green

red

white

yellow

1实验代码

include<stdio.h>

include<string.h>

int main()

{

int i,j;

char a[5][80],m[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(m,a[j]); //把字符串a[j]复制到m
strcpy(a[j],a[j+1]);
strcpy(a[j+1],m);
}
}
} printf("After sorted:\n");
for(i=0;i<5;i++)
{
printf("%s\n",a[i]);
} return 0;

}

2 思路
![](https://img2018.cnblogs.com/blog/1581803/201904/1581803-20190419154959629-63562678.png)
3)本题调试过程中碰到问题及解决方法
问题:·本题是仿照书上的例题写的,一开始没有定义二维数组,并且在比较字符串大小的时候出了点问题,我把for语句中的i=0,导致答案错误。
解决方法:·多次调试之后发现错误并改正。
4运行结果图
![](https://img2018.cnblogs.com/blog/1581803/201904/1581803-20190419155053024-2138156201.png) ![](https://img2018.cnblogs.com/blog/1581803/201904/1581803-20190419155131297-552345992.png) 7-3 计算平均成绩 (15 分)
给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和成绩([0,100]区间内的整数),要求计算他们的平均成绩,并顺序输出平均线以下的学生名单。 输入格式:
输入在一行中给出正整数N(≤10)。随后N行,每行给出一位学生的信息,格式为“学号 姓名 成绩”,中间以空格分隔。 输出格式:
首先在一行中输出平均成绩,保留2位小数。然后按照输入顺序,每行输出一位平均线以下的学生的姓名和学号,间隔一个空格。 输入样例:

5

00001 zhang 70

00002 wang 80

00003 qian 90

10001 li 100

21987 chen 60

输出样例:

80.00

zhang 00001

chen 21987

1实验代码

include<stdio.h>

include<string.h>

struct student //学生信息结构定义

{

int num[6]; //学号

char name[11]; //姓名

int grade; //成绩

};

int main(void)

{

struct student a[10]; //定义结构变量

int i, N;

double sum = 0,average;

scanf("%d\n", &N);

for (i = 0; i < N; i++) //计算

{

scanf("%s%s%d", &a[i].num, &a[i].name, &a[i].grade);

sum += a[i].grade;

}

average = sum / N;

printf("%.2f\n", average);
for (i = 0; i<N; i++)
{
if (a[i].grade < average)
{
printf("%s %s\n", a[i].name, a[i].num);
}
} return 0;

}

2.思路
![](https://img2018.cnblogs.com/blog/1581803/201904/1581803-20190419155402979-9636707.png) 3)本题调试过程中遇到的问题及解决方法
问题:·本题也是仿照书上写的,没有把学号和名字定义成数组
解决方法:·提交答案错误之后返回代码仔细检查
4 运行结果
![](https://img2018.cnblogs.com/blog/1581803/201904/1581803-20190419155506148-364278743.png)
![](https://img2018.cnblogs.com/blog/1581803/201904/1581803-20190419155520837-801602092.png)

第八周zuoye的更多相关文章

  1. 第八周PSP

    团队项目PSP 一:表格     C类型 C内容 S开始时间 E结束时间 I时间间隔 T净时间(mins) 预计花费时间(mins) 讨论 讨论用户界面 8:40 11:40 35 60 70 分析与 ...

  2. Java第八周学习总结

    20145113第八周学习总结 第十五章学习内容 第15章比较琐碎,相对于之前章节也比较枯燥无味看了一部分,也动手敲了些 Logger logger = Logger.getLogger(" ...

  3. 补交作业-第八周PSP

    一.表格 C(分类) C(内容) S(开始时间) ST(结束时间) I(打断时间) △(净工作时间) 讨论 用户界面 9:30 10:40 15 55 编码 编码 13:20 16:30 10 180 ...

  4. 20145213《Java程序设计》第八周学习笔记

    20145213<Java程序设计>第八周学习笔记 教材学习内容总结 "桃花春欲尽,谷雨夜来收"谷雨节气的到来意味着寒潮天气的基本结束,气温回升加快.刚出冬的我对于这种 ...

  5. 20145304 Java第八周学习报告

    20145304<Java程序设计>第八周学习总结 教材学习内容总结 NIO NIO使用频道来衔接数据节点,在处理数据时,NIO可以让你设定缓冲区容量,在缓冲区中对感兴趣的数据区块进行标记 ...

  6. 20145330第八周《Java学习笔记》

    20145330第八周<Java学习笔记> 第十五章 通用API 通用API 日志:日志对信息安全意义重大,审计.取证.入侵检验等都会用到日志信息 日志API Logger:注意无法使用构 ...

  7. 20145337《Java程序设计》第八周学习总结

    20145337<Java程序设计>第八周学习总结 教材学习内容总结 15.1日志 15.1.1日志API简介 使用日志的起点是logger类,logger实例的创建有许多要处理的要素,必 ...

  8. Linux内核设计第八周 ——进程的切换和系统的一般执行过程

    Linux内核设计第八周 ——进程的切换和系统的一般执行过程 第一部分 知识点总结 第二部分 实验部分 1.配置实验环境,确保menu内核可以正常启动 2.进入gdb调试,在shedule和conte ...

  9. Linux内核分析——第八周学习笔记20135308

    第八周 进程的切换和系统的一般执行过程 一.进程切换的关键代码switch_to分析 1.进程调度与进程调度的时机分析 (1)进程分类 第一种分类 I/O-bound:等待I/O CPU-bound: ...

随机推荐

  1. default关键字

    default关键字在JDK8中有两个用处. 1.在switch语句的时候使用default int gender = 3; String genderString; switch (gender) ...

  2. hive中对子查询如in,exists等支持

    案例情况:同事使用公司数据探查跑一段代码,部分代码如下,报错,显示不支持in内的子查询.但是直接用虚拟机去跑的话代码没有任何报错,也出结果,很奇怪. SELECT t1.SIGN_CODE AS bu ...

  3. urllib详细版

    urllib是python内置的处理HTTP请求的库,主要包含以下四个模块 request 模块,是最基本的处理HTTP请求的模块. error 异常处理模块,如果出现请求错误,可以捕获这些错误,保证 ...

  4. Tomcat网站上的core和deployer的区别

    8.5.13 Please see the README file for packaging information. It explains what every distribution(分布) ...

  5. VUEX报错 [vuex] Do not mutate vuex store state outside mutation handlers

    数组 错误的写法:let listData= state.playList; // 数组深拷贝,VUEX就报错 正确的写法:let listDate= state.playList.slice(); ...

  6. Leaflet使用vector tiles 标注label设置

    JS //简单的标注 var marker = L.marker([ 31.2, 114.5 ], { // icon:myIcon }).addTo(map) // 设置label .bindToo ...

  7. 详解GSM的基带跳频和射频跳频

    跳频技术源于军事通信,目的是为了获得较好的保密性和抗干扰能力.跳频分为快速和慢速两种,GSM中的跳频属于慢跳频. 跳频方式从时域概念上分为帧跳频和时隙跳频,从载频实现方式上分为射频跳频和基带跳频. 帧 ...

  8. EF大数据插入

    _April给出代码: using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotati ...

  9. LOJ #539. 「LibreOJ NOIP Round #1」旅游路线 倍增floyd + 思维

    考试的时候是这么想的: 求出每一个点花掉 $i$ 的花费向其他点尽可能走的最长距离,然后二分这个花费,找到第一个大于 $d$ 的就输出$.$然而,我这个记忆化搜索 $TLE$ 的很惨$.$这里讲一下正 ...

  10. 苹果cms模板文件不存在:public/jump.html

    1,模板文件不存在很显然就是模板缺少文件导致,缺少什么文件一般都会提示.(如上图)点击首页的时,有的能进入播放页  有的提示(上图) 模版文件不存在:public/jump.html 通过查询苹果cm ...