c语言 中输入一组数量未知数据怎么表示?

作者&投稿:宾货 (若有异议请与网页底部的电邮联系)
C语言中如何给一个数组输入一组总数未知的数~

#include<stdio.h>
#include<ctype.h>
int main()
{
int a[1000];
char c;
int i=0;
int n=0;
while((c=getchar())!='
')
{
if(isdigit(c))
{
ungetc(c,stdin);//将c送回输入流
scanf("%d",&a[n++]);
}
}
for(i=0;i<n;i++)
{
printf("%d",a<i>);
}
return 0;
}

扩展资料:printf()函数的用法
1.printf()函数的调用格式为:printf("<格式化字符串>",<参量表>);
//__stdcall
int __cdecl printf(const char*p,...);
...可变参数
printf在打印浮点数,不论原来是双精度还是单精度,都变为双精度(8字节)
打印1字节(char)2字节(short)4字节(int)==>4字节,除了long long(8字节)
void main()
{
int a=10;
folat ft=12.25f;
printf("%d%d
",a,ft);
}
%d格式控制符--不具有强转能力
A格式化字符串包括两部分内容:
一部分是正常字符,这些字符将按原样输出;
另一部分是格式化规定字符,以"%"开始,后跟一个或几个规定字符,用来确定输出内容格式。
1.d/i有符号十进制形式输出(正数不输出符号)
2.u无符号十进制形式输出
3.o无符号八进制形式输出(不输出前缀0)
4.x无符号十六进制形式输出(不输出前缀Ox),并以小写abcdef表示。
5.X无符号十六进制形式输出(不输出前缀Ox),并以大写ABCDEF表示。
6.c输出单个字符
7.s输出字符串
8.f以小数形式输出单、双精度实数
9.E/e用科学计数法表示浮点数
10.G/g以%f或%e中较短的输出宽度输出单、双精度实数
+++++++++
void main()
{
long long x=0x12345678901357;
printf("%x
",x);//=>78 90 13 57
printf("%lx
",x);//=>78 90 13 57
printf("%llx
",x);//=>12345678901357
}
B参量表
需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用","分开,且顺序一一对应
例题:
void main()
{
char a=128;
printf("%d
",a);//=>-128
printf("%x
",a);//=>ffff ff80
}
当printf调用,a给可变参数,自然而然扩展为4字节,a是有符号数,扩展的时候加符号位
1111 1111 1111 1111 1111 1000 0000=>ffff ff80
unsigned char a=128;
printf("%x
",a);==>80

C没有提供现成的办法,要自己写一段代码实现,具体是:先动态申请一块内存空间,比30字节,向其中输入数据,等到输入满时再申请另一块比30大20或30的内存空间,把前面申请的内存中的内容全部拷贝到新申请的内存中并把前面申请的空间释放。如此往复交替……

你好!!

可以按照下面的方法实现:

    char a[100];
    scanf("%s",&a);

    或

    char a[100];
    gets(a);


C中接收输入的有getchar()和scanf(),getchar是获取单个字符的,如换行,空格等。如果是一个串的话,用scanf吧,这个函数的用法,你可以百度,解释比较详尽。


file*
fp=fopen("c:\文件路径你可以自己写\文件名.dat",
"w");
创建一个文件,这个文件如果存在就会被覆盖掉;用fprint(fp,
"%d\n",
data)
写入你的数据比如这里的data

输入数量不定的数据,那么首先要输入数据的个数,然后再输入数据才行。

int * a;// 以整型数据为例
int n;
printf("请输入整型数据个数:");
scanf("%d", &n);
if (NULL == (a = (int *)malloc(n * sizeof(int)) ));//根据数据个数申请空间
{
    printf ("[-] Not Enough Memory: ");
    exit(1);
}
else
    for (i = 0; i < n; i++)
        scanf("%d", &a[i]);



上蔡县15297304476: c语言 中输入一组数量未知数据怎么表示? -
圭赖博乐: C中接收输入的有getchar()和scanf(),getchar是获取单个字符的,如换行,空格等.如果是一个串的话,用scanf吧,这个函数的用法,你可以百度,解释比较详尽.

上蔡县15297304476: C语言中,如何利用数组输入不知道个数的若干数, -
圭赖博乐: 在数据结构里面,一般使用动态分配空间的方式,malloc首次分配和realloc重新分配更大空间.你可以先malloc一个比较大点的空间,比如20个int的数组空间,当输入个数超过20时,realloc一片20+10的空间,也就是一次性增大10个int的空间,再输入到30个了,就再realloc一片30+10的空间.需要一个变量存贮当前最大空间,然后一个变量记录你输入了多少个数据.

上蔡县15297304476: C语言中逐个获取输入的未知个数数据的常用方法是什么? -
圭赖博乐: 1 折中方法,可以在输入前打印规则,比如说“每个数据用逗号分隔”、“每个数据用?分隔”;2 如果一定要用空格的话,可以用gets函数来接收输入的字符串 格式:gets(字符数组名);功能:gets函数用于将输入的字符串内容存放到指定的...

上蔡县15297304476: 关于c语言 怎么在不确定数据个数的情况下输入数据并运行 -
圭赖博乐: 肯定是有终止条件的,比如回车、文件结束符(ctrl+z)等.你的问题可以通过将输入作为一个字符串整体读入,然后在程序中对字符串进行解析分离出数据来解决.

上蔡县15297304476: 如何用C语言编写输入不知道个数目的数组?并输出最大值与最小值?要用C语言不能用C++ -
圭赖博乐: #include void main() { int j,k; for(j=0;;j++) { int a[100]; int i,m; printf("--------------------\n"); printf("--------------------\n"); printf("请输入一个一维数组,\n当输入0时完成输入:\n"); printf("--------------------\n"); for(i=0;i { scanf("%d",&a[i]); if(a[i]=...

上蔡县15297304476: 问一下如果要从键盘输入若干个数据用c语言应该怎么编 -
圭赖博乐: 123456789 #include <stdio.h> intmain() { inta, b, c; scanf("%d%d%d", &a, &b, &c); // 输入时请用空格分隔,如:23 57 9 printf("a = %d, b = %d, c = %d\n", a, b, c); return0; }

上蔡县15297304476: C语言中如何将未知个数的数存放在一个数组中? -
圭赖博乐: 你可以用malloc来实现.malloc是用于动态分配的,即可以在你需要的时候进行分配 函数返回分配地址的空间首地址,可以这样实现 int n; scanf("%d",&n); int *a=(int*)malloc(n*sizeof(int)); malloc的参数是分配空间的大小,n*sizeof(int)表示分配n个整型的空间 因为malloc返回的首地址,但是类型是void型,所以强制转换成int型,在实际应用中 可以根据需要转换成你所需要的类型

上蔡县15297304476: C语言如何输入不明个数的数字并用于运算 -
圭赖博乐: 问题是,要做什么运算.....数组可以预留足够多的空间,或者说,可以动态分配 ——————————————————————————

上蔡县15297304476: C语言中怎么输入不确定的数 -
圭赖博乐: 我给你写一个,绝对没有输入数目的限制.用指针来解决这个问题.数组是不行的. #include<stdio.h> #include<alloc.h> void main() {int *p,i,k; scanf("%d",&k);/*你想输入几个数,就输入几.*/ p=(int *)malloc(20*sizeof(int));/*申请20个整数类...

上蔡县15297304476: 在C语言中,比如题中要输入若干行数据(例:姓名 性别 出生日期),但不知道具体数目,怎么判断输入结束 -
圭赖博乐: 一般这样的题目是用特定的字符来结束输入的 某个输入输入特定的值来结束 如姓名是第一个输入的,当姓名为空时结束输入 就是一个死循环加上一个if(条件) break来结束 或者用询问是人还有输入的一个变量来判断 如 printf("是否还有输入"); scanf("%c",&s); if(s=='N'||s=='n'); break; 跳出循环

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网