C语言中输入一串以空格分隔的整型数据,怎么办?
答案:5 悬赏:50
解决时间 2021-02-02 11:43
- 提问者网友:烟刺痛了眼
- 2021-02-01 23:43
数据个数不知道,只知道数据间以空格分隔,最后一个数据之后也有空格,然后再回车输入终止。怎么实现这样的输入呢?
最佳答案
- 二级知识专家网友:闲懒诗人
- 2021-02-02 00:00
需要准备的工具:电脑。
1、当要向输出设备(显示屏、打印机等)输出字符时,可以用 c 格式描述符控制。如下所示代码即输出字符ch (a) :char ch = 'a';printf("Character: %c \n",ch);
2、在需要输出十进制数字时,可以用d 或 i 控制输出,如下所示: int dcm = 24; printf("Decimal number: %d\n",dcm); printf("Decimal number: %i\n",dcm);
3、八进制输出如下所示,利用 o 或 #o 控制输出八进制格式数字:int oct = 24;printf("Octal1: %o\n",oct);printf("Octal2: %#o\n",oct);
4、十六进制输出同八进制一样,利用 x 或 #x 可以输出控制十六进制格式数字,如下所示:int hexi = 234;printf("Hexidecimal1: %x\n",hexi);printf("Hexidecimal2: %#x\n",hexi);
5、 字符串输出,在C语言中输出字符串可以使用s控制即可。
1、当要向输出设备(显示屏、打印机等)输出字符时,可以用 c 格式描述符控制。如下所示代码即输出字符ch (a) :char ch = 'a';printf("Character: %c \n",ch);
2、在需要输出十进制数字时,可以用d 或 i 控制输出,如下所示: int dcm = 24; printf("Decimal number: %d\n",dcm); printf("Decimal number: %i\n",dcm);
3、八进制输出如下所示,利用 o 或 #o 控制输出八进制格式数字:int oct = 24;printf("Octal1: %o\n",oct);printf("Octal2: %#o\n",oct);
4、十六进制输出同八进制一样,利用 x 或 #x 可以输出控制十六进制格式数字,如下所示:int hexi = 234;printf("Hexidecimal1: %x\n",hexi);printf("Hexidecimal2: %#x\n",hexi);
5、 字符串输出,在C语言中输出字符串可以使用s控制即可。
全部回答
- 1楼网友:转身后的回眸
- 2021-02-02 02:26
用while循环判断就行
每次获取后 用getchar吃掉一个空格
- 2楼网友:何以畏孤独
- 2021-02-02 01:35
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define max_number_len 32
int getword(char buf[], int len, int *isend)
{
int i=0;
int ch;
*isend = 0;
do{
ch = getchar();
}while( !(ch==eof || ch=='\n' || isdigit(ch)) );
while( isdigit(ch) )
{
if(i<len-1){
buf[i++] = ch;
}
ch = getchar();
}
buf[i] = '\0';
if( ch==eof || ch=='\n' )
*isend = 1;
return i;
}
int main(int argc, char *argv[])
{
char buf[max_number_len];
int isend;
do{
if( getword(buf, max_number_len, &isend)>0 )
{
int n = atoi(buf);
//请把n 存起来,存到数组或者链接中
printf("%d ", n);
}
}while(!isend);
printf("\n");
return 0;
}
- 3楼网友:不羁的心
- 2021-02-02 01:22
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define MAX_NUMBER_LEN 32
int getword(char buf[], int len, int *isend)
{
int i=0;
int ch;
*isend = 0;
do{
ch = getchar();
}while( !(ch==EOF || ch=='\n' || isdigit(ch)) );
while( isdigit(ch) )
{
if(i<len-1){
buf[i++] = ch;
}
ch = getchar();
}
buf[i] = '\0';
if( ch==EOF || ch=='\n' )
*isend = 1;
return i;
}
int main(int argc, char *argv[])
{
char buf[MAX_NUMBER_LEN];
int isend;
do{
if( getword(buf, MAX_NUMBER_LEN, &isend)>0 )
{
int n = atoi(buf);
//请把n 存起来,存到数组或者链接中
printf("%d ", n);
}
}while(!isend);
printf("\n");
return 0;
}
- 4楼网友:一场云烟
- 2021-02-02 01:12
1. scanf函数输入时,自动以空格作为分隔符,不会读入空格。在scanf函数输入数据时,不需要考虑空白类字符的存在(空格,跳格,换行)。
2. 例程:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int arr[10] = {0};
int numdoll = 0;
while (scanf("%d",&arr[numdoll]) != EOF && getchar() != '\n') //循环读入多组整型数据,都以空格分隔。
numdoll++;
for(int i = 0; i < 10; i++)
printf("%d ", arr[i]);
return 0;
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯