C语言问题,程序最后的循环显示结果异常,请高手解惑!

#include<stdio.h>/*#include为指示和文件头包含stdio.h文件*/#include<string.h>#definedensity64.2/*... #include <stdio.h> /*#include为指示和文件头 包含stdio.h文件*/#include <string.h>#define density 64.2/*预处理,定义了符号常量density 代表值64.2*/void butler (void); /* 定义一个函数butler,void butler()不返回值,butler(void) butler不接受任何数据 */void xh (void);/*定义一个函数xh,演示循环语句*/int main (void) /*在C程序中,有且只有一个main()函数,int 表示main()函数返回整数,void表示main()函数不接受任何参数。*/{ /*函数体开始*/ int num,num1; /*声明两个整数型变量 num和num1*/ float weight; /*声明一个浮点型变量 weight*/ float value; /*声明一个浮点型变量 value*/ char ch1,ch2,ch3;/*声明三个字符型变量,注意char的实际储存形式是整数而不是字符,为了处理字符,用特定的整数表示特定的字符。*/ char ch4[40];/*声明ch4为40个字符的数组*/ num = 72; /*给变量num赋值1*/ num1 = num + 2; /*给num1赋值*/ printf("I am simple "); /*调用printf()函数:在屏幕上显示。显示" "之间的内容I am simple */ printf("computer.\n"); /* \n为换行符,光标移到下一行的开始*/ butler(); /*调用butler()函数*/ printf("my favorite number is %d%x bucause it is first.\n",num,num1); /*%d 指示输num值的位置和形式*/ printf("输入一个十进制数。\n"); scanf("%i",&num); /*接受键盘数据*/ printf("八进制= %o \n十六进制= %x \n",num,num); printf("八进制= %#o \n十六进制= %#x \n",num,num); /*浮点型变量及用法*/ printf("weight is "); scanf("%f", &weight);/*%f从键盘读取一个浮点数,&指定将输入的值赋予名为weight的变量*/ value = weight * 14.5833; /*给value赋值:scanf()函数输入给变量wight的值 乘14.5833*/ printf("value is %.2f.\n",value);/*%.2f:.2修饰f,精确控制输出格式2位小数;f 浮点型*/ /*字符型变量及用法*/ ch1 = 'A'; ch2 = 'B'; printf("%c is %d\n",ch1,ch1); printf("%c is %d\n",ch2,ch2); printf("entre a code.\n"); scanf(" %c",&ch3);/*"%c"应改为" %c",因上条语句中\n残留在缓冲区, \n被scanf()函数“错误”地赋值给了ch3;用加空格的方法可以清除缓冲区残留的信息。还有其他方法还未接触以后慢慢学。*/ printf("%c is %d \n",ch3,ch3); /*字符串用法*/ printf("输入一个字符串:\n"); scanf("%s",ch4);/*%s转换说明符,用来处理字符串输入和输出;ch4前没有前缀&。 scanf()函数读取字符串时遇到空格、制表符、换行符时停止读取后边的字符。*/ printf("字符串为:%s\n",ch4); num = strlen(ch4);/*strlen()取字符串长度函数*/ weight = density;/*将常量符号值赋给weight变量*/ printf("字符数:%d density:%.1f\n",num,weight);/**/ xh();/*调用xunhuan函数,xunhuan示例代码在下边编写*/ return 0;} /*函数体结束*/
void butler (void)/*butler 函数*/{ printf("butler函数已执行。\n");}
void xh (void) /*循环示例程序段*/{/*xh函数体开始*/ int num; printf("输入一个小于21的整数 \n"); scanf("%i\n",&num); while (num < 21)/*num < 21为循环条件*/ {/*while循环体开始*/ printf("%i\n",num); num = num + 1; }/*while循环体结束*/}/*xh函数体结束*/

--------------------------------------------------------------------------
疑惑,为什么不是输入5回车后立刻执行循环语句。
展开
 我来答
kingfeng588
2012-07-09 · TA获得超过2494个赞
知道大有可为答主
回答量:1475
采纳率:50%
帮助的人:1769万
展开全部
以下函数有错误。

void xh (void) /*循环示例程序段*/
{/*xh函数体开始*/
int num;
printf("输入一个小于21的整数 \n");
scanf("%d",&num); // 这里你写成了%i\n,修改为%d

while (num < 21)/*num < 21为循环条件*/
{/*while循环体开始*/
printf("%d\n",num); // 这里你写成了%i,修改为%d
num = num + 1;
}/*while循环体结束*/
}/*x
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沧海雄风2009
2012-07-09 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8525
采纳率:79%
帮助的人:2646万
展开全部
int num;
printf("输入一个小于21的整数 \n");
scanf("%i\n",&num); 改为 scanf("%i",&num);

否则的话 你输入数字后回车 只是把数字输入了 还没有输入\n ,
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-07-09
展开全部
不知道哦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式