如何在C语言中用scanf输入数组

作者&投稿:主鱼 (若有异议请与网页底部的电邮联系)
C语言用scanf给数组赋值问题~

可以参考下面的代码:
#include
int main()
{
int a[3][2], i, m;
for (i = 0; i < 3; i++)
{
for (m=0;m<2;m++)
scanf("%d", &a[i][m]);
for (i = 0; i < 3; i++)
{
for (m=0;m<2;m++)
printf("%d
", a[i][m]);
}
return 0;
}

扩展资料:
函数原型
int scanf(const char * restrict format,...);
函数 scanf() 是从标准输入流stdin(标准输入设备,一般指向键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。
函数的第一个参数是格式字符串,它指定了输入的格式,并按照格式说明符解析输入对应位置的信息并存储于可变参数列表中对应的指针所指位置。每一个指针要求非空,并且与字符串中的格式符一一顺次对应。
参考资料来源:百度百科-scanf (计算机语言函数)

不一样。
C语言的字符串为数组形式,而数组的名称可以表示其地址,故对字符串输入不需要加地址符。而单独的字符、整型变量等的名称不能直接表示地址,故需要加地址符。数组名就代表了该数组的地址。整个数组是一块连续的内存单元,数组名所代表的地址为第0个元素的地址,c就代表c[0]的地址。
设数组c的首地址为0X2000,也就是说c[0]地址为0X2000,则数组名c就代表这个首地址。因为c已经表示地址,所以在c前面不能再加取地址符&。

字符串数据类型是建模在形式字符串的想法上的数据类型。字符串是几乎在所有编程语言中可以实现的非常重要和有用的数据类型。
扩展资料
为了避免这种情况,可多设几个字符数组分段存放含空格的串。程序可改写如下:
#include
intmain()
{
char str1[20], str2[20], str3[20];
printf("Input string: ");
scanf("%s %s %s %s",str1,str2, str3);
printf("Your string: %s %s %s %s
",str1, str2, str3);
}
运行结果:
Input string: C C++ Java
Your string: C C++ Java

#include  

main()  

struct   

int num;  

char name[20];  

char sex;  

int age;  

stu[5];  

int i;  

for(i=0;i<5;i++)  

printf("请输入信息
");  

scanf("%d",&stu[i].num);  

scanf("%s",&stu[i].name);  

scanf("%c",&stu[i].sex);    //在%c之前加一个空格

scanf("%d",&stu[i].age);  

for(i=0;i<5;i++)  

printf(  "*%s*",stu[i].name);  

扩展资料:

函数 scanf() 是从标准输入流stdin [1]  (标准输入设备,一般指向键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。

函数的第一个参数是格式字符串,它指定了输入的格式,并按照格式说明符解析输入对应位置的信息并存储于可变参数列表中对应的指针所指位置。每一个指针要求非空,并且与字符串中的格式符一一顺次对应。

参考资料来源:百度百科-scanf



#include  

main()  

{  

struct   

{  

int num;  

char name[20];  

char sex;  

int age;  

}stu[5];  

int i;  

for(i=0;i<5;i++)  

{
printf("请输入信息
");  

scanf("%d",&stu[i].num);  

scanf("%s",&stu[i].name);  

scanf("%c",&stu[i].sex);    //在%c之前加一个空格  

scanf("%d",&stu[i].age);  

}  

for(i=0;i<5;i++)  

{  

printf(  "*%s*",stu[i].name);  

}  

}

拓展资料

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。





#include<stdio.h>


int main()


{


int n;


int t=0;


scanf("%d",&n);


char arr[n];


int i;


for(i=0;i<n;i++)


{


scanf(" %c",&arr[i]);


}


printf("%c
",arr[0]);


for(i=0;i<n;i++)


{


if(arr[i]=='L')


{


t=t+1;


}


else if(arr[i]=='R')


{


t=t-1;


}


}


printf("%d
",t); 

}

源代码截图:

参考资料:百度百科-网页链接

扩展资料:

C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。[1] 目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。

C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。

其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。



执行scanf的代码:

#include<stdio.h>
int main()
{
int n;
int t=0;
scanf("%d",&n);
char arr[n];
int i;
for(i=0;i<n;i++)
{
scanf("%c",&arr[i]);
}
printf("%c
",arr[0]);


for(i=0;i<n;i++)
{
if(arr[i]=='L')
{
t=t+1;
}
else if(arr[i]=='R')
{
t=t-1;
}
}
printf("%d
",t);
}

可以观察到,arr[0]并未存入字符,t的数值比预期少1

原因:这种情况通常发生在前面已经有了输入语句,而当前的scanf是在接收字符(即用%c控制输入)时。由于前面的输入语句(不一定是scanf)把最后输入的'
'遗留在了输入缓冲区,而当前的scanf("%c",...);又会把'
'当一个字符接收,又由于scanf在%c控制下只接收一个字符,所以就不能接收正式输入的字符了。解决这一问题的最简单办法是在接收字符的scanf的控制符"%c"中的%前加一个空格写成" %c",把前一次输入遗留在输入缓冲区里的所有广义空格(' '、''、'
'等)都吸收掉。在接收字符的scanf前加getchar()等的办法其实是有漏洞的——当缓冲区里只遗留了一个广义字符时可正常工作,若多于一个则同样出错。

改正错误之后的代码:

#include<stdio.h>


int main()


{


int n;


int t=0;


scanf("%d",&n);


char arr[n];


int i;


for(i=0;i<n;i++)


{


scanf(" %c",&arr[i]);


}


printf("%c
",arr[0]);




for(i=0;i<n;i++)


{


if(arr[i]=='L')


{


t=t+1;


}


else if(arr[i]=='R')


{


t=t-1;


}


}


printf("%d
",t);

}

将scanf中的%c变为 %c,得到预期结果。



非char类型数组,只能一个一个的输入数组元素!
char 类型数组,可以用字符串操作输入一连串的字符。char str[100] ; scanf("%s", str );


C语言中结构的定义不带名称与带了名称有什么不同?
个人认为没什么多大的不同,我也关注中.希望有高手说一下.其实typedef是自定义类型,像第一个的typedef有点多余的意思,因为后面的都没有说出自己的自定义是什么类型,第二就是最常见的了,以后你写这个结构体的时候就可以用SC来代表struct C,而不用每一次用到这个结构体时都写成struct C \/*名*\/ 第三...

#include<stdio.h>在C语言中是必须要的吗?
先跟你说.h文件 .h文件就是头文件,其实它是为了方便用的,我们常用的stdio.h是包含关于C程序的输入输出的各种信息,当编译时就将头文件包含进去,比如:我做一个头文件 include <stdio.h> define PR printf \/*程序中的PR将在编译时自动转化为printf*\/ define SC scanf \/*程序中的SC将在编译时...

C语言:预处理是什么意思?就是看不懂这句话的解释!越具体越好,也可以通 ...
预处理,再编译前需要做的工作。预处理主要处理两部分东西,头文件和宏。对于头文件,做展开操作。比如再某个.c中include了一个头文件,这一行预处理时就会被替换为头文件的内容。对于宏,比如你define了一个宏。这里就会把程序里面所有用到这个宏的地方替换掉。当然宏还有其他操作,但是它们都是再预处...

C语言的一个问题。
sc是signed char,内存中二进制表示的是11111011。求uc,sc的初值。unsigned char是无符号的,00001100就是十进制中的12。signed char是有符号的,在内存中以补码形式存在,11111011首位是1,因此是负数,按位取反,末尾加1得到:00000101是十进制的5,因此是-5.所以:unsigned char uc=12;signed char ...

男朋友跟我提出sc是什么意思
11. sc是“Standard C”的缩写,意思是标准C语言。13. sc是“Single Cartridge”的缩写,意思是单筒。14. sc是“Single Cover”的缩写,意思是单封面。15. sc是“Self-Centered”的缩写,意思是自我中心。16. sc是“Structured Chart”的缩写,意思是结构图。19. sc是“Shared Castle”的缩写,意思...

c语言中,printf函数是不是float和double都是用%f,scscanf则是...
二者一样 float用f double用lf

SystemC语言学习笔记
基础语法概览 首先,了解基础语法是关键。SystemC的基本构造包括SC_MODULE定义子模块,sc_in, sc_out, sc_inout类型的端口声明,以及功能描述的无参函数,如process(),其在构造函数中通过SC_METHOD()注册。这些是构建模块逻辑的基本构件。子模块声明的艺术 子模块的声明不仅涉及端口声明,还包括无...

c语言scanfsc语言scanf介绍
1、scanf是C语言中的一个输出函数。与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include 。2、(在有一些实现中,printf函数与scanf函数在使用时可以不使用预编译命令#include 。)它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。

执行机构 SC语言 指什么
所谓SC语言是指Simens在组态软件中提供类C语言的脚本, 包括一个调试环境。

C语言中,include是什么意思?
在C系统的编程语言中,#include是为了声明在这个地方插入别的文件中的代码。以#开头,包含某个头文件,如#include <stdio.h>,就是相当于引用stdio.h这个文件,然后这个文件里面所定义的一些函数就可以直接使用了。

顺德区13778095868: c语言问题:怎样用scanf获取int类型的数组 -
唱砍格列: c语言学习之基础知识点介绍(三):scanf函数 本节继续介绍c语言的基础知识点.scanf函数:用来接收用户输入的数据.语法:scanf("格式化控制符",地址列表);取地址要用到取地址符:&(shift+7)例如:int num =0; csanf("%...

顺德区13778095868: C语言中如何用scanf 函数输入二维数组 -
唱砍格列: 两个for函数再加个scanf函数 再看看别人怎么说的.

顺德区13778095868: c语言中scanf函数的用法 -
唱砍格列: 比如int i; scanf("%d",&i);//&是取地址运算符,取i的地址 又如int a[10]; scanf("%d",a);//数组名本身就是一个数组的首地址 总结就是scanf(" 格式控制", 地址);

顺德区13778095868: C语言如何在调用函数中输入二维字符数组char c[][] 用gets或 scanf -
唱砍格列: gets(c[0])输入第一行的字符串 gets(c[1])输入第二行的字符串,以此类推. scanf("%s",c[0])输入一行的字符串,以此类推.

顺德区13778095868: C语言中用scanf和循环语句是怎么给数组一一赋值的,希望说得详细点 -
唱砍格列: 定义一个变量,从下标0开始,一直到N-1个为止.这就是输入和输出的循环

顺德区13778095868: C语言中如何定义两个字符数组并用scanf输入? -
唱砍格列: #include <stdio.h> #include <stdlib.h> int main() { int n, *a, i; printf("请输入数组长度:"); scanf("%d", &n); a = malloc(sizeof(int) * n); /*分配内存*/ printf("请输入%d个数:\n", n); for(i = 0; i < n; i++) scanf("%d", a + i); printf("您输入的数是:\n"); for(i = 0; i < n; i++) printf("%d ", a[i]); free(a); /*释放内存*/ return 0; }

顺德区13778095868: c语言中函数里面怎么输入字符串数组 -
唱砍格列: 在C语言中,字符串是以字符数组方式保存的,于是字符串数组可以用二维字符数组存储. 输入时,每次输入字符串数组的一个元素(一行),根据需要,使用scanf或gets进行输入. 如: char str[10][100]; //定义字符串数组,供10行,每行最多100个字节数据. int i;for(i = 0; i < 10; i ++)scanf("%s",str[i]);//输入10行字符串数据.

顺德区13778095868: C语言字符型二维数组用scanf和gets如何输入,举个例谢谢 -
唱砍格列: #include <stdio.h> int main() { char s[3][20]; int i; printf("输入第一行:"); gets(s[0]); printf("输入第二行:"); scanf("%s",s[1]); for(i=0;i<2;i++) { printf("%s\n",s[i]); }return 0; }

顺德区13778095868: C语言中用scanf和循环语句是怎么给数组赋值的? -
唱砍格列: #include int main(void) { int name[10]; int n; for (int i=0;i<10;i++) { scanf("%d",&n);//输入函数,后边的&n是说存入n的所在的地址 name[i] = n;//再把输入数据给数组 } for (i=0;i<10;i++) { printf("%d\n",name[i]); } return 0; }

顺德区13778095868: c语言如何用scanf -
唱砍格列: scanf是C语言中的百一个输入函数,与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include .(度在有一些实现中,printf函数与scanf函数在使用时可以不使用预编译命令#include .)它是格式输入函数,即按用户指定的格式从键盘上把数据输入到版指定的变量之中.scanf函数返回成功读入的数据项数,读入数据时遇到了“文件结束权”则返回EOF.

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