新手,一个数组程序,看不懂,帮帮解释

discory 2004-10-26 11:30:42
问题1:
int x = static_cast<int> (salary)/100;
这句语法怎么解释,没见过

问题2:读取20个数,取值在1-100之间,读取每个数时,只打印与已读过数不同的数。
#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
const int size = 20;
int a[size] = {0};
int subscript = 0;
int duplicate;
int value;
cout << "enter 20 intergers between 10 and 100:\n";

for (int i = 0; i < size; i++)
{
duplicate = 0;
cin >> value;

for (int j = 0; j < subscript; j++)
if (value == a[j])
{
duplicate = 1;
break;
}

if (!duplicate)
a[subscript++] = value;
}

cout << "\nThe nonduplicate values are:\n";

for (i = 0; a[i] != 0; i++)
cout << setw(4) << a[i];

cout << endl;

return 0;
}

这个程序我看不懂,是昏的。哪个大虾帮帮解释一下。谢谢
...全文
80 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
freshairfly 2004-10-26
  • 打赏
  • 举报
回复
int main()
{
const int size = 20;
int a[size] = {0};
int subscript = 0;
int duplicate;
int value;
cout << "enter 20 intergers between 10 and 100:\n";

for (int i = 0; i < size; i++)
{
duplicate = 0; //一个标记,用来判断是否已经存在了
cin >> value; //读取一个数

//在已经记录的数组里寻找刚输入得数
for (int j = 0; j < subscript; j++)
if (value == a[j])
{
duplicate = 1;//如果已经存在标记 duplicate 为1
break;
}

if (!duplicate) //如果输入的数不存在,则添加到数组里
a[subscript++] = value;
}

cout << "\nThe nonduplicate values are:\n";

//循环输出,因为输入的数是1-100,所以可以根据第i个元素是否为0来判断是否结束
for (i = 0; a[i] != 0; i++)
cout << setw(4) << a[i];

cout << endl;

return 0;
}
Flood1984 2004-10-26
  • 打赏
  • 举报
回复
问题2:读取20个数,取值在1-100之间,读取每个数时,只打印与已读过数不同的数。
#include <iostream>
#include <iomanip>
using namespace std;
/*算法思想: 用一个长为20的数组存放已经输出过的数;每次输入时,把输入的数和里面已经有的做比较,如果相等,舍去,否则,先把他放入数组,然后打印*/
int main()
{
const int size = 20;
int a[size] = {0}; //长为20的数组
int subscript = 0; //当前已经输入的数的个数
int duplicate; //条件变量,如果当前输入的数原来输入过,则为1,否则为0
int value; //辅助变量
cout << "enter 20 intergers between 10 and 100:\n";

for (int i = 0; i < size; i++)
{//最外层循环,保证输入20次
duplicate = 0;//开始时数组长度值0
cin >> value;

//判断以前是否输入过
for (int j = 0; j < subscript; j++)
if (value == a[j])
{//如果相等说明输入过,duplicate置1
duplicate = 1;
break;
}

//如果duplicate为0,说明没输入过,将其加入数组,并输出
if (!duplicate)
a[subscript++] = value;
}

cout << "\nThe nonduplicate values are:\n";

for (i = 0; a[i] != 0; i++)
cout << setw(4) << a[i];

cout << endl;

return 0;
}
lynnboy 2004-10-26
  • 打赏
  • 举报
回复
问题1:
int x = static_cast<int> (salary)/100;
这句语法怎么解释,没见过

static_cast<type>(var)
是C++标准新加入的四个显式cast运算符之一。其实就相当于int(salary)/100;







问题2:读取20个数,取值在1-100之间,读取每个数时,只打印与已读过数不同的数。
#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
const int size = 20;
int a[size] = {0}; // 二十个int
int subscript = 0; // 数组中的有效数据结尾。没输入一个数据加一
int duplicate;
int value;
cout << "enter 20 intergers between 10 and 100:\n";

for (int i = 0; i < size; i++) // 循环二十次
{
duplicate = 0;
cin >> value; // 读取输入到value

for (int j = 0; j < subscript; j++) // 从数组开始到结尾
if (value == a[j]) // 如果某个数组元素和输入的数据相同
{
duplicate = 1; // 找到一个重复
break;
}

if (!duplicate) // 如果有重复
a[subscript++] = value; // 将 value 加入数组,有效数据索引加一
}

cout << "\nThe nonduplicate values are:\n";

// for (i = 0; a[i] != 0; i++) // 输出整个数组中的数据,这个是个错误!应该写成:
for (i = 0; i < subscript; i ++)
cout << setw(4) << a[i];

cout << endl;

return 0;
}

这个程序我看不懂,是昏的。哪个大虾帮帮解释一下。谢谢

freshairfly 2004-10-26
  • 打赏
  • 举报
回复
int x = static_cast<int> (salary)/100;
这句语法怎么解释,没见过
------------------------
相当于C里面得int x = (int) (salary)/100;


2.正在看。。。

64,654

社区成员

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

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