编写程序,求任意两个整数,求商(整数)和余数。如果除数为0,给出错误提示

编写程序,求任意两个整数,求商(整数)和余数。如果除数为0,给出错误提示,第1张

1、以下是一个Python程序示例,可以实现求两个整数的商和余数,并在除数为0时给出错误提示:

Python

2、下面是一个使用C语言编写的程序示例,可以实现求两个整数的商和余数,并在除数为0时给出错误提示:

C

程序首先从命令行中获取用户输入的两个整数(dividend和divisor),然后进行条件判断。如果除数为0,则打印错误提示;否则,使用Python内置的//和%运算符分别计算商和余数,并将结果打印到控制台上。

假设用户输入的都是整数。如果需要处理浮点数或其他类型的数据,需要进行数据类型转换或添加更多的错误检查。

程序错在for(i=1;i<=n;i++),因为数组的下标是从1开始到n-1的,所以这里等于n指向了一个不存在的对象,更改下标范围即可实现~如下:

#include<iostreamh>

void

main()

{

int

n;

cout<<"Input

n:";

cin>>n;

int

a[10],i,s=0;

cout<<"Input

number:";

for(i=0;i<n;i++)

cin>>a[i];

for(i=0;i<n;i++)

if(a[i]<a[s])

s=i;

cout<<"min="<<a[s]<<endl;

}

另外,你通过改变下标寻找最小值不是一个好办法~建议采用值查找!

有三个问题:

一是while(str != null){}是个死循环;

二是你判断数字字符有问题:

if(strcharAt(i)>=0 && strcharAt(i)<=9)

    d++;

数字字符'1'的ASCII码值是49,而根据你的判断‘1’就不是数字字符;

三是你的控制逻辑有问题:

按照你的控制逻辑,只要是不满足第三个if条件的字符都是其他字符。

下面是修改过的例子:

package test;

import javautilScanner;

public class TestAgain {

public static void main(String[]args)

{

Systemoutprintln("enter :");

Scanner scan=new Scanner(Systemin);

String str=new String();

str=scannextLine();

scanclose();

Systemoutprintln(str);

int d=0;//数字

int s=0;//小写字母

int x=0;//大写字母

int o=0;//其他字符

for(int i=0;i<strlength();i++)

{

if(Stringformat("%c", strcharAt(i))matches("[0-9]"))

d++;

else if(strcharAt(i)>='a'  && strcharAt(i)<='z')

s++;

else if(strcharAt(i)>='A' && strcharAt(i)<='Z')

x++;

else

o++;

}

Systemoutprintln(" big character:"+x+"\tsmall character:"+s+"\tdata:"+d+"\tother"+o);

}

}

1字符是ASCII编码,数字0~9的编码是0x30~0x39,所以,将数字0~9加上0的ASCII编码0x30就是0x30~0x39了,就转换成了与它们对应的字符。程序中加'0',这是字符写法,就是0x30。C/C++允许这样写并与整形数运算。

2你的代码对正数的处理是正确的,但对负数的处理有比较大的问题:对十进制数先变成了十六进制字符,而后才对“字符”求反加1求补码,这是错误的,求补只能对数据进行;而且加1会有进位发生的,但你只加在了最低位,所以错的地方比较多。改了一下,原来语句也留着,只是挂起来了,这样以便你对照。如下:

int main(void){/主程序/

int data,i=0,k,dx=1;

char a[16] = {0};

printf("输入一个十进制数");

scanf("%d",&data);

printf("OX");

if(data<0)//计算负数的十六进制

{

do

{

//switch((abs(data))%16)//每次循环会得到一个十六进制上的一个数

//{

// case 10:a[i] = 'A';break;//

// case 11:a[i] = 'B';break;//

// case 12:a[i] = 'C';break;//

// case 13:a[i] = 'D';break;//

// case 14:a[i] = 'E';break;//

// case 15:a[i] = 'F';break;//

// default:a[i] = data%16+'0';//为何一个整数+'0',等于字符?

//}

a[i]=(abs(data))%16;

data=(abs(data))/16;

i++;

}while(data);

k=i;

//i-=i;//求出a[0]

for(i--;i>=0;i--) a[i]=~a[i]&0xF;

for(i++;i<k;i++){

if(a[i]==15){//解决加1时的进位问题并变为字符

a[i]+=dx;

a[i]='0';

dx=1;

}

else{//无进位时的加1与转换为字符

a[i]+=dx;

if(a[i]>=0 && a[i]<10) a[i]+='0';

else a[i]+=0x37;//printf(":%c ",a[i]);

dx=0;

}

}

//while(!i)//数组下标最低位存着此数最低位的十六进制数,对最低位按位取反+1

//{

// a[i] = ~a[i]+1;

// printf("%c",a[i]);

// break;//计算一次跳出

//}

//while(k) //对数组下标i最后存着的数按位取反

//{

// printf("%c",~a[k]);

// break;

//}

while(k!=0) printf("%c",a[--k]);//这里改成前--因为多了

printf("\n");

return 0;

}

if(data>=0)

{

do

{

switch(data%16)

{

case 10:a[i] = 'A';break;

case 11:a[i] = 'B';break;

case 12:a[i] = 'C';break;

case 13:a[i] = 'D';break;

case 14:a[i] = 'E';break;

case 15:a[i] = 'F';break;

default:a[i] = data%16+'0';

}

data/=16;

i++;

}while(data);

while(i>-1)

printf("%c",a[--i]);//这里改成前--因为多了

printf("\n");

}

return 0; //这里也要加一个返回语句

}

下面再提供一个按你的思路写的比较精简一些的,供参考。

void main(void){/主程序/

int data,i=0,k,dx=0,dxx=0;

char a[16] = {0};

printf("输入一个十进制数");

scanf("%d",&data);

printf("OX");

if(data<0) dx=dxx=1;//设立负数标记

data=abs(data);

do{//变成十六进制数但不是字符

a[i++]=data%16;

data=data/16;

}while(data);

k=i;

if(dxx==1)//负数时求反

for(i--;i>=0;i--) a[i]=~a[i]&0xF;

for(i=0;i<k;i++){//负数时加1与变为十六进制字符

if(a[i]==15){//解决进位情况

a[i]+=dx;

a[i]='0';

dx=dxx;

}

else{//无进位的情况

a[i]+=dx;

if(a[i]>=0 && a[i]<10) a[i]+='0';

else a[i]+=0x37;//

dx=0;

}

}

while(k!=0) printf("%c",a[--k]);//

printf("\n");

}

内存错误表示 *** 作系统或应用程序访问的内存地址不在当前物理内存中,而在磁盘上的页面文件中的情况,具体的情况可以参考下面的内容。

1、内存错误根据其原因可分为硬错误和软错误。硬错误是由于硬件的损坏或缺陷造成的,因此数据总是不正确的,此类错误是无法纠正的;软错误是随机出现的,例如在内存附近突然出现电子干扰等因素,可能造成内存软错误的出现。 *** 作系统或程序访问内存地址不在当前物理内存中,而在磁盘上的页面文件内的情况。

2、出现内存错误的原因:

(1)可能是软件兼容性的问题导致出现内存错误;

(2)也有可能是内存的问题,比如两内存条不同容量,不同品牌,不同频率等等混插,会导致内存错误;

(3)或者内存松动,系统识别不了内存设备就导致了出现内存错误的情况。

3、处理方法:

(1)MS-DOS处理,当MS-DOS已运行到一定程度时发现上述的硬错误,就会与磁盘驱动器通讯。驱动器报告这个问题,MS-DOS就在屏幕上显示“Abort,Retry,Ignore”信息。通常,用户纠正一下错误并给系统予以应答。MS-DOS然后按用户指定的动作行动,完成其任务,并返回到应用级。

(2)OS/2处理,OS/2不能在 *** 作系统调用应用程序期间(这样的调用或许在很长时间内部不能返回)将 *** 作暂停下来;主要技术和安全性问题都包含在从0级(有特权的核心方式)到第3级(应用方式)的调用中;在MS-DOS环境下,OS/2就不那么容易了,这是因为可能有多个进程使磁盘FAT扇区或磁盘目录被编辑,由于OS/2所使用的缓冲技术也会在没有进程做I/O *** 作时导致硬错误的出现。

以上就是关于编写程序,求任意两个整数,求商(整数)和余数。如果除数为0,给出错误提示全部的内容,包括:编写程序,求任意两个整数,求商(整数)和余数。如果除数为0,给出错误提示、C++求解程序中的错误:输入一个数n,再输入n个整数,输出最小值。、java程序运行错误统计输入一行字符串中大小写字母个数和数字个数 一起其他字符个数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10142526.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存