C语言程序运行错误
#include #include int main() {char password[36],ch;int n = 0;while((ch = getch()) != '' && n < 36) {if(ch == 8) {printf("\b \b"); // 删除刚输入的字符--n;}else {printf("*");password[n++] = ch;}}password[n] = '\0';printf("
%s
",password); // 看看输入的内容return 0;}
char k, name, email, turename, password;
你定义的的name, email, turename, password;都是字符类型,而用到的是字符数组,类型当然不对,同意楼上所指出的,将上述定义语句改为
int k;
char name[1000];
char email[1000];
char turename[1000];
char password[1000];
注意格式,每一行定义一个会让你的程序清晰一些,可读性好一些,养好一个好的编码习惯。
1. 逻辑关系错误:如jaybestwang同学所说,while内的逻辑是始终成立的,c不等于'n'就肯定等于'N'嘛,所以改成while(c!='n'&&c!='N') ;
2. 程序设计缺陷:如deng576631589同学所说,scanf函数会把缓冲区的回车符也载入,因此第二个scanf函数实际上接收的是你第一次输入数据的最后一个(非数值)。解决思想就是把这个值给“消耗”掉,比如在第一个scanf后面紧跟一个getchar函数。
其实这些问题通过调试都能找出来,你需要一些调试技巧。断点分析到while不起作用了,就应该主动从逻辑上分析为什么,而不是问程序为什么,程序是按你的指令在执行的,不会有问题。
希望能对你有所启发,祝你学习愉快。
附参考修改如下:
void main()
{
float a,b;
char c;
do
{
printf("\nqing shu ru a=?\n");
scanf("%f",&a);
getchar();//消耗掉你输入的回车键
b=a*25.4;
printf("%f\n",b);
printf("jie shu n/N\n");
c=getchar();//我用getchar函数代替scanf,这里应该还是有区别的
// scanf("%c",&c);
}
while(c!='n'&&c!='N');
printf("zai jian xie xie!\n");
getchar();
}
main()
{
float a,b;
char c;
do
{
printf("qing shu ru a=?\n");
scanf("%f",&a);
b=a*25.4;
printf("%f\n",b);
printf("jie shu n/N");
getchar(); // 加这句, 消去你输入a时按下enter建产生的'\n'字符
scanf("%c",&c);
}
while(c!='n'&& c!='N'); // || 改成 &&
printf("zai jian xie xie!\n");
getchar();
}
我看是scanf("%c",&c);话吃了回车那个字符。所以不停.....
main()
{
float a,b;
char c,d;
do
{
printf("qing shu ru a=?\n");
scanf("%f",&a);
b=a*25.4;
printf("%f\n",b);
printf("jie shu n/N");
scanf("%c",&d);
scanf("%c",&c);
}
while(c!='n'&&c!='N');
printf("zai jian xie xie!\n");
getche();
}
main()
{
float a,b;
char c;
do
{
printf("qing shu ru a=?\n");
scanf("%f",&a);
b=a*25.4;
printf("%f\n",b);
printf("jie shu n/N");
scanf("%c",&c);
}
while(c!='n'&&c!='N');
printf("zai jian xie xie!\n");
getche();
}
将“||”改为“&&”,因为c='n'或c=‘N’的逆否命题是c!='n'并且c!='N'
while终止条件有问题,c无论如何输入都会继续循环,应该改成
while(c!='n'&&c!='N')
while(c!='n'&&c!='N'); ///&&吧,不是|| , c!='n'||c!='N' 是恒TRUE.
在C语言中,计算机程序通常有哪几种错误?
2、语法错误:这是指程序中含有不符合语法规定的语句,例如关键字或符号书写错误(将printf写成print、将数组元素引用写成a(2)等)、使用了未定义的变量、括号不配对等。3、逻辑错误:这是指程序中没有语法错误,可以通过编译、连接生成可执行程序,但程序运行的结果与预期不相符的错误。
为什么我写的C语言程序编译时没错,运行时有错误
看看你程序运行时是不是数组下标越界了.比如说你只声明了一个int a[10]的数组,但你却有a[-1]或者a[10]之类的用法,这样的用法会导致运行时错误的
C语言程序运行崩溃
这种情况叫做 runtime error (运行时错误)。在 Windows 7 上这样提示:在 Windows XP 上这样提示:runtime error (运行时错误)就是程序运行到一半,程序就崩溃了。比如说:①除以零 ②数组越界:int a[3]; a[10000000]=10;③指针越界:int * p; p=(int *)malloc(5 * sizeof(int));...
易语言程序运行错误
从提示的内容看,要附带核心支持库文件,一般在易语言安装目录下的lib文件夹内(文件名一般是:kernel.fnr),找到后放到你的程序的目录下即可。拷贝到没有易语言的机器上时,一起带上就可以了。2、如果你的程序采用独立编译则可直接使用,无需附带支持库文件。
C语言程序运行后 出现exe停止工作 为什么呢?
C语言程序运行出现exe停止工作的原因是因为内存溢出和编译器错误。第一种:内存溢出 内存溢出(out of memory)通俗理解就是内存不够,程序所需要的内存远远超出了主机内安装的内存所承受大小,就叫内存溢出。系统会提示内存溢出,有时候会自动关闭软件,重启电脑或者软件后释放掉一部分内存又可以正常运行该...
c语言运行出现 error C2065: 'printf' : undeclared identifier是什么意思...
解决方法如下:1、首先打开点C语言软件,新建一个printf项目,添加一个printf.cpp文件。2、输入包含需要用到的头文件,如图所示。3、接着输入main函数,如图所示。4、printf作用:向控制台输出一段文本,使用printf函数输出Hello World!,如图所示。5、最后运行程序,查看效果,如图所示,就完成了。
c语言程序运行时出现的一个错误,请帮忙看一下
一些编译器, 包括Turbo C, 编译时会忽略掉某些它认为不需要的浮点支持。特别是用非浮点版的printf()和scanf()以节省一些空间, 也就是忽略处理 %e、%f和%g的编码。程序员有时必需调用一个空浮点库函数(例如sqrt(), 或任何一个函数都可以)以强制装载浮点支持。比如,在你的程序#include <math.h> ...
C语言程序运行不了,哪位大神帮忙解个惑呀?
你的二分法查找的C语言程序有两处问题,我帮你改好了(改动的地方见注释)include <stdio.h> include <math.h> void main(){\/\/这里把mian改成main int a[10]={0,1,6,16,23,56,80,100,110,115};int low,high,mid,found,n;low=0;high=9;found=0;printf("write a number:\\n");do{ ...
runtimeerror怎么解决
解决方法:Runtime Error通常可以通过检查代码逻辑、优化运行环境、更新依赖库或重新编译代码来解决。Runtime Error是在程序运行时出现的错误,可能是由于多种原因导致的。以下是详细的解决步骤:一、检查代码逻辑 检查代码中的逻辑错误是解决Runtime Error的关键步骤。错误的逻辑可能导致程序在运行时出现异常。
C语言里程序编译无误但运行会弹出程序已停止运行是为什么
造成程序停止运行弹框出错的可能原因如下:内存溢出 内存溢出(out of memory)通俗理解就是内存不够,程序所需要的内存远远超出了主机内安装的内存所承受大小,就叫内存溢出。系统会提示内存溢出,有时候会自动关闭软件,重启电脑或者软件后释放掉一部分内存又可以正常运行该软件 造成内存溢出的原因可能有:1...
伏哑肠舒: 1语法错误,出错时,双击出错信息,可找出错误,检查修改2逻辑错误 算法有错,这要平时的不断积累3运行错误
河西区17148842517: C语言程序为什么不能运行 - ?
伏哑肠舒: 1 2 3 4 5 6 7 8 9 10 11 12 13 14#include <stdio.h>intmain(void) {inti, num = 0;i = 1; do{num += 1;i ++;}while(i <= 100); printf("%d\n", num);return0; } 试试这个!
河西区17148842517: c语言运行时出现程序运行错误如何解决.代码如下 - ?
伏哑肠舒: 错误地方很多sort函数返回值就不对,不能返回数组,sort函数里面直接修干数组,不需要返回排序冒泡法 交换数值temp=a[y];a[y]=a[y+1]; a[y+1]=temp;y+1 超出范围,上...
河西区17148842517: C语言为什么运行不了呢 - ?
伏哑肠舒: 运行期错误.这是指可执行程序执行过程中发现的错误.如在计算过程中遇到了除数为零的错误、求一个负数的平方根等等.编译系统发现这类错误后如无特殊指示通常告知一些适当信息,然后立即停止程序的执行.当然,为阻止这类错误的出现,程序设计者可在程序中编入一些由自己来检查这类错误的程序段,这可能更适合于自己的处理要求
河西区17148842517: C语言程序运行崩溃 - ?
伏哑肠舒: 这种情况叫做 runtime error (运行时错误).在 Windows 7 上这样提示:在 Windows XP 上这样提示:runtime error (运行时错误)就是程序运行到一半,程序就崩溃了.比如说:①除以零 ②数组越界:int a[3]; a[10000000]=10; ③指针越界:int * p; p=(int *)malloc(5 * sizeof(int)); *(p+1000000)=10; ④使用已经释放的空间:int * p; p=(int *)malloc(5 * sizeof(int));free(p); *p=10; ⑤数组开得太大,超出了栈的范围,造成栈溢出:int a[100000000]
河西区17148842517: 这段C语言编译没问题,运行提示有错误,是什么意思?求助大神... - ?
伏哑肠舒: 编译没问题是因为所有语法都符合规范,运行提示有问题是因为找不到主函数.你的main拼错了.另外你的逻辑有问题,这样根本判断不出来是不是素数.12345678910111213141516171819202122232425 #include <stdio.h>#include <stdbool...
河西区17148842517: C语言运行时出现错误 - ?
伏哑肠舒: scanf用法错误.#include <stdio.h>#include<stdlib.h>#include<time.h> int main() { int a,b,sum,answer,i=1,n; srand((unsigned)time(NULL)); scanf("%d",&n); while(i<=n) { a=rand()%10; b=rand()%10; sum=a+b; printf("%d加%d",a,b); scanf("%d",&answer); if(sum==answer) printf("答对了\n"); else printf("错里\n"); i++; } return 0; }
河西区17148842517: 为什么C语言程序输入运行总说有个错误?请教高手解答 - ?
伏哑肠舒: 新手用C语言经常犯的一个错误就是 scanf("%d",&n);里面丢掉了"&" 当然程序出错的原因是非常多的,既然你问程序出错原因,可是又不提供足够的信息,抱歉,那我只能推测你是新手了.C语言编程习惯很重要啊,否则,内存非法访问这种错误会经常发生,下标越界、丢个星号,或者&号,又或者定义了一个指针但是没有初始化过就访问它,很容易崩溃掉的,这些错误编译器几乎是不会检查出来的,运行的时候就是灾难性后果了,而且还不好找原因
河西区17148842517: c语言运行是出现如下错误,如何修改 - ?
伏哑肠舒: 应该要先退回程序编辑窗口,然后加一些输入语句,到时候运行到你写的语句的时候,自然就会提示你输出第二个同学的信息,如果您还是不理解的话,可以将你写的程序附上来,我帮你看看. x
河西区17148842517: c语言编的程序运行时有一点错误?
伏哑肠舒: 你的代码中一定有数组吧 而且还有循环语句,这种情况多为函数的调用超出了数组的范围比如说a[100]数组,可是函数却没有在100前停下,而是一直在调用这个数组以至于超过了范围,你在看看你的循环条件吧,也可以进行单步调试,看看具体是哪出现这样的溢出现象