【发布时间】:2014-11-10 19:40:18
【问题描述】:
我正在尝试编写一个代码,该代码通过用户获取数字并读取字符“e”或“”(空格)以及数字。我的意思是数字“e”或空格“e”数字“e”或空格等等。但我得到的数字很荒谬。程序将显示添加的号码。如果输入 '\n' 将停止取号(scanf 将停止)。 (我很抱歉标题,因为我对标题一无所知) 我哪里错了。感谢您对所有赞赏的回答。
示例输入:
- e 1 8 7 2 3 6
- 或
- e 1 e 8 e 7 e 2 e 3 e 6
#include <stdio.h>
#define MAX 10
void addq ( int *, int, int *, int * ) ;
void test();
int main( )
{
test();
return 0;
}
void test(){
int arr[MAX] ;
int i, front, rear,num ;
char ch;
front = rear = -1 ;
scanf("%c",&ch);
/* initialise data member */
switch(ch){
case 'e':
case ' ':
for ( i = 0 ; i < MAX; i++ ){
arr[i] = scanf("%d",&num);
scanf("%c",&ch);
addq ( arr, num, &front, &rear );
}
break;
}
printf ( "\nElements in the circular queue: " ) ;
display ( arr ) ;
}
void display ( int * arr )
{
int i ;
printf ( "\n" ) ;
for ( i = 0 ; i < MAX ; i++ )
printf ( "%d\t", arr[i] ) ;
printf ( "\n" ) ;
}
/* adds an element to the queue */
void addq ( int *arr, int item, int *pfront, int *prear )
{
if ( ( *prear == MAX - 1 && *pfront == 0 ) || ( *prear + 1 == *pfront ) )
{
printf ( "\nQueue is full." ) ;
return ;
}
if ( *prear == MAX - 1 )
*prear = 0 ;
else
( *prear )++ ;
arr[*prear] = item ;
if ( *pfront == -1 )
*pfront = 0 ;
}
【问题讨论】:
标签: c arrays function for-loop switch-statement