![]() |
#2
rainbow12010-07-04 22:14
#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 次方是我随意加的,只是表示要有这么一个参数。 按照上面标红所改,程序应该通过。 |

[ 本帖最后由 nfer 于 2010-7-5 09:23 编辑 ]