VC中用怎么无法输入但是可以正常输出,是怎么回事?cin>>&26quot 终极解码;Please input:&26quot 终极解码;<<a;运行后不显示

VC中用怎么无法输入但是可以正常输出,是怎么回事?cin&&&Please input:&&&a;运行后不显示_百度知道
VC中用怎么无法输入但是可以正常输出,是怎么回事?cin&&&Please input:&&&a;运行后不显示
#include &iostream.h&#include &string.h&#include &stdio.h&int main(){ int a = 12;
//cin&&&Please input:&&&a; scanf(&Please input:&,&a); cout&&a&&
return 0; }
提问者采纳
cin&&&Please input:&&&a;你这一句写错了。你可以改为:cout&&&Please input.&;cin&&a;分为两句写就对了
提问者评价
谢谢,我怎么就忘了呢!
其他类似问题
cin的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁C++cin.width(5)是什么意思_百度知道
C++cin.width(5)是什么意思
就是输出的字符串宽度为4,不足的会用空格补足。比方说你要输出“12”,但是在输出之前用了这句话就会输出“ 12”。看看下面的文章吧! cin与cout 一:标准输入函数cin 不知道说它是个函数对还是不对,它是代表标准的输入设备--键盘。他是属于流的,他的用法和流的用法是一样的。也就是:cin&&变量; 小小的说明一下,输入多个变量可以写在一行,如:cin&&x&&y&&z; 这样写不是不允许,而是不好看,如果是不同的变量类型,那就更是没头没脑了。除了你,人家是不知道该输入什么的,所以,一般在输入语句的前面,我们一般都 要做一个提示,请输入×××,让人家心里有个底,知道这个变量是做什么的。 另外,这个函数是不用带地址符号&&&的,也不用写明变量类型,千万不要跟scanf混淆。当然他就也不检查变量输入是否合法。如:
cout&&&please input a number:& cin&&i; cout&&&i=&&&i&& 如果你输入的是一个字符如'a'那么他也不检查,但你输出的结果不是正确的,这要是手工进行检查。当然他也跟scanf一样,如果在循环内部输入不合法的变量值,那么也将陷入死循环。如下: /*一个输入不合法变量陷入死循环的例子*/ #include &iostream.h& main() {
while(i!=-1) { cout&&&i=& cin&&i; /*请输入不是一个字符如'a'试试*/ cout&& } } 如上一个程序,如果你输入的不合法,那就将陷入死循环。解决的办法有个一,把cin&&i;语句移到判断循环的语句中,那么,你输入的如果是不合法的变量,他将跳出循环。 cin是用空格来分隔输入的。请看看如下的例子: /*一个空格分隔使输入的变量达不到希望的值*/ #include &iostream.h& main() { char str[20]; cout&&&please input a string:&; cin&& /*你试着输入&hello word&*/ cout&&endl&&&str=&&& } 看得到是什么结果呢?得到的仅仅是str=hello,为什么呢?因为cin是以空格为分隔的,当你输入一个空格时,那他就认为后面的输入不属于这里了, 认为应该给后面的变量了。另外,当你输入的字符串大于分配的空间时,还会出现溢出现象。当然,还有整行输入的函数,包括空格也一起输入了,以后也会学到。 二、标准输出函数cout 说cout是函数,也跟cin一样,不知道对不对。他代表的是标准输出设备--显示器。其实前面已经用过很多次这个函数了。我们就通过一个例子来进行格式化的输出就是了,大家就体会体会这个例子就行了,比printf灵活了很多。 首先,我们可以按16进制,8进制和10进制来显示我们的数据,如下: /*一个按进制输出的例子*/ #include&iostream.h& void main() { int x=30, y=300, z=1024; cout&&x&&' '&&y&&' '&&z&& //按十进制输出 cout.setf(ios::showbase | ios::uppercase); //设置基指示符输出和数值中的字母大写输出 cout&&x&&' '&&y&&' '&&z&& cout.unsetf(ios::showbase | ios::uppercase); //取消基指示符输出和数值中的字母大写输出 cout.setf(ios::oct); //设置为八进制输出,此设置不取消一直有效 cout&&x&&' '&&y&&' '&&z&& //按八进制输出 cout.setf(ios::showbase | ios::uppercase); //设置基指示符输出和数值中的字母大写输出 cout&&x&&' '&&y&&' '&&z&& cout.unsetf(ios::showbase | ios::uppercase); //取消基指示符输出和数值中的字母大写输出 cout.unsetf(ios::oct); //取消八进制输出设置,恢复按十进制输出 cout.setf(ios::hex); //设置为十六进制输出 cout&&x&&' '&&y&&' '&&z&& cout.setf(ios::showbase | ios::uppercase); //设置基指示符输出和数值中的字母大写输出 cout&&x&&' '&&y&&' '&&z&& cout.unsetf(ios::showbase | ios::uppercase); //取消基指示符输出和数值中的字母大写输出 cout.unsetf(ios::hex); //取消十六进制输出设置,恢复按十进制输出 cout&&x&&' '&&y&&' '&&z&& } 我们用cout.setf()设置输出的格式,用cout.unsetf()取消格式。可以看出10进制在输出的时候不管有没有设置基指示符ios:: showbase,都没用,8进制再输出的时候在前面加0,而16进制是在前面加0X。而对于数值中字母大写输出,只对16进制有用,以后我们就应该看情 况使用了。当然,我们前面已经说了,还有一种方法也可以实现格式化输出,那就是使用操纵算子,如下, /*一个按进制输出的例子*/ #include&iomanip.h& void main() { int x=30, y=300, z=1024; cout&&x&&' '&&y&&' '&&z&& //按十进制输出 cout&&oct&&x&&' '&&y&&' '&&z&& //按八进制输出 cout&&setiosflags(ios::showbase); //设置基指示符 cout&&x&&' '&&y&&' '&&z&& //仍按八进制输出 cout&&resetiosflags(ios::showbase); //取消基指示符 cout&&hex&&x&&' '&&y&&' '&&z&& //按十六进制输出 cout&&setiosflags(ios::showbase | ios::uppercase); //设置基指示符和数值中的字母大写输出, cout&&x&&' '&&y&&' '&&z&& //仍按十六进制输出 cout&&resetiosflags(ios::showbase | ios::uppercase); //取消基指示符和数值中的字母大写输出 cout&&x&&' '&&y&&' '&&z&& //仍按十六进制输出 cout&&dec&&x&&' '&&y&&' '&&z&& //按十进制输出 } 我们用以上的程序也可以输出同样的结果,可见他的灵活。我们现在输出下列一段文字: 第一章 1.1 什么是C语言...........................1 1.11 C语言的历史..........................58 第二章 方法很多种啦,我们可以这样写: /*一个使用填充,宽度,对齐方式的例子*/ #include &iostream.h& void main() { cout&&&第一章贰长弛刻佾灸崇熏搐抹&&& cout&&& &; cout.setf(ios::left); //设置对齐方式为left cout.width(7); //设置宽度为7,不足用空格填充 cout&&&1.1&; cout&&&什么是C语言&; cout.unsetf(ios::left); //取消对齐方式,用缺省right方式 cout.fill('.'); //设置填充方式 cout.width(30); //设置宽度,只对下条输出有用 cout&&1&& cout&&& &; cout.width(7); //设置宽度 cout.setf(ios::left); //设置对齐方式为left cout.fill(' '); //设置填充,缺省为空格 cout&&&1.11&; cout&&&C语言的历史&; cout.unsetf(ios::left); //取消对齐方式 cout.fill('.'); cout.width(30); cout&&58&& cout.fill(' '); cout&&&第二章&&& } 我们多次设置了宽度,为的是使我们的间距能一致,也使用了对齐方式,为的是使我们的数据能对齐显示,看起来美观。我们还使用了填充方式。我们下面用操纵算子来实现也是可以的。 /*一个使用填充,宽度,对齐方式的例子*/ #include &iomanip.h& void main() { cout&&&第一章&&& cout&&& &; cout&&setiosflags(ios::left)&&setw(7); //设置宽度为7,left对齐方式 cout&&&1.1&; cout&&&什么是C语言&; cout&&resetiosflags(ios::left); //取消对齐方式 cout&&setfill('.')&&setw(30)&&1&& //宽度为30,填充为'.'输出 cout&&setfill(' '); //恢复填充为空格 cout&&& &; cout&&setw(7)&&setiosflags(ios::left); //设置宽度为7,left对齐方式 cout&&&1.11&; cout&&&C语言的历史&; cout&&resetiosflags(ios::left); //取消对齐方式 cout&&setfill('.')&&setw(30)&&58&& //宽度为30,填充为'.'输出 cout&&setfill(' ')&&&第二章&&& } 我们输出了同样的效果,不过依我的性格,我更喜欢用操纵算子来进行格式化输出。最后我们看看浮点数的格式输出,如下例: /*关于浮点数的格式*/ #include &iostream.h& void main() { float f=2.0/3.0,f1=0.,f2=-9.9; cout&&f&&' '&&f1&&' '&&f2&& //正常输出 cout.setf(ios::showpos); //强制在正数前加+号 cout&&f&&' '&&f1&&' '&&f2&& cout.unsetf(ios::showpos); //取消正数前加+号 cout.setf(ios::showpoint); //强制显示小数点后的无效0 cout&&f&&' '&&f1&&' '&&f2&& cout.unsetf(ios::showpoint); //取消显示小数点后的无效0 cout.setf(ios::scientific); //科学记数法 cout&&f&&' '&&f1&&' '&&f2&& cout.unsetf(ios::scientific); //取消科学记数法 cout.setf(ios::fixed); //按点输出显示 cout&&f&&' '&&f1&&' '&&f2&& cout.unsetf(ios::fixed); //取消按点输出显示 cout.precision(18); //精度为18,正常为6 cout&&f&&' '&&f1&&' '&&f2&& cout.precision(6); //精度恢复为6 } 同样,我们也一样能用操纵算子实现同样的功能: /*关于浮点数的格式*/ #include &iomanip.h& void main() { float f=2.0/3.0,f1=0.,f2=-9.9; cout&&f&&' '&&f1&&' '&&f2&& //正常输出 cout&&setiosflags(ios::showpos); //强制在正数前加+号 cout&&f&&' '&&f1&&' '&&f2&& cout&&resetiosflags(ios::showpos); //取消正数前加+号 cout&&setiosflags(ios::showpoint); //强制显示小数点后的无效0 cout&&f&&' '&&f1&&' '&&f2&& cout&&resetiosflags(ios::showpoint); //取消显示小数点后的无效0 cout&&setiosflags(ios::scientific); //科学记数法 cout&&f&&' '&&f1&&' '&&f2&& cout&&resetiosflags(ios::scientific); //取消科学记数法 cout&&setiosflags(ios::fixed); //按点输出显示 cout&&f&&' '&&f1&&' '&&f2&& cout&&resetiosflags(ios::fixed); //取消按点输出显示 cout&&setprecision(18); //精度为18,正常为6 cout&&f&&' '&&f1&&' '&&f2&& cout&&setprecision(6); //精度恢复为6 } 在c/c++系统中除了标准的输入输出外,还提供了更多的输入函数。这写函数主要有getch(),getche(), getchar (),cin.get(),putch(),putchar(),cout.put(),gets(),cin.getline(),puts()。另外 还有些为了让缓冲区不影响程序的正确操作的缓冲去的操作,如:cin.putback(),fflush(stdin),cout.flush().我们 做一下简单的说明。 1、getch()和getche(),非缓冲式输入,从键盘读入一个字符。getch()读入字符不显示。有conio.h支持。 2、cin.get(),getchar(),缓冲式输入,从键盘读入一个字符,并显示。getchar()由stdio.h支持,cin.get()由iostream.h支持。 3、putch()和putchar(),非缓冲式输出,输出一个字符到显示器。putch()由conio.h支持,putchar()由stdio.h支持。 4、cout.put(),缓冲式输出,输出一个字符到显示器。由iostream.h支持。 5、gets()和cin.geline(),缓冲式输入,读入一字符串(包括空格,不包括最后的回车),gets()由stdio.h支持,cin.getline()由iostream.h支持。 6、puts(),非缓冲输出,输出一个字符串,由stdio.h支持。 7、cin.putback(),把一个字符送回输入缓冲区。 8、fflush(stdin),清除输入缓冲区操作。无法清除cin.get()等带来的操作。 9、cout.flush(),清楚输出缓冲区。 在这里我们稍微说一下输入/输出缓冲区,这是为了减少程序访问io带来中断而设的一段空间。当程序满足某个刷新条件时,那就将清理缓冲区。具体条件为: 1、输入缓冲区 a,程序要求输入时,按下了回车键。 b,遇到程序结束。 c,遇到下一条输入语句。 d,遇到清除缓冲区操作 e,缓冲区溢出 2、输出缓冲区 a,输出缓冲区溢出 b,遇到下一条输入语句 c,使用刷新缓冲区迫使清除 d,程序结束。 缓冲区操作有时会带来程序的不正确的输入,如前面说的scanf(),在连续输入的时候,会把一个回车赋给下一个字符变量。我们操作的时候一定要注意。
其他类似问题
cin的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁C语言编程, 带注释_百度知道
C语言编程, 带注释
功能是:求Fibonacci数列中大于t的最小的一个数min.其中Fibonacci数列f(n)的定义为:f(0)=0,f(1)=1f(n)=f(n-1)+(n-2)输入10个t值分别求出min的值并输出。例如:当t=1000时,min 值为:1597
提问者采纳
---------------------------------------//帮上面注释---------------------------------------#include &iostream.h& #define N 10
/*宏定义数组元素个数为10*//*计算序列中第n个元素的值的函数*/int Fibonacci(int n) { /*如果序号为0或者1就不需要计算,为0时返回0,为1时返回1*/if( (n==0) || (n==1) ) return (n); else /*大于1的时候*/{ /*当序号大于1的时候,返回值为前面两项的和*/return ( Fibonacci(n-1) + Fibonacci(n-2) ); } } void main() {
int datain[N] ; int dataout[N] ; cout&&&please input N data: &; /*循环的接受N个数*/for(i=0;i&N;i++) { cin&&datain[i]; } /*寻找大于输入的N个数的最小的数*/for(i=0;i&N;i++) { int j=0; while(1) { /*寻找第一个大于datain[i]的数,找到就退出while()循环*/if( Fibonacci(j) & datain[i] ) j++; } /*记录找到的数据*/dataout[i] = Fibonacci(j); } /*输出找到的数据*/for(i=0;i&N;i++) cout&&dataout[i]&&& &; }
其他类似问题
c语言编程的相关知识
其他3条回答
//随便写了下,以下程序在vc下通过,懒得注了#include &iostream.h&#define N 10int Fibonacci(int n){ if( (n==0) || (n==1) )
return (n); else
return ( Fibonacci(n-1) + Fibonacci(n-2) );
} }void main(){ int
datain[N] ; int
dataout[N] ; cout&&&please input N data: &;
for(i=0;i&N;i++) {
cin&&datain[i]; }
for(i=0;i&N;i++) {
if( Fibonacci(j) & datain[i] )
dataout[i] =
Fibonacci(j); }for(i=0;i&N;i++)
cout&&dataout[i]&&& &;}
你先 写个求数列的函数 然后用FOR 或 WHILE 调用 不就行拉!!!最好是自己写,让别人写,你下次还不会
您可能关注的推广回答者:回答者:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁关于用vc++编写文件输入与输出的程序_百度知道
关于用vc++编写文件输入与输出的程序
我的程序如下:#include&iostream.h&#include&fstream.h&#include&string.h&int main(){ char *test[30]; char fw[30]; cout&&&请输入你需要的文本:&; cin&&test[30]; cout&&&请输入你所要保存的文件名:&; cin&&fw[30]; ofi.open(fw); for(i=0;i&strlen(test[30]);i++) {
ofi&&test[30]; } ofi&& return 0;}我编译这个程序时没有错误,执行完后,我没有找到我所建立的那个文件,就算找到了那个文件也是空白的,没有我执行是输入的文字.我想问一下这是什么原因,要怎样解决.
可是我输入的是aaaaaaaaa(9个a)但是所生成的文件里却有大概90个a和我输入的字符个数出入太大了请问是怎么回事,该怎么办?
提问者采纳
#include&iostream.h& #include&fstream.h& #include&string.h& int main() { char *test[30];
char fw[30]; //::memset(fw,0,30);
cout&&&请输入你需要的文本:&; cin&&test[30]; cout&&&请输入你所要保存的文件名:&; cin&& ofi.open(fw); for(i=0;i&strlen(test[30]);i++) { ofi&&test[30]; } ofi&& return 0; } 你的 cin&&fw[30].这句有问题,首先是fw[30]这个空间是未知的你并没有分配,因为fw的 下标直到29.其次,你这样只是给fw数组的最后一位赋值了 所以有错误。。测试案例:第一次输入 :dddddddddddd第二次输入:aa.txt那么将在程序所在的文件夹下看到这个文件,并且是正确 的 !】针对楼主的补充提问,我补充说明下,按照楼下的做法是没有错的 ,但是我 说一下为什么上面我写的有错char *test[30]; 这里定义的是指针数组。至于什么是 指针数组,如果你不懂,可以参考有关资料。那么cin&&test[30]; 这句就是你把数据都写到test[30]这个指针指向的 地方了 for(i=0;i&strlen(test[30]);i++) 这句循环的次数是你输入的字符数目,ofi&&test[30]; 而这句将会把你输入的字符都写到文件中 ,放在循环体内,将会不断的输出同样的很多次所以才出现你说的问题 ,另外还有一个很严重的问题,第一次写的时候我也没注意,就是cin&&test[30]; 有两个问题,1.test[30]这个数组元素你并没有定义,是不能使用的,在这里之所以没有出错误,因为他是一个指针,指向的地方本身是没有有用数据的。如果你的磁盘空间很满,那么这杨写出现的问题的概率就很大了。所以你使用的下标不能&=30;2test30]; 这个指针你并没有给他分配内存,也就是通常所谓的野指针,指向一个未知的地方。应该NEW一个内存这个指针使用的时候 有的时候会出现问题的。。一定要注意!!
其他类似问题
其他1条回答
cin&&test[30]; cin&&fw[30]; 这两句有问题,换成cin&& cin&& 另外ofi.open(fw);中还应该加个参数ofi.open(fw,ios::out)还有下面的也要改for(i=0;i&strlen(test[30]);i++) { ofi&&test[30]; } ofi&& return 0; } 换成for(i=0;i&strlen(test);i++) { ofi&&test[i]; } ofi&& return 0; } 这会应该没事了
您可能关注的推广
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁统计输入的字符串中字母的频率 (vc++)_百度知道
统计输入的字符串中字母的频率 (vc++)
从键盘上输入一个字符串,该字符串全部由英语字母组成(即大写小写字母),长度不超过100个字符,以“#”字符作为输入结束的标志。最后输出出现次数最多和最少的字母以及对应出现的频率要求程序能够完成: 1.考虑出现频率一样多或一样少的情况。 2.主程序做统计和输出,子函数处理。3.最好只用指针实现,不出现堆栈、数表等。期待高手ing……不胜感激……^_^
提问者采纳
现在没时间了,待会帮你。。#include&iostream.h& #include&string.h& class string1 { private: char *
public: string1(){str=NULL;size=0;maxsize=0;} void out(string1 & s); friend ostream& operator&&(ostream &ostr,const string1 & s); friend istream& operator&&(istream &istr,string1 & s); }; void string1::out(string1 &s) { int i,k; for(i=0;i&s.i++) { int m=1; for(k=i+1;k&s.k++) { if(s.str[i]==s.str[k]) { for(int n=k;n&s.n++) { s.str[n]=s.str[n+1]; } s.size--; s.maxsize--; m++; } } cout&&s.str[i]&&&的个数:&&&m&& } } ostream & operator&&(ostream &ostr,const string1 &s) { cout&&&s.size=&&&s.size&& cout&&&s.maxsize=&&&s.maxsize&& cout&&&s.str=&&&s.str&&
} istream& operator&&(istream &istr,string1 &s) { delete []s. cout&&&输入字符串的元素个数:&; cin&&s. s.maxsize=s.size+1; s.str=new char[s.maxsize]; cout&&&输入字符串:&; for(int i=0;i&s.i++) cin&&s.str[i]; s.str[s.size]=NULL;
} void main() { string1 cin&&s; cout&&s; s.out(s); cin.ignore(cin.rdbuf()-&in_avail()+1); }
其他类似问题
3人觉得有用
字符串的相关知识
其他3条回答
#include&stdio.h&#define MAX 100
/*定义数组长度*/char aa[MAX];
/*用于存放字符串*/int a[50];
/*用于存放每个字母出现的次数*//*函数功能:统计给定字母的个数*/int Tongji(char cc){ int i,count=0;
/*计数器置0*/ char *p;
/*定义数组指针*/ p=
/*指针P指向数组第一个元素*/ for(i=0;aa[i] !='\0' ;i++)
if(*(p+i)==cc)
count=count+1;}main(){ int i,max=0,min=MAX; printf(&请输入字母:&); gets(aa);
/*将输入的字母存入数组*/ for(i=0;i&26;i++)
/*依次统计a-z的个数*/
a[i]=Tongji(i+97);
printf(&字母%c出现了%d次.\n&,i+97,a[i]);
} for(i=26;i&52;i++)
/*依次统计A-Z的个数*/
a[i]=Tongji(i+39);
printf(&字母%c出现了%d次.\n&,i+39,a[i]);
} a[46]='\0';for(i=0;i&52;i++)
以下求出现最多次数的字母*/
if(a[i]&max)
for(i=0;i&26;i++) {
if(a[i]==max)
printf(&%c出现的最多,次数有%d次。\n&,i+97,a[i]); } for(i=26;i&52;i++) {
if(a[i]==max)
printf(&%c出现的最多,次数有%d次。\n&,i+39,a[i]); } for(i=0;i&52;i++)
/* 以下求出现最少次数的字母*/
if(a[i]&min)
for(i=0;i&26;i++)
if(a[i]==min)
printf(&%c出现的最少,次数有%d次。\n&,i+97,a[i]);
} for(i=26;i&52;i++) {
if(a[i]==min)
printf(&%c出现的最少,次数有%d次。\n&,i+39,a[i]); } }写出来交流一下
#include&iostream&#include&stdio.h&#define M 100void F(const char *p){ int letter,digit,space, letter=digit=space=others=0; for(p;*p!=0;p++) { if(*p&='z'&&*p&='a'||*p&='A'&&*p&='Z')
letter++; else if(*p&='0'&&*p&='9')
digit++; else if(*p==' ')
space++; else
others++; } cout&&&字母有&&&letter&&&个。&&& cout&&&数字有&&&digit&&&个。&&& cout&&&空格有&&&space&&&个。&&& cout&&&其他字符有&&&others&&&个。&&&}void main(){ char a[M],*p; p=a; cout&&&Please input a string:&&& gets(a); F(p);}
//我也来写一个超简洁版的//是否能理解是你的事了//理论上可以处理无限长的字符,不限定于100个字符//因为程序根本就没有存储字符而只是统计//最后统计时考虑到相同频率的字符情况//程序已通过VC2003.Net调试#include &iostream&int main(){ static int total[256]; unsigned int n = 0,max = 0,min = 65535;
while(cin.get(ch) && ch!='#')
total[(int)ch]++,n++; for(int i=0;i&256;i++) {
if(total[i]&max)
max = total[i];
if(total[i]&&total[i]&min)
min = total[i]; } for(int i=0;i&256;i++)
if(total[i]==max||total[i]==min)
cout&&char(i)&&'\t'&&total[i]&&'\t'
&&(float)total[i]*100/n&&&\%\n&;
system(&PAUSE&); return 0;}
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 26quot 终极解码 的文章

 

随机推荐