在C++中利用循环语句给数组赋值,一次输入一个数,一直全部输完。程序如下,哪里错了

{int i;
float U[10],I[10];
for(i=0;i<10;i++)
printf("输入电压:\n",U[i+1]);
scanf("%f",&U[i+1]);
for(i=0;i<10;i++)
printf("输入电流:\n"I[i+1]);
scanf("%f",&I[i+1]);
printf("电压=%f",);
printf("电流=%f",I[i+1]);
}

c++输出格式
一:标准输入函数cin
不知道说它是个函数对还是不对,它是代表标准的输入设备--键盘。他是属于流的,他的用法和流的用法是一样的。也就是:cin>>变量;

小小的说明一下,输入多个变量可以写在一行,如:cin>>x>>y>>z;
这样写不是不允许,而是不好看,如果是不同的变量类型,那就更是没头没脑了。除了你,人家是不知道该输入什么的,所以,一般在输入语句的前面,我们一般都
要做一个提示,请输入×××,让人家心里有个底,知道这个变量是做什么的。
另外,这个函数是不用带地址符号"&"的,也不用写明变量类型,千万不要跟scanf混淆。当然他就也不检查变量输入是否合法。如:

int i;
cout<<"please input a number:"
cin>>i;
cout<<"i="<<i<<endl;

如果你输入的是一个字符如'a'那么他也不检查,但你输出的结果不是正确的,这要是手工进行检查。当然他也跟scanf一样,如果在循环内部输入不合法的变量值,那么也将陷入死循环。如下:

/*一个输入不合法变量陷入死循环的例子*/
#include <iostream.h>
main()
{
int i;
while(i!=-1)
{
cout<<"i="
cin>>i; /*请输入不是一个字符如'a'试试*/
cout<<endl;
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-07-15
{int i;
float U[10],I[10];
for(i=0;i<10;i++)
printf("输入电压:\n",U[i+1]); //这里又不是输入也不需要输出 你加个U[i+1]干嘛?而且此时里面根本没初始化都是乱码
scanf("%f",&U[i+1]);
for(i=0;i<10;i++)
printf("输入电流:\n"I[i+1]); //同上
scanf("%f",&I[i+1]);
printf("电压=%f",); //这里要输入的参数 你这%f哪找都不知道。。
printf("电流=%f",I[i+1]); //上面错了为什么这里对了 你完全没有理解么
}
另外循环也错了。数组也越界了。。汗
修改如下
{int i;
float U[10],I[10];
for(i=0;i<10;i++)

printf("输入电压:\n");
scanf("%f",&U[i]);

for(i=0;i<10;i++)

printf("输入电流:\n");
scanf("%f",&I[i]);

for(i=0;i<10;i++)

printf("电压=%f",U[i]);
printf("电流=%f",I[i]);

}追问

我加U[i+1]是想在输入时显示 电压U1 电压U2 …… 电压U10

追答

{int i;
float U[11],I[11];
for(i=1;i<11;i++)

printf("输入电压:\n");
scanf("%f",&U[i]);

for(i=0;i<10;i++)

printf("输入电流:\n");
scanf("%f",&I[i]);

for(i=1;i<11;i++)

printf("电压=%f",U[i]);
printf("电流=%f",I[i]);

}

好了 这样符合你的要求了

第2个回答  2011-07-15
c++ 的数组下标是从0开始的,不是从1开始。最后的一个后造成数组越界。追问

如果从0开始,是否把U[i+1]改为U[i]即可

追答

是的

本回答被提问者采纳

...一次输入一个数,一直全部输完。程序如下,哪里错了
一:标准输入函数cin 不知道说它是个函数对还是不对,它是代表标准的输入设备--键盘。他是属于流的,他的用法和流的用法是一样的。也就是:cin>>变量;小小的说明一下,输入多个变量可以写在一行,如:cin>>x>>y>>z;这样写不是不允许,而是不好看,如果是不同的变量类型,那就更是没头没脑了。

求助:用C++编程,它用一个char数组和循环每次读取一个单词,到输入done为 ...
include <iostream> include <string> using namespace std;int main(){ string s;int count = 0;while(cin >> s && s != "done")++count;cout << count;return 0;} \/\/ 实在要用C风格的串,为安全起见,写成这样比较好 include <iostream> include <cstdio> include <cstring> using n...

C++用for循环向数组输入数据的问题
其实输入10个数也行,最后一个输完后,多按一次回车就可以了。因为scanf("%d\\n",x[9])要求你要原样输入,而输入回车就可以产生\\n。举个例子,如果scanf("%d,%d",&a,&b)是这样,你的输入格式要是1,1,如果是这样scanf("%d,",&a),你的输入格式要是1,。

C++求解程序中的错误:输入一个数n,再输入n个整数,输出最小值。
1)你的a[10]太小了,如果你输入的数字大于10个,程序就会崩溃 2)你最后输出的最小数字的a[i],这个是错误的,最后一轮循环之后,i已经递增到n+1了,你输出的是a[n+1],由于a[n+1]没有存放数据,输出的就是一个乱七八糟的数字.你应该是要输出a[s]正确的代码如下:include void main(){ int ...

C++中,往一个一维数组中连续输入数值,为什么在超过数组元素个数后还能...
在此程序中赋值语句中a[5]=1000. a[5]已经超出了数组a所占的存储区域,从图上可以看出是变量x所占的单元。所以当将1000赋值给a[5]的时候实际上市将1000赋值给了变量x。 所以才会输出那样难以理解的结果 要是没定义变量x和y的情况下就应该不会输出a[5]=1000的 你可以试一下看(我没试...

C++中的引用与vector:记一次heap-use-after-free
答案是,这个引用所指向的地址在某次操作后已被释放。经过深思熟虑,这个问题的根源显得简单明了。考虑以下代码:此代码不会输出4,因为push_back操作引发数组扩容后,原先的引用失效。这一道理看似浅显,但在实践中,一个小小的疏忽仍可能引发问题。C++语言的深厚与复杂性,由此可见一斑。

C++ 如何通过连续2个回车打断给数组赋值的for循环
他们没理解到你的意思 可惜我理解到了也没想通怎么办。。。衰。。。楼主的意思是 一般我们输入完毕一敲回车就会结束输入(进入输出)阶段。。。而现在楼主想要敲两次才会结束输入状态 敲一次应该是想表示只换行 继续输入 对吧?然后再敲一个回车 才进入输出状态。。。

c语言利用循环给字符数组赋值怎么做?
} return 0;} C语言循环语句:同一个问题,往往既可以用 while语句解决,也可以用 do-while或者for语句来解决,但在实际应用中,应根据具体情况来选用不同的循环语句。选用的一般原则是:(1) 如果循环次数在执行循环体之前就已确定,一般用 for语句。如果循环次数是由循环体的执行情况确定的,一般用...

c++用循环语句找出一个数在其数组中位置对
include<iostream>using namespace std;int main(){ int a[] = {1, 2, 3, 4}; int nFindNum = 3; int nFindIndex = -1; for (int i = 0; i < 4; i++) { if (nFindIndex == a[i]) { nFindIndex = i; break; } } cout << "...

C++怎么把在for循环里使用数组
include <iostream>using namespace std;int main(){int arr[10] = { 0 };\/\/利用for循环给数组每个元素赋值for (int i = 0; i != 10; ++i){arr[i] = i;}\/\/利用for循环输出数组的每一个元素for (int i = 0; i != 10; ++i){cout << "arr[" << i << "] = " << ...

相似回答