#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int Ix;
cout << "输入不可忽略的键数目";//用来确定数组行数
cin >> Ix;
int a=Ix+1
;
float M[Ix+1][8];
cout << "以下输入参数时,请根据实验键距由小到大书序输入相应的I,R,D值";
for (
int i=1;i<=Ix;i++)
{cout << "请输入实验键距D";
cin >> M[i][4];//存储实验键距
cout << "请输入第"<<i<<"个键的等同键数Ia值";
cin >> M[i][1];
cout << "请输入第"<<i<<"个键的两端原子R(1)值,用空格分开,回车";
cin >> M[i][2]>>M[i][3];//用来存储两端原子的R(1)
}
float Znc,B;//定义单元内总电子数和B值
cout << "请输入B值";
cin >> B;
float N=M[1][1];//计算价电子总数公式的一部分,Ia+Ib*rb+Ic*rc
for (
int i=2;i<=Ix;
i++)
{
M[i][5]=pow((M[i][2]+M[i][3]-M[i][4]-M[1][2]-M[1][3]+M[1][4])/B
,2);
N=N+M[i][1]*M[i][5];
}
M[1][6]=Znc/N;//计算出na,第一个键的共价电子数
for (
int i=2;i<=Ix;i++)
{
M[i][6]=M[1][6]*M[i][5];//计算出各个键的共价电子数
}
for (
int i=1;i<=Ix;i++)
{
M[i][7]=M[i][2]+M[i][3]-B*log10(M[i][6]);//计算出理论键距
M[i][8]=abs(M[i][7]-M[i][4]);//计算误差,取绝对值
}
cout << "计算结果";
/*
char T[8]={"键数目Ix","R1","R2","试验键距D","rx=nx/nA","共价电子数n","理论键距Do","误差|D-Do|"};
for (int i=0;i<=8;i++)
{
cout << T[i] <<" ";
}
*/
cout << "键数目Ix" << " " << "R1" << " " << "R2" << " " << "试验键距D"
<< "rx=nx/nA" << " " << "共价电子数n" << " " << "理论键距Do" << " " << "误差|D-Do|" << endl;
for(
int i=1;i<=Ix+1;i++)
{
for(
int j=1;j<=8;j++)
{
cout << M[i][j] <<" ";
}
cout << endl;
}
return 0;
}
整个程序没有太大的问题,主要有:
1、
int a=Ix+1; 这一行少了“ ;
2、几个临时定义的 i 和 j ,因为是临时定义,要加上 int;
3、char T[] 由于所用到是字符串数组,而不是字符数组,所以仅仅是 char T[] 是不够的。因为是固定的,不如直接在屏幕上输出,
4、pow 的用法不对。pow 用法要有两个参数,一个是底数,另一个是指数,你少了一个指数,即多少次方。程序中的 2 次方是我随意加的,只是表示要有这么一个参数。
按照上面标红所改,程序应该通过。