C语言第七周作业

每个单词的最后一个字母改成大写
函数fun的功能是:将p所指字符串中每个单词的最后一个字母改成大写。(这里的“单词”是指由空格隔开的字符串)。
函数接口定义:
void fun( char *p );
其中 p 是用户传入的参数。函数将 p所指字符串中每个单词的最后一个字母改成大写。
裁判测试程序样例:
include <stdio.h>
void fun( char *p );
int main()
{
char chrstr[64]; int d ;
gets(chrstr);
d=strlen(chrstr) ;
chrstr[d] = ' ' ;
chrstr[d+1] = 0 ;
fun(chrstr);
printf("\nAfter changing: %s\n", chrstr);
return 0;
}
/* 请在这里填写答案 /
输入样例:
Cmy friend is happy
输出样例:
CAfter changing: mY frienD iS happy
1.实验代码
void fun(char p)
{
for(;p!='\0';p++)
{
if(p!=' '&&*(p+1)==' ')
p=p-32;
}
}
2.流程图

3.遇到的问题和解决方法
问题:自己参考了教材上的一个题目,有很多相似的地方,但还是出现了一些错误。
解决方法:自己仔细思考解决问题。

4.运行截图

自动售货机
如图所示的简易自动售货机,物品架1、2上共有10样商品,按顺序进行编号分别为1-10,标有价格与名称,一个编号对应一个可操作按钮,供选择商品使用。如果物架上的商品被用户买走,储物柜中会自动取出商品送到物架上,保证物品架上一定会有商品。用户可以一次投入较多钱币,并可以选择多样商品,售货机可以一次性将商品输出并找零钱。
用户购买商品的操作方法是:
(1)从“钱币入口”放入钱币,依次放入多个硬币或纸币。钱币可支持1元(纸币、硬币)、2元(纸币)、5元(纸币)、10元(纸币),放入钱币时,控制器会先对钱币进行检验识别出币值,并统计币值总额,显示在控制器显示屏中,提示用户确认钱币放入完毕;
(2)用户确认钱币放入完毕,便可选择商品,只要用手指按对应商品外面的编号按钮即可。每选中一样商品,售货机控制器会判断钱币是否足够购买,如果钱币足够,自动根据编号将物品进行计数和计算所需钱币值,并提示余额。如果钱币不足,控制器则提示“Insufficient money”。用户可以取消购买,将会把所有放入钱币退回给用户。
输入格式:
先输入钱币值序列,以-1作为结束,再依次输入多个购买商品编号,以-1结束。
输出格式:
输出钱币总额与找回零钱,以及所购买商品名称及数量。
输入样例:
1 1 2 2 5 5 10 10 -1
1 2 3 5 1 6 9 10 -1
输出样例:
Total:36yuan,change:19yuan
Table-water:2;Table-water:1;Table-water:1;Milk:1;Beer:1;Oolong-Tea:1;Green-Tea:1;
1.实验代码
int main(void)
{
char a[10][20] = {"Table-water","Table-water","Table-water","Coca-Cola","Milk","Beer","Orange-Juice","Sprite","Oolong-Tea","Green-Tea"};
int b[11] = {0,0,0,0,0,0,0,0,0,0,0};
int c[50];
int i=1, k, sum = 0, money, SUM = 0, change, flag=0;
scanf("%d",&money);//输入币值并计算总币值
while((money!=-1)&&(money <= 10))
{
sum = sum + money;
scanf("%d",&money);
}
scanf("%d",&c[i]);
while(c[i]!=-1)//将选的货物编号存储到数组c中并计算找零
{
switch(c[i])
{
case 1: case 2: case 3: SUM = SUM + 1;break;
case 4: case 5: SUM = SUM + 2;break;
case 6: case 7: case 8: SUM = SUM + 3;break;
case 9: case 10: SUM = SUM + 4;break;
default:break;
}
if(SUM>sum)
{
printf("Insufficient money");
flag = 1;
break;
}
i++;
scanf("%d",&c[i]);
}
change = sum-SUM;
//用数组b统计各种商品数量
i = 1;
while(c[i]!=-1)
{
switch(c[i])
{
case 1: b[1]++;break;
case 2: b[2]++;break;
case 3: b[3]++;break;
case 4: b[4]++;break;
case 5: b[5]++;break;
case 6: b[6]++;break;
case 7: b[7]++;break;
case 8: b[8]++;break;
case 9: b[9]++;break;
case 10: b[10]++;break;
default:break;
}
i++;
}
//输出结果
if(flag==0)
{
printf("Total:%dyuan,change:%dyuan\n",sum, change);
for(i=1; i<=10; i++)
{
if(b[i]==0)
continue;
else
{
printf("%s:%d;",a[i-1],b[i]);
}
}
}
return 0;
}
2.设计思路

3.遇到的问题和解决方法
问题:对题目进行了仔细分析,有多种情况需要考虑,采用了swith语句时考虑问题还有欠缺,出现了编译错误。

4.运行结果截图

使用函数删除字符串中的字符
输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:
输入一个字符串 str,再输入一个字符 c,将字符串 str 中出现的所有字符 c 删除。
要求定义并调用函数delchar(str,c), 它的功能是将字符串 str 中出现的所有 c 字符删除,函数形参str的类型是字符指针,形参c的类型是char,函数类型是void。
输入输出示例:括号内为说明,无需输入输出
输入样例:
3 (repeat=3)
happy new year (字符串"happy new year")
a (待删除的字符'a')
bee (字符串"bee")
e (待删除的字符'e')
111211 (字符串"111211")
1 (待删除的字符'1')
输出样例:
result: hppy new yer (字符串"happy new year"中的字符'a'都被删除)
result: b (字符串"bee"中的字符'e'都被删除)
result: 2 (字符串"111211"中的字符'1'都被删除)
1.实验代码
void delchar(char *str, char c);
int main(void)
{
int repeat,i;
char str[100],c;
scanf("%d\n",&repeat);
for(i=1;i<=repeat;i++){
gets(str);
c=getchar();
delchar(str,c);
printf("result: %s\n",str);
}
return 0;
}
void delchar(char *str, char c)
{
int j,k=0;
for(j=0;str[j]!='\0';j++){
if(str[j]!=c){
str[k]=str[j];
k++;
}
}
str[k]='\0';
}
2.设计思路

3.遇到的问题和解决方法
问题:自己对题目进行了简化分析,结果出现答案错误
解决方法:向班上的同学请教,自己再仔细思考

4.运行结果截图

预习中存在的问题:感觉自己对数组和指针还不是很了解,需要加强练习。
学习进度条


心得
感觉自己还存在一些问题,每次无论题目是简单还是困难都需要花费很长的时间,希望自己以后能多练习加强对知识点的理解。
结对编程:感觉我们两个都做得还不够好,希望在接下来的时间能相互学习,共同进步。
C语言第七周作业的更多相关文章
- C语言--第七周作业评分(5班)
作业链接:https://edu.cnblogs.com/campus/hljkj/CS2017-5/homework/1304 一.评分要求 要求1 完成PTA第七周所有题,总共两次题,每次12.5 ...
- C语言--第七周作业
一.求交错序列前N项和 1.代码 #include <stdio.h> int main() { int i=1,N; double j=0,sum=0; scanf("%d&q ...
- C语言——第七周作业
题目 题目一:求交错序列前N项和 1.实验代码 #include <stdio.h> int main() { int n , i , b ; , a , c ; scanf(" ...
- 网络1711班 C语言第七次作业批改总结
网络1711班 C语言第七次作业批改总结 1.本次作业评分细则 1.1 基本要求(1分) 按时交 - 有分 未交 - 0分 迟交一周以上 - 倒扣本次作业分数 抄袭 - 0分 泛泛而谈(最多七分) 1 ...
- 2017-2018-1 我爱学Java 第六七周 作业
团队六七周作业 完善版需求规格说明书 制定团队编码规范 数据库设计 后端架构设计 TODOList 参考资料 完善版需求规格说明书 <需求规格说明书>初稿不足之处: 1.开发工具写错 2. ...
- 2018-2019-1 20189221 《Linux内核原理与分析》第七周作业
2018-2019-1 20189221 <Linux内核原理与分析>第七周作业 实验六 分析Linux内核创建一个新进程的过程 代码分析 task_struct: struct task ...
- 2017-2018-1 JAVA实验站 第六、七周作业
2017-2018-1 JAVA实验站 第六.七周作业 详情请见团队博客
- 2017-2018-1 JaWorld 第六、七周作业
2017-2018-1 JaWorld 第六.七周作业 修改需求规格说明书 上次的<需求规格说明书>初稿有哪些不足? 王译潇同学回答: 1. 引言和目的性考虑的不是很周全. 2. ...
- 2017-2018-1 20179205《Linux内核原理与设计》第七周作业
<Linux内核原理与设计>第七周作业 视频学习及操作分析 创建一个新进程在内核中的执行过程 fork.vfork和clone三个系统调用都可以创建一个新进程,而且都是通过调用do_for ...
随机推荐
- Listview使用
ListView控件比前面几种控件要复杂一些,通过此控件,可将项目组成带有或不带有列标头的列,并显示伴随的图标和文本.ListView控件是由ColumnHeader和ListItem对象所组成的,其 ...
- 洛谷P1879 [USACO06NOV]玉米田Corn Fields (状态压缩DP)
题目描述 Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ...
- Codeforces 960 二进制构造子序列 完全二叉树shift模拟 主席树/MAP DP
A #include <bits/stdc++.h> #define PI acos(-1.0) #define mem(a,b) memset((a),b,sizeof(a)) #def ...
- 使用navcat进行筛选和排序
- Ubuntu Text editor文本编辑器相关设置
刚开始不熟悉Ubuntu,设置个文本编辑界面都难找到: 打开后在顶上的导航栏,下拉框内有preferences: 里面可以设置视图.字体颜色等
- RouterOS基础安装配置
安装 光盘安装 载入光盘,按"A"全选按"I"进行安装,然后提示不否用旧的配置,按"N"全新安装,警告时按"Y"确定 安 ...
- 【LuoguP3241】[HNOI2015] 开店
题目链接 题意 给出一棵边带权的树,多次在线询问一个点到一个区间内的点的距离和. Sol 分块过不了的 一个 trick ,都知道要算两点之间距离可以拆成到根的距离和他们的 LCA 到根的距离 ,其实 ...
- 【SaltStack官方版】—— states教程, part 3 - 定义,包括,延伸
STATES TUTORIAL, PART 3 - TEMPLATING, INCLUDES, EXTENDS 本教程建立在第1部分和第2部分涵盖的主题上.建议您从此开始.这章教程我们将讨论更多 s ...
- 【GDOI2016模拟3.9】暴走的图灵机
题目 分析 我们发现当两个字符串合并时,a0.a1表示左右两个字符串中有多少个T,C表示合并处新增的T的个数,那么 a0=a1 a1=a0+a1+C 令s0和s1表示左右手两个字符串,那么每一次操作后 ...
- css3 宽度百分比减去固定宽度 无效问题
一定要注意中间横线的间距才有效果 正确 width: calc(50% - 10px); 错误 width:calc(50%-10px);