Ⅰ 我这个c语言小程序为什么出错,讲什么发生冲突
main中函数参数输入不匹配,a[LEN]是数组a中的最后一个元素,而函数的形参是数组,也就是说指针!
len的求法也不对,len永远是1,因为a是指针,永远是四个字节
楼主c基础有待加强!
Ⅱ C语言 小程序 错误看不懂!
这是scanf()命令的特点,你不能这样写代码
你输入的字符一直在缓存中,没有人去读它,所以,会scanf("
%f",&a)
一直为0,陷入死循环了。
if(scanf("
%f",&a)
==
1);
这句改成这样:
int
flag=0;
//提前定义一个变量
flag=scanf("%f",&a);getchar();
//用getchar()滤掉输入的字符(非数字类字符)
if
(
flag
==
1
)
;
Ⅲ c语言小程序错误
intpan(charpan){//判断输入计算符子函数
intjie;
charpanan;
panudan=pan;
if(panan=='+'){
jie=1;
}
elseif(panan=='-'){
jie=2;
}
elseif(panan=='*'){
jie=3;
}
elseif(panan=='/'){
jie=4;
}
returnjie;
}
增加一个赋值语句,panudan=pan;
Ⅳ C语言用指针处理字符反转小程序出错原因
首先你得为指针分配空间才能使用:
str = (char*)malloc(MAXNsdgsdgsgs);
newstr= (char*)malloc(len+1);
其次要对指针进行保护:
char *p = newstr;
再则,交换值不是交换地址:
*p++ = *str--;
改好的代码如下,请参考:
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#include "string.h""
#define MAXN 50
main()
{
char *str,*newstr;
int len=0,i;
str = (char*)malloc(MAXNsdgsdgsgs);
gets(str);
puts(str);
//newstr="";
len=strlen(str);
newstr= (char*)malloc(len+1);
str+=len-1;
char *p = newstr;
for (i=1;i<=len;i++)
{
*p++ = *str--;
}
*p='\0';
puts(newstr);
getch();
}
Ⅳ C语言字符反转程序运行 段错误
void strRev(char *s) {
//char temp, *end = (char*) malloc(sizeof(char)); //同ERROR1
char temp, *end ;
end = s + strlen(s) - 1; //这里end指向了s的尾部,所以,前面分配的空间丢失,造成内存泄露事件
while(end > s)
{
temp = *s;
*s = *end;
*end = temp;
--end;
++s;
}
}
int main(){
//char *p=(char*) malloc(sizeof(char)); ERROR1 sizeof(char)==1 ,只分配了一个字节空间,看下文分配的空间又没
有用到,所以不要用malloc了
/**
char *p;
p ="abc"; //错误原因:这里是将常量的地址给了p, 常量数据存储在一个只读的空间里,不能对其进行数据变动
**/
char p[32];
strcpy( p , "abc" );
printf("%s\n", p);
strRev(p);
printf("%s\n", p);
return 0;
}
Ⅵ 大神这个c语言小程序 运行结果怎么会出错呢帮忙看看,小弟感激不尽
把min()这个函数放到main()前面去或者在main()前面放上int min(int x,int y);
Ⅶ 一个c语言小程序错误。。。
应该是你没按照自己规定的格式输入
在输入时2,3之间要有逗号
或者去掉scanf("%d,%d",&a,&b);
%d之间的逗号 然后输入2 3 中间不加逗号
Ⅷ 在线求助,c语言的一个小程序错误
stanf("%d,%d,%d",a,b,c,);
应该改为 scanf("%d,%d,%d",&a,&b,&c);
if else(b>c) printf("sum=%d",b);
应该改为else if(b>c&&b>a) printf("sum=%d",b);
else printf("sum=%d,c);
应该为 else printf("sum=%d",c); 少半个分号
#include <stdio.h>
void main()
{
int a,b,c;
printf("请输入三位不相等的整数,我们将为您求出最大值:\n");
scanf("%d%d%d",&a,&b,&c);
if(a>b&&a>c) printf("sum=%d",a);
else if(b>c&&b>a) printf("sum=%d",b);
else printf("sum=%d",c);
printf("\n我厉害吧,哈哈,喜洋洋美羊羊灰太狼。。。\n");
}
试试行不行,输入字符格式 12 34 45 回车;按照这种输入~
Ⅸ c语言做了一个倒序输出小程序总是不对
#include<stdio.h>
int main(){
int i,*p,a[5],swap;
p=a;
printf("请输入5个数\3\3\3\3\3\n");/*输入数字*/
for(i=0;i<5;i++)
scanf("%d",(p+i));
for(i=0;i<2;i++)
{
int t;
t=4-i;
swap=*(p+i);
*(p+i)=*(p+t);
*(p+t)=swap;// 按照逻辑应该是*(p+t)
}
for(i=0;i<5;i++)
printf("%d",a[i]);
return 0;
}