- 21
- 0
- 约2.25万字
- 约 29页
- 2017-02-05 发布于湖北
- 举报
注意:全局变量不要在函数中再次定义;
全局变量的一个优点:减少函数间的传递参数,特别是数组
do...while语句联合cin.get()实现动态数据的输入
问题描述
有n(2≤n≤20)块芯片,有好有坏,已知好芯片比坏芯片多。 每个芯片都能用来测试其他芯片。用好芯片测试其他芯片时,能正确给出被测试芯片是好还是坏。而用坏芯片测试其他芯片时,会随机给出好或是坏的测试结果(即此结果与被测试芯片实际的好坏无关)。 给出所有芯片的测试结果,问哪些芯片是好芯片。
输入格式
输入数据第一行为一个整数n,表示芯片个数。 第二行到第n+1行为n*n的一张表,每行n个数据。表中的每个数据为0或1,在这n行中的第i行第j列(1≤i, j≤n)的数据表示用第i块芯片测试第j块芯片时得到的测试结果,1表示好,0表示坏,i=j时一律为1(并不表示该芯片对本身的测试结果。芯片不能对本身进行测试)。
输出格式
按从小到大的顺序输出所有好芯片的编号
样例输入
31 0 10 1 01 0 1
样例输出
1 3
程序(利用排除法)
#includeiostream
#includestring
#includemath.h
using namespace std;
int isgood(int pos);
int a[20][20];
int p[20];
int n;
int main()
{
int i,j;//2≤n≤20;
cinn;
for (i=0;in;i++)
{
p[i]=1;
for (j=0;jn;j++)
cina[i][j];
}
for (i=0;in;i++)
{
if(isgood(i+1)==0)
p[i]=0;
}
for (i=0;i(n-1);i++)
{
if(p[i]!=0)
couti+1 ;
}
couti+1endl;
return 0;
}
int isgood(int pos)
{
//由于对角线元素无法对零件好坏的识别提供参考依据,所以每次循环都必须把i=j,或者pos-1=i的情况排除掉;
int i,j,s=0;
//好的零件数量必须大于坏的,否者说明pos判断失误
for (i=0;in;i++)
{
s+=a[pos-1][i];
}
if (2*s=n)
return 0;
//除了主对角线以外的函数,如果pos判断i是好的,但是i却判断pos是坏的,说明判断失误
for (i=0;in;i++)
{
if(a[pos-1][i]==1i!=(pos-1)a[i][pos-1]==0)
{
return 0;
}
}
//在对角线以外,如果pos判断了i是正确的,那么i对其他零件的判断必须与pos相同,否者说明判断失误
for (i=0;in;i++)
{
if(a[pos-1][i]==1i!=(pos-1))
{
for (j=0;jn;j++)
{
if (i!=jj!=(pos-1)a[i][j]!=a[pos-1][j])
return 0;
}
}
//如果i已经被确定为坏的,但是pos却将其判断为好的,说明判断失误
}
for (i=0;in;i++)
{
if(p[i]==0a[pos-1][i]==1i!=(pos-1))
{
return 0;
}
}
return pos;
}
问题描述
最近FJ为他的奶牛们开设了数学分析课,FJ知道若要学好这门课,必须有一个好的三角函数基本功。所以他准备和奶牛们做一个“Sine之舞”的游戏,寓教于乐,提高奶牛们的计算能力。 不妨设 An=sin(1–sin(2+sin(3–sin(4+...sin(n))...) Sn=(...(A1+n)A2+n-1)A3+...+2)An+1 FJ想让奶牛们计算Sn的值,请你帮助FJ打印出Sn的完整表达式,以方便奶牛们做题。
输入格式
仅有一个数:N201。
输出格式
请输出相应的表达式Sn,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。
样例输入
3
样例输出
((sin(1)+3)sin(1–sin(2))+2)sin(1–sin(2+sin(3)))+1
程序:
#includeiostream
#include sstream
#includestdlib.h
#includestring
#includemath.h
using namespace std;
string num2str(double i)
{
stri
原创力文档

文档评论(0)