const-下面的程序错在哪里?怎么改呀?

问题描述

下面的程序错在哪里?怎么改呀?

char a[20]={'a','b','','c','d','','e','f'};
int i;
for(i=0;i<20;i++)

puts(a[i]);

system("pause");

put(a[i])中a下面有红线错误提示。

错误提示为:错误 1 error C2664: “puts”: 不能将参数 1 从“char”转换为“const char *” c:usersadministratordesktopc程序c程序.cpp 613 1 C程序
是什么意思?
当为什么puts(&a[i])运行结果如下?
ab
b
cd
d
ef
f

解决方案

puts()只能输出字符串~

解决方案二:

 char a[20]={'a','b','','c','d','','e','f'};
puts(a);
system("pause");

或
char a[20]={'a','b','','c','d','','e','f'};
int i;
for(i=0;i<20;i++)
printf("%c",a[i]);
system("pause");

解决方案三:

char str[2];
for(i=0;i<20;i++){
str[0] = a[i];
str[1] = '';
puts(str);
}
字符串是有结束标志位''的,这个函数就是读取到字符的结束标志位为止在输出~~

解决方案四:

puts是输出字符串,如果你希望打印字符就用printf %c

解决方案五:

puts(const char * str) 该函数要求的参数是 const char* 指针,你定义的字符数组,所以转换时报错。puts()会自动输出'n’,但是不输出''
如果成功输出则返回输出字节数,失败返回-1;
你要单个的输出字符应该用printf("%c"),
至于你说的printf(&a[i]);的结果是这样子:
for(i=0;i<20;i++);
当i=0时:&a【0】就是字符串ab的首地址,到‘’所以输出ab
当i=1时:&a【1】就是字符b的地址,到‘’,所以输出b,
当i=2时:&a【2】就是字符‘’的地址,但是puts()不输出‘’,所以多一个换行
然后就是重复
i=3时:&a【3】就是字符串cd的首地址,到‘',所以说出cd
i=4时:&a【4】就是字符d的地址,到’',说出d



。最后就是ef
f
,再往下输出,就会有未知字符,那就是数组越界了

解决方案六:

估计你想要的是这样吧
for(i=0;i<20;i++)
putchar(aa[i]);

结果是ab cd ef

时间: 2024-10-03 16:18:34

const-下面的程序错在哪里?怎么改呀?的相关文章

c++中#define 与const用法有什么区别? 如下的程序错在了什么地方?

问题描述 c++中#define 与const用法有什么区别? 如下的程序错在了什么地方? #include using namespace std; #define pi 3.1415; const float PI=3.14; int main() { system("color 4A"); float s1,s2,r; cin>>r; s1=PI*r*r; s2=pi*r*r; cout<<"s1="<<s1<<

c-大神们,程序错在哪?我的思路是输入数组将其排序然后输出啊a[1];

问题描述 大神们,程序错在哪?我的思路是输入数组将其排序然后输出啊a[1]; 问题描述 编写一个程序,读入一组整数(不超过20个),当用户输入0时,表示输入结束.然后程序将从这组整数中,把第二大的那个整数找出来,并把它打印出来.说明:(1)0表示输入结束,它本身并不计入这组整数中.(2)在这组整数中,既有正数,也可能有负数.(3)这组整数的个数不少于2个. 输入格式:输入只有一行,包括若干个整数,中间用空格隔开,最后一个整数为0. 输出格式:输出第二大的那个整数. 输入输出样例 样例输入 5 8

桌面下雪小程序-这个程序错在哪?求高手回答

问题描述 这个程序错在哪?求高手回答 #include #include #include #include #include "Snow.h" /* UpdateLayeredWindow declaration*/ typedef BOOL (WINAPI lpfnUpdateLayeredWindow)( HWND, HDC, POINT, SIZE*, HDC, POINT*,COLORREF, BLENDFUNCTION*, DWORD); /* global variabl

printf-下面的程序错在哪? 为什么无论输入两个什么数,其输出结果都是0?

问题描述 下面的程序错在哪? 为什么无论输入两个什么数,其输出结果都是0? .............. void main() { float min(float x,float y); float a,b,m; scanf("%f%f",&a,&b); m=min(a,b); printf("min is %dn",m); system("pause"); } float min(float x,float y) { floa

max-请问这个程序错在哪里?

问题描述 请问这个程序错在哪里? #include int main(){ int max(int xint y); int abc; scanf(""%d%d""&a&b); c=max(ab); printf(""max=%dn""c); return 0;}int max(int xint y);{ int z; if(x>y)z=x; else z=y; return(z);}构建时出现一个错误F

c-请大家看看这个程序错在哪?

问题描述 请大家看看这个程序错在哪? #include #include using namespace std; int main(void) { char ch; int i=1; char *before = new char[1],*temp; while (cin >> ch) { temp = new char[i]; temp[i - 1] = ch; for (int j = 0; j < i - 1; j++) temp[j] = before[j]; delete[]

我的2012-3*3整型距阵对角线元素之和,这个程序错哪里呢?

问题描述 3*3整型距阵对角线元素之和,这个程序错哪里呢? #includeint main (){int a[3][3];int ijs=0;scanf(""%d""&a[i][j]);for(i=0;i<3;i++){for(j=0;j<3;j++)if(i==j) printf(""%d""a[i][j]);s=s+a[i][j];}printf(""%d""s

c++-这个程序错在哪了??求大神帮忙改正

问题描述 这个程序错在哪了??求大神帮忙改正 #include #include using namespace std; class Point { public: Point(int xx=0,int yy=0) { x=xx; y=yy; } Point(Point &p); int GetX() {return x;} int GetY() {return y;} private: int x,y; }; Point::Point(Point &p) { x=p.x; y=p.y;

printf-这个程序错在哪里?为什么把所有的数字都输出出来了?

问题描述 这个程序错在哪里?为什么把所有的数字都输出出来了? int main(){int ij;for(i=2;i<100;i++){for(j=2;j<i;j++){if (!i%j)break;}if (j==i||i==2)printf(""%dn""i);}} 解决方案 if (!i%j)break;->if (!(i%j))break;否则优先级错了. 解决方案二: 因为每一个数都能被自己整除,所以,i 从2开始就会都会有输出,直到自己