当前位置:首页 » 编程语言 » 输入数字c语言错在哪里
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

输入数字c语言错在哪里

发布时间: 2022-08-26 09:37:58

1. 纯数字输出错在哪c语言

错在c[80]溢出了
char c[80];
你能用的是c[0]到c[79]一共80个单元。
//////////////////////////
#include <stdio.h>
int main() ///为了linux下的兼容性,抛弃void型的main函数吧
{
int i = 0;
const int len = 80; ///用一个变量代替80,到处写"80"改起来累
char c[len];
while (i < len && (c[len-1] = getchar()) != 10) ///i<len这个是防止c[i]溢出
{
if (c[len-1] >= 48 && c[len-1] <=57)
{
c[i] = c[len-1];
}
++i;
}
///c[i] = 0;使用下标前必须判断下标的范围,防止溢出
if (i < len)
{
c[i] = 0;
}
else
{
c[len-1] = 0;
}
printf("%s", c);
return 0;
}

2. c语言按顺序插入一个数,我错在哪

你这算法都写错了,你这是排好序的插入,用二分查找法进行插入。你可以去看看什么是二分查找法,如果看不懂,再来问我。当然要提高自己的能力还是得动手敲敲代码,不管是学习还是工作。

3. C语言的问题,到底错在哪了输入有的数字答案是对的,输入有的数字答案就差了1。。。

程序太复杂了,修改如下:
long reverse(long number)
{
long sum;

sum=0;
while( number!=0 )
{
sum=sum*10+number%10;
number/=10;
}
return sum;
}

你的代码中的问题,估计是pow()的返回值是double,在进行隐式转换成long时,产生了数据丢失!

4. C语言:规定只能输入正整数,错哪了

要满足你的循环条件,那么输入的就不能是整数,但是这个就出现一个问题,比如你输入一个字母A,由于scanf(“%u”,&num)读到的是非数值的数据,所以它不会把A从缓冲区中取出赋给num,那么A就一直停留在缓冲区中,第二次循环,还是读取A,满足循环条件,所以你的这个就是死循环。
while(scanf("%u",&num)!=1)
{
while(getchar()!='\n'//把缓冲区的字符全部拿走
continue;
printf("拜托……");
}

5. C语言数字输入错误的判断

我碰到一位网友,他的思路是
判断
scanf
的返回值,如果值等于输入数字的个数,那么就说明输入的东西是指定的类型(比如
,x=scanf("%d",&a),如果x=1,说明输入的确实是整数)

6. c语言输入两个数输出大于等于小于,哪里错了

程序没有错误,逻辑和语法都没有错
不过两点注意
1、编译环境,看你用的vc6,这个编译环境和dos下的tc有很大的不同,需要修改一些地方才可以。初学者一般是看c基础,用win-tc这个编译器比较贴近书中的代码习惯。建议使用win-tc
2、scanf多个输入的时候,容易出错。这个和你操作有关系,看代码是没有办法看出问题的,也是初学者的误区。
多个输入时,需要用空格或者逗号隔开这些数据。空格对空格,逗号对逗号,不要搞混了。
建议输入后,打印出出入的数据看看,是否后面的数据正确被程序读入。

7. c语言中从键盘输入数据的规律和容易出错的地方

以下为你收集的c语言输入数据要点及注意事项

说明: (1)数据输入是相对计算机内存
(2) 数据输入使用标准库函数完成
(3) 数据输入标准库函数的原型声明在stdio.h头文件中
1、函数getchar函数的功能是从键盘上输入一个字符。
其一般形式为:字符变量=getchar();

getchar函数只能接受单个字符,输入数字也按字符处理。
输入多余的字符存入到键盘的缓冲区,若有下一个getchar函数语句,直接从键盘的缓冲区读取。
2、字符串输入函数gets 格式:
gets (st)
功能:从键盘上输入一个字符串,本函数得到一个函数值,即为该字符数组的首地址。
注意:gets函数并不以空格作为字符串输入结束的标志,而只以回车作为输入结束。这是与scanf(“%s”,…)函数不同的。
3、scanf()函数的一般形式
scanf(“格式控制字符串”,地址列表);

地址列表,用来接受数据各变量的地址。

变量的地址表示如下: & 变量名 ,别忘了取地址运算&

其格式字符串的一般形式为:
%[*][输入数据宽度][长度]类型字符
其中有方括号[]的项为任选项。各项的意义如下:
1) 类型字符
表示输入数据的类型,其格式符和意义如下所示:
d 输入十进制整数
o 输入八进制整数
x 输入十六进制整数
u 输入无符号十进制整数
f或e 输入实型数(用小数形式或指数形式)
c 输入单个字符
s 输入字符串

2) “*”符
用以表示该输入项读入后不赋予相应的变量,跳过该输入值。
如 scanf("%d %*d %d",&a,&b);
输入为:1 2 3 把1赋予a,2被跳过,3赋予b。
3)宽度
用十进制整数指定输入的宽度(即字符数)。
例如: scanf("%5d",&a);
输入: 12345678
只把12345赋予变量a,其余部分被截去。
又如: scanf("%4d%4d",&a,&b);
输入:12345678将把1234赋予a,而把5678赋予b。
4)长度 长度格式符为l和h,l表示输入长整型数据(如%ld)和双精度浮点数(如%lf)。h表示输入短整型数据。
例如:
main()
{ inta;
long b;
double x;
scanf(“%d%ld%lf”,&a,&b,&x);
printf(“a=%d, b= %ld,x=%lf”,a,b,x);
}
使用scanf函数还必须注意以下几点:
(1)scanf函数中没有精度控制。
如:scanf(“%5.2f”,&a); 是非法的。
(2)scanf中要求给出变量地址,
如: scanf(“%d”,a);是非法的。
(3)在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔则可用空格,TAB或回车作间隔。
例如:scanf(“%d%d”,&a,&b);
输入: 12 10 回车
或 12 回车 10 回车
(4)在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。
例如:
scanf("%c%c%c",&a,&b,&c);
输入为:d e f 则把'd'赋予a, ‘’'赋予b,'e'赋予c。
只有当输入为: def时,把'd'赋于a,'e'赋予b,'f'赋予c。
如果在格式控制中加入空格作为间隔,
如 scanf ("%c %c %c",&a,&b,&c);
输入时各数据之间可加空格。
(5)如果格式控制串中有非格式字符则输入时也要输入该非格式字符。
例如:
scanf("%d,%d,%d",&a,&b,&c);
其中用非格式符“,”作间隔符,故输入时应为: 5,6,7
又如:
scanf("a=%d,b=%d,c=%d",&a,&b,&c);
则输入应为: a=5,b=6,c=7
(6)如输入的数据与输出的类型不一致时,虽然编译能够通过,但结果可能不正确。
void main()
{ inta;
printf("inputa number\n");
scanf("%d",&a);
printf("%ld",a);
}
以上总结比较全面,希望能帮到你。

8. c语言的输入错在哪里

scanf_s函数是微软为了防止输入字符时溢出更新的一个函数;
当输入数值时和原来的scanf函数一样的用法,如果输入字符或者字符串就要多传入一个最大容量的值。
scanf_s("%c,%c", &a, &b);改成
scanf_s("%c,%c", &a, 1, &b, 1);
每个变量都要跟一个最大容量。

9. 求指出C语言代码哪里错了(程序功能:输入2个数字,按大小排序)

scanf ("%d %d", &a, &b);

第二个%d后不要加空格

10. c语言中数据输入错误了如何提示输入错误并实现要求重新输入

可以使用清理输入流fflush(stdin);这个原因是因为错误输入的内容会保留在输入流,下一次判断会从输入流开始读取,因为错误输入的内容还在,所以直接判断错误,继续循环。

但有些编译器并不支持清理输入流。所以我们这时需要用手动输入让其清除。使用getchar();让其接收错误的字符。但这样就会变成这样,如果输入多个错误就会出现多个次数的循环;直至没有错误输入;这样如果循环内容多,所消耗的资源也就多了。

所以可以使用while()来执行里面的消除字符,但如果直接这样while(getchar())就会进入无限循环,所以可以让其接收一个终止条件,每次输入完都会按回车,那就让其接收' '换行符终止自己的循环。

(10)输入数字c语言错在哪里扩展阅读

C语言从键盘输入数据

程序是人机交互的媒介,有输出必然也有输入。在C语言中,有多个函数可以从键盘获得用户输入:

scanf():和 printf() 类似,scanf() 可以输入多种类型的数据。

getchar()、getche()、getch():这三个函数都用于输入单个字符。

gets():获取一行数据,并作为字符串处理。

scanf() 是最灵活、最复杂、最常用的输入函数,但它不能完全取代其他函数,大家都要有所了解。scanf 是 scan format 的缩写,意思是格式化扫描,也就是从键盘获得用户输入。

gets() 会读取用户输入的整行内容,包括空格。而 scanf() 遇到空格就结束读取,也就是说,使用 scanf() 读取的字符串中永远不会包含空格。