C语言题求解

kkkkkwang 2012-06-25 03:15:08
我是大一新生 我们有个考试 这个题目里的NEW 函数不知道啥意思,我们还没有学习呢。现在急须此题答案。偶见各位的帖子感觉的专业,所以小弟甚激动。特意求救于各位。因时间问题作业需要明天交所以希望大家帮个忙,答案需要特简单的 知识点都是基本的因为我不是这个专业的学生 所以学习的只是基础。。。。
课程设计任务书

一、题目:03混合数据排序
二、目的与要求
1. 目的:
(1)通过该题目的设计,培养学生综合利用C++语言解决问题的能力,使学生理解和掌握C++中组的应用及排序算法,将所学知识转化为分析和设计简单实际问题的能力,并学会查资料和工具书,进行创新设计。
(2)提高学生建立程序文档、归纳总结的能力。
2. 基本要求:
(1)要求用C++语言编程,在Visual C++环境下调试完成;
(2)要求使用C++的结构体和自定义函数完成设计;
(3)在VC++6.0环境中,学会调试程序的方法,及时查究错误,独立调试完成。
(4)程序调试通过后,完成程序文档的整理,加必要的注释。
三、设计方法和基本原理
1. 课题功能描述
开发一个排序程序,用户输入长度(数据个数)可变的数据,输入字母,则按字符排序;输入数字,则按数字排序;输入字母和数字的混合数据,则首先区分数字和字母,然后各自排序。
2. 基本原理
1) 通过ASCII判断输入的是否为字母;
2)用两个数组各自保存字符和数字。
3. 问题解决方案(编程要求):
编写程序,实现区分混合数据并实现排序,并且由用户选择升序或降序两种方式。
例如:输入数据“A B D 3 5 6 4 F E”,则排序结果如选择“降序”如下图所示:、

四、主要技术问题的描述:
通过两个一维数组保存两种类型的数据,由于数组的大小不确定,可使用new函数分配数组存储空间。排序的算法可使用冒泡法或比较互换法,或其他方法。
五、创新要求
实现对字符串和数字的混合排序。
六、课程设计的考核方式及评分方法
1.考核方式
(1) 学生要提交书面课程设计报告(A4纸打印);并将设计报告的电子文档、.cpp源文件和.h头文件放到一个文件夹里(如果是基于MFC的编程,另外还包括源程序的压缩包)上传到所对应班级的学生名称相应文件夹中。
(2) 课程设计结束时,在机房当场验收。教师提供测试数据,由学生运行所设计的系统,检查运行结果是否正确,并回答教师提出的有关问题。
2.评分方法
根据出勤率、课程设计期间纪律、课程设计运行结果、课程设计报告及答辩情况综合评分。
七、书写设计报告的要求(详细内容见“设计报告模板”)
八、说明:课程设计的有关文档,“设计报告模板”和“课程设计要求”请在下载任务书处。
...全文
322 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
weitq1 2012-06-29
  • 打赏
  • 举报
回复
真棒!程序特清晰,赞!
kingkingking 2012-06-27
  • 打赏
  • 举报
回复

01.#include <iostream>
02.#include "string"
03.#include <stdio.h>
04.void Ascending(char *pAscend,int nAsNum); //声明升序函数
05.void Descending(char *pDescend,int nDeNum); //声明降序函数
06.using namespace std;
07.int main()
08.{
09. char *pCin=new char[1000]; //申请空间存放用户输入的数据
10. char *pNum=new char[1000]; //申请空间存放用户输入数据中的数字
11. char *pLetter=new char[1000]; //申请空间存放用户输入数据中的字母
12. cout<<"请输入数据:"<<endl;
13. cin>>pCin;
14. int nNum=0;
15. for (int i=0;pCin[i]!='\0';i++)
16. {
17. nNum++;
18. }
19. cout<<"输入的字符个数是:"<<nNum<<endl;
20. int nNum_Num=0; //数字个数
21. int nNum_Letter=0; //字母个数
22. //判别是数字还是字母,分别存在各自的数组中
23. for (int j=0;j<nNum;j++)
24. {
25. if ((pCin[j]<='9')&&(pCin[j]>='0'))
26. {
27. pNum[nNum_Num]=pCin[j];
28. nNum_Num++;
29. }
30. if ((pCin[j]<='z')&&(pCin[j]>='a'))
31. {
32. pLetter[nNum_Letter]=pCin[j];
33. nNum_Letter++;
34. }
35. }
36.
37. cout<<"字符为数字的是:";
38. for (int m=0;m<nNum_Num;m++)
39. {
40. cout<<pNum[m];
41. }
42. cout<<endl;
43.
44. cout<<"字符为字母的是:";
45. for (int n=0;n<nNum_Letter;n++)
46. {
47. cout<<pLetter[n];
48. }
49. cout<<endl;
50.
51. cout<<"其中数字个数是:"<<nNum_Num<<endl;
52. cout<<"其中字母个数是:"<<nNum_Letter<<endl;
53.
54. cout<<endl;
55. cout<<"选择排序方式(1--升序 2--降序):";
56. char cHit;
57. while(1)
58. {
59. cin>>cHit;
60. switch (cHit)
61. {
62. case '1':
63. cout<<"数字升序为:";
64. Ascending(pNum,nNum_Num);
65. cout<<"字母升序为:";
66. Ascending(pLetter,nNum_Letter);
67. break;
68. case '2':
69. cout<<"数字降序为:";
70. Descending(pNum,nNum_Num);
71. cout<<"字母降序为:";
72. Descending(pLetter,nNum_Letter);
73. break;
74. default:
75. cout<<"输入不符合要求!"<<endl;
76. break;
77. }
78. cout<<endl;
79. cout<<"选择排序方式(1--升序 2--降序):"<<endl;
80. }
81. cout<<endl;
82. delete [] pCin;
83. delete [] pNum;
84. delete [] pLetter;
85.
86. return 0;
87.}
88.
89.//升序函数 采用冒泡法
90.void Ascending(char *pAscend,int nAsNum)
91.{
92. int i=0,j=0,n=0;
93. char temp;
94. for (i=nAsNum-1;i>0;i--)
95. {
96. for(j=0;j<i;j++)
97. {
98. if (pAscend[j]>=pAscend[j+1])
99. {
100. temp = pAscend[j];
101. pAscend[j] = pAscend[j+1];
102. pAscend[j+1] = temp;
103. }
104. }
105. }
106. for (n=0;n<nAsNum;n++)
107. {
108. cout<<pAscend[n];
109. }
110. cout<<endl;
111.}
112.
113.//降序函数 采用冒泡法
114.void Descending(char *pDescend,int nDeNum)
115.{
116. int i=0,j=0,n=0;
117. char temp;
118. for (i=nDeNum-1;i>0;i--)
119. {
120. for(j=0;j<i;j++)
121. {
122. if (pDescend[j]<=pDescend[j+1])
123. {
124. temp = pDescend[j];
125. pDescend[j] = pDescend[j+1];
126. pDescend[j+1] = temp;
127. }
128. }
129. }
130. for (n=0;n<nDeNum;n++)
131. {
132. cout<<pDescend[n];
133. }
134. cout<<endl;
135.}
kingkingking 2012-06-27
  • 打赏
  • 举报
回复
我把答案写在博客里面了
tigercoco 2012-06-27
  • 打赏
  • 举报
回复
收藏下先[Quote=引用 1 楼 的回复:]
在C语言中 我们必须使用malloc函数,因为C语言没有new这个操作符,但是如果你的编译器是C++的话,是可以使用new的.

以下我给你贴出来 new 和malloc 的用法 以及 new的好处

在C语言中 我们必须使用malloc函数,因为C语言没有new这个操作符,但是如果你的编译器是C++的话,是可以使用new的.

C语言的malloc函数的使用方法:
1.首先定义一个……
[/Quote]
zhangjie112028 2012-06-27
  • 打赏
  • 举报
回复
可不可以也发给我一份邮箱zhangjie112028@126.com
weitq1 2012-06-26
  • 打赏
  • 举报
回复
我现在急需这道题的答案,但自己不会,可以把你写的程序贴上来或者发到746826906@qq.com吗?
先谢谢了!
kkkkkwang 2012-06-25
  • 打赏
  • 举报
回复
谢谢了
浅se诱惑 2012-06-25
  • 打赏
  • 举报
回复
在C语言中 我们必须使用malloc函数,因为C语言没有new这个操作符,但是如果你的编译器是C++的话,是可以使用new的.

以下我给你贴出来 new 和malloc 的用法 以及 new的好处

在C语言中 我们必须使用malloc函数,因为C语言没有new这个操作符,但是如果你的编译器是C++的话,是可以使用new的.

C语言的malloc函数的使用方法:
1.首先定义一个long指针,像这样long* pNumber;
2.动态开辟一片内存(1000000个long),可以这样malloc(sizeof(long) * 1000000); malloc函数唯一的参数是一个size_t(unsigned long类型),它表示你要开辟的内存的大小,我们要开辟1000000个long.
3.返回一个void*指针,我们必须转换成long*指针,像这样(long*)malloc(..);

所以你要的程序就是:
long *pNumber = (long*)malloc(sizeof(long) * 1000000);
开辟后就可以像数组一样使用它了
使用完后,一定要记得释放它,用free,像这样free(pNumber);

使用new更方便
代码:
long* pNumber = new long[1000000];
使用完后,使用delete[]
像delete[] pNumnber;

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧