c语言问题-C语言程序运行时出现问题

问题描述

C语言程序运行时出现问题

/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
char s1[80],s2[80];
int i,flag=1,resu;
printf("Please input s1 and s2:n");
gets(s1);
gets(s2);
for(i=0;;i++)
{
if(s1[i]>s2[i])
{
printf("%d",s1[i]-s2[i]);
flag=0;
break;
}
if(s1[i]<s2[i])
{
printf("%d",s1[i]-s2[i]);
flag=0;
break;
}
if(s1[i]==s2[i]=='')
{
resu=0;
printf("%d",resu);
}
}
if(flag)
{
resu=0;
printf("%d",resu);
}
}
//这是我写的一行代码,该程序的功能是比较两个字符串s1和s2的大小,若s1大于s2输出一个正数,等于则输出0,小于则输出一个负数,不要用strcpy函数,输出的正数或负数的绝对值必须为相比较的两个字符串相应字符的ASCII码的差值,例如‘A’与‘C’相比就输出-2;输入and和and,输出应为0.但是当我输入and和and时,输出为-43,这是为何?求大神帮助。

解决方案

因为你在for循环当中,比较字符串的最后一个''的时候,没有跳出循环,导致会比较数组中后面一些无效字符。所以结果可能为-43或其他的。当你比较到最后一个字符都为'',此时就应该结束循环,字符串的比较结果就为0;所以只要在循环里面那个比较最后一个字符的时候加一个break就可以了。结束循环不需要在判断flag的值,因为在循环中都已经将比较的结果处理完毕了。

解决方案二:

最后那个不需要加break,你这代码有问题,if(s1[i]==s2[i]=='')这句的意思先是判断s1跟s2是否相等,再跟后面的‘’比较,所以你这个是进不去,resu没初始化,可以是任意的值;做比较最好用指针表示别用数组,指针好操作些

解决方案三:

不要用for循环,改成别的试试。而且你的编程思路也不是特别好。

时间: 2024-11-02 13:42:18

c语言问题-C语言程序运行时出现问题的相关文章

c语言问题-C语言程序运行时出现的问题

问题描述 C语言程序运行时出现的问题 /* Note:Your choice is C IDE */#include ""stdio.h""int main(){int fac(int n);int n;int y;printf(""input an integer number:n"");scanf(""%d&n"");y=fac(n);printf(""%

文件传输-下面c语言中要将操作结果存入文件(当遇到#时为止)。程序运行时为什么老是中断出错?

问题描述 下面c语言中要将操作结果存入文件(当遇到#时为止).程序运行时为什么老是中断出错? #include(stdio.h)#include(stdlib.h)void main(){FILE *fp;char ch;if((fp=fopen(""C:UsersAdministratorDesktopEnglish.doc""w""))=NULL){ printf(""cannot open filen"&quo

关于哈夫曼编码的程序运行时出错,我分析是由于cd定义出现了问题,导致后边cd[--start]出错

问题描述 关于哈夫曼编码的程序运行时出错,我分析是由于cd定义出现了问题,导致后边cd[--start]出错 void HuffmanCoding(HuffmanTree &HT,HuffmanCode &HC,int *w,int n){ //w存放n个字符的权值(均>0),构造赫夫曼树 HT,并求出n个字符的赫夫曼编码 HC printf("123"); system("pause"); int s1,s2,i,start; int f=0

文件传输-C语言中memset()如何用?下面的程序运行时为什么在文件中显示的age信息都是乱码?

问题描述 C语言中memset()如何用?下面的程序运行时为什么在文件中显示的age信息都是乱码? C语言中memset()如何用?下面的程序运行时为什么在文件中显示的age信息都是乱码? 如何改正?#include#include#define N 3 void main(){typedef struct student{ char id[6]; char name[8]; int age;}STU;FILE *fp;STU stu1[N]stu2[N];if((fp=fopen(""

iostream-请大神一看!使用tinyxml编译出来的程序运行时的错误!

问题描述 请大神一看!使用tinyxml编译出来的程序运行时的错误! 因为是新手刚学习tinyxml,所以谢了个生成xml文件的cpp试试,编译时没问题,但是程序运行时会出现:xml: malloc.c:2395: sysmalloc: Assertion `(old_top == initial_top (av) && old_size == 0) || ((unsigned long) (old_size) >= MINSIZE && prev_inuse (ol

c++程序运行时出现string subscript out of range

问题描述 c++程序运行时出现string subscript out of range int main(){ vector a; string s; while(getline(cin,s)){ a=spite(s); for(vector<string>::size_type i=0;i!=a.size();i++) cout << a[i] << endl; } return 0; } vector spite([如果在这里加上const则可以正常运行]stri

控制-自己编的程序运行时串口被程序自己占用,如何用代码强制关闭重新连接?

问题描述 自己编的程序运行时串口被程序自己占用,如何用代码强制关闭重新连接? 我用vs2010基于MFC编一个小程序,其中有一部分是用单片机转USB串口与电脑程序相连.现在问题是: 不小心动了Usb线的话,程序会卡住,在想打开串口会显示串口被占用(就是自己的程序占用).需要把USB线拔下来才能解决问题.求大侠指导,能不能用代码控制,按个软件上的button,就能自动连接上com1. 求大侠指导! 解决方案 结束进程再重启看看行不行.首先要确定卡死不是驱动的问题,如果是驱动的问题,程序就无能为力了

using-为什么ASP.NET程序运行时不执行,也不报错?急急,哪位大蚁帮我一把戏?

问题描述 为什么ASP.NET程序运行时不执行,也不报错?急急,哪位大蚁帮我一把戏? 点发布时,屏幕闪一下,没有任何提示,不进行验证,也没有加到SQL2005库中! 前台: <%@ Page Language="C#" validateRequest="false" CodeFile="kjxm_Edit.aspx.cs" Inherits="As_Tzxm_Edit" %> <%@ Register Tag

wpf-VS2010创建的WPF浏览器程序运行时浏览器就停止工作了求指导

问题描述 VS2010创建的WPF浏览器程序运行时浏览器就停止工作了求指导 我用的WIN7操作系统(旗舰版),浏览器是用IE9.VS2010创建的WPF浏览器程序运行时浏览器就停止工作了,代码没有错误,请各位高手指导下. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xml