编写一个程序,要求用户输入一串整数和任意数目的空格,这些整数必须位于同一行中,但允许出现在该行的任何位置。当用户按下enter键,数据输入停止。程序自动对所有的整数进行求和并打印出结果。
需要解决两个问题,提取数字,提取连续数字。
//c #include<stdio.h> void main() { int sum=0;; int i; char ch; while(scanf("%d",&i)==1) { sum+=i; while((ch=getchar())==' ')//屏蔽空格 ; if(ch=='\n') break; ungetc(ch,stdin);//将变量ch中存放的字符退回给stdin输入流。 } printf("sum; %d\n",sum); }
//c++ #include<iostream> using namespace std; int main() { int sum=0; cout<<"请输入"; int i; while(cin>>i) { sum+=i; while(cin.peek()==' ') { cin.get(); } if(cin.peek()=='\n') break; } cout<<"sum:"<<sum<<endl; return 0; }
①表达式cin>>i返回输入流对象本身也就是cin,但如果读到文件尾或者提取操作符遇到一个非法值,返回值是false。
#include<iostream> using namespace std; int main() { char buf[20]; cin.ignore(7); cin.getline(buf,10); cout<<buf<<endl; return 0; } /* 输入:12345 12345 12345 12345 输出:2345 1234 */
②cin.ignore(7)忽视前七个字符
③cin.getline(buff,10)获取十个到buf中存放(第十位是'\0)
④using namespace std;名字空间,c++所有标识符都是在同一个特殊的名字空间(std)中定义的。如果没有使用这条指令,需要用std::cout这样的语法来调用输出流对象。
#include<iostream> using namespace std; int main() { const int SIZE=50; char buf[SIZE]; cout<<"请输入一段文本:"; cin.read(buf,20); cout<<"字符串收集到的字符数为:" <<cin.gcount()<<endl; cout<<"输入文本的信息是:"; cout.write(buf,20); cout<<endl; return 0; }