运动会上放的纯音乐:高手来帮我看个C程序,急~~

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/03 02:58:38
#include <stdio.h>
main()
{
char p;
int n = 0;
scanf("%c",&p);
while(p != '#'){
printf("number %5d,%5c\n",++n,p);
scanf("%c",&p);
}
}
我程序的目的是要每输入一个字符都会打印出其输入的序号和起本身.直到输入字符'#'为止
高手帮我看看哪儿错了
谁能告诉我我这程序为什么会在双数次的循环时会跳过scanf("%c",&p); 这一步(单步执行就会发现这种情况)?而事实上程序是在这一步打印出了回车.从逻辑上来讲这没理由啊.

你是不是不要打印出回车,不然你的程序是对的阿。
下面加个判断就行了
#include<stdio.h>
main()
{
char p;
int n = 0;
p=getchar();
while(p != '#'){
if(p == '\n') { p=getchar() ; continue ; }
printf("number %5d,%5c\n",++n,p);

p=getchar();
}
}

给你个修改过的,成功运行:
#include <stdio.h>
main()
{
char p;
int n=0;
p=getch();
while(p != '#'){
printf("number %5d,%5c\n",++n,p);
p=getch();
}
}

改成unsigned char 就可以了。

unsigned char p;

你写的这个程序只有在输入一个字符后敲回车才行.程序是没有问题的,但是要实现输一个字符之后,自动打印本身的话,用这些语句是无法实现的,只有调用键盘中断.用bioskey()这个函数来实现,具体用法,你查一下资料.

#include<stdio.h>
main()
{
char p;
int n=0;
p=getchar();
while(p!='#')
{
printf("number %5d,%5c\n",++n,p);
p=getchar();
}
}
我试过,100%正确!