C语言的一小段语法求解

   更新日期:2024.05.16
1.先说atoi()这个函数的作用。atoi()的作用是将字符串形式的数字转化为整型的数字。如atoi("1234"),"1234"是字符串,经过变换后,就变成数字形式的1234了。
2.为什么要用atoi()?这是因为你scanf(“%s”,s)读入的是字符串,必须要经过atoi()转换后才能变为整型。
3.直接定义整形然后SCANF取值却无法运行呢?
我不知道楼主是怎样定义的,肯定是你语法弄错了。比如scanf("%d",&c)少了"&".以下是我直接用整型的程序,完全可用:
int menu_show()
{ int c=0;
printf("\nPlease press any button to continue......\n");
getch();

printf("\n*******M E N U*******\n");
printf("\n1:RoomNum and Price:\n");
printf("\n2:Input Kehu_Information\n");
printf("\n3:Check Room_Information\n");
printf("\n0:Exit\n");

printf("\n Please input number 0~3:");
scanf("%d",&c);

return c; }

atoi()
用法:
int atoi(const char *s);
输入一个字符串,返回一个整形.如输入"1234",返回int型的1234
如果不能转换(如你输入了“abc12”)返回0

你是说scanf("%d",s)么?
scanf是用于输入的,不知道你为什么会用在这里

atoi() 这个函数是把字符串转换成int 比如c = atoi("0") 那么c就等于0

直接改成
scanf("%d",&c);
//c=atoi(s);
return c;

也是可以的!只不过你这个时候如果输入的不是0-3的字符,而是字符"a" ,c的值会是乱七八糟的!

scanf("%s",s);
c=atoi(s);
return c; 而这样的话,c=atoi("a") c的值为0,atoi转换非数字字符串,值一直为0
这里用atoi应该是为了容错吧!

atoi()这个函数的用法:
#include <stdlib.h>
#include <stdio.h>

void main( void )
{
char *s; double x; int i; long l;

s = " -2309.12E-15"; /* Test of atof */
x = atof( s );
printf( "atof test: ASCII string: %s\tfloat: %e\n", s, x );

s = "7.8912654773d210"; /* Test of atof */
x = atof( s );
printf( "atof test: ASCII string: %s\tfloat: %e\n", s, x );

s = " -9885 pigs"; /* Test of atoi */
i = atoi( s );
printf( "atoi test: ASCII string: %s\t\tinteger: %d\n", s, i );

s = "98854 dollars"; /* Test of atol */
l = atol( s );
printf( "atol test: ASCII string: %s\t\tlong: %ld\n", s, l );
}

Output

atof test: ASCII string: -2309.12E-15 float: -2.309120e-012
atof test: ASCII string: 7.8912654773d210 float: 7.891265e+210
atoi test: ASCII string: -9885 pigs integer: -9885
atol test: ASCII string: 98854 dollars long: 98854

直接定义整型int c;
在scanf("%d",&c);
应该是对的啊

  • 19143432444 :c语言一小段程序求解
    甘潘罡2270 :答:include "stdio.h"//包含输入输出头文件,printf就在其中main(){ int x1=0xabc,x2=0xdef;//声明x1、x2为有符号整型变量并用十六进制赋初值 x2-=x1;//用x2的值减去x1的值并将结果赋给x2 printf("%x\n",x2);//用十六进制输出x2的值}结果是十六进制333,即十进制的819。
  • 19143432444 :C语言 语法不是很懂 求解答!!
    甘潘罡2270 :答:case 常量表达式1: 语句1;case 常量表达式2: 语句2;…case 常量表达式n: 语句n;default: 语句n+1;} 就和if语句是一样的 if(条件){ --- 这里不也是有两个括号吗?} 如果if下面是一个单语句,可以省略大括号,如果是多语句,就必须要有。switch的下面一定是多语句的,所以肯定要加呀。
  • 19143432444 :C语言求解
    甘潘罡2270 :答:1.答案:2870 2.解释:比如第一次循i=1,x=i=1,if(++x%2==0)->x先自加1,此时x=2,再看它是否能被2整除,如果不能直接跳出if语句;如果能,则继续下一步if(++x%3==0)->x先自加1,得x=3,再查看它是否能被3整除,如果不能直接跳出if语句;如果能,则继续下一步if(++x%7==0)...
  • 19143432444 :c语言 求这一小段的执行结果
    甘潘罡2270 :答:include<stdio.h> void main(){ int m=5;if(m >5)printf("%d\n",m);else printf("%d\n",m--);} 最后输出的答案是:5 如果是:if(m++>5)则答案是:6
  • 19143432444 :c语言的表达式求解,求助
    甘潘罡2270 :答:c=getchar();break;case'=': /*去掉括号并接受下一字符*/ Pop(StackR,x);c=getchar();break;case'>': /*出栈并将运算结果入栈*/ Pop(StackR,R);Pop(stackD,b);Pop(StackD,a);Push(StackD,Operate(a,R,b));break;} } return GetTop(StackD);} 由于这是书上抄下来的,我...
  • 19143432444 :如何用c语言解答下面的题目?
    甘潘罡2270 :答:a&&b,a和b的逻辑与的值。是C语言里的一种逻辑表达式。&&表示的意思是数学中的逻辑与操作。在C语言中非0则是1,因为题目中a=4,b=5,所以a&&b的结果为1。所以题目中x的最后结果为1。计算过程a&&b=1,c<‘B’=1,x=1&&1,所以x=1。
  • 19143432444 :c语言,小白求解
    甘潘罡2270 :答:在表达式后面加一个分号“;”就构成了表达式语句。这里提供的四个选项,A不是是合法的语句(少了分号)。++j也是一个表达式,++j;也是一个表达式语句。A)a=1,b=2 逗号表达式,加了分号就是语句 B)++j;C)a=b=5;D)y=(a=3,6*5);...
  • 19143432444 :c语言初学,求解
    甘潘罡2270 :答:或者scanf("%s%s%s", s1,s2,s3)直接读入;然后第一步是找出op,测试两次:如果 s1 在 “+-*/”中,那么 op=s1;x=s2;y=s3;如果 s2 在 “+-*/”中,那么 op=s2;x=s1;y=s3;否则 op=s3;x=s1;y=s2;接下来你会处理了吧,switch(op[0]) 输出x +(或者-*/) y的结果 ...
  • 19143432444 :求问c语言程序中一小段不懂意思,求解释
    甘潘罡2270 :答:根据livenumber 的值进行排序 由小到大 for(i=0;i<n-1;i++){ for(j=n-1;j>i;j--)这个是很典型的排序算法 至于if里面所有代码 其实就是交换stu[j] stu[j-1]的值。其实 没必要这么麻烦的。把if里面所有代码改成 struct student t;t = stu[j];stu[j] = stu[j-1];stu[j-1]=...
  • 19143432444 :C语言,这组语句求解释(很简单的语句,但是想不通)
    甘潘罡2270 :答:要回答这个问题,楼主首先要知道什么是栈区,栈所起的作用,以及栈的特点 通常所说的栈区指的是系统内的一块内存区(即栈内存)先举个例子 比如现在有5个玻璃球分别编号为1,2,3,4,5和一个试管,我们按照编号顺序依次将小球放进试管,然后再一次将小球去出试管,这时你会发现我们放进去的顺序是1,...
  • 相关链接

    欢迎反馈与建议,请联系电邮
    2024 © 视觉网