c语言scanf输入数组,C语言中如何用scanf函数输入二维数组?
c语言scanf输入数组,C语言中如何用scanf函数输入二维数组?详细介绍
本文目录一览: C语言中如何用scanf函数输入二维数组?
inta[8][8];\x0d\x0afor(i=0;i<8;i++)\x0d\x0afor(j=0;j<8;j++)\x0d\x0ascanf("%d",&a[i][j]);\x0d\x0a\x0d\x0a那句scanf也可以这样写\x0d\x0ascanf("%d",a[i]+j);
急急!!!如何用c语言输入和输出一个二维数组??
#include
#include
int main()
{
int a[2][2];
int i,j;
for (i=0;i<2;i++)
{
for (j=0;j<2;j++)
{
scanf("%d ",&a[i][j]);
}
}
for(i=0;i<2;i++)
for(j=0;j<2;j++)
printf("%d",a[i][j]);
return 0;
}
运行成功
如何在C语言中用scanf输入数组
#include
main()
{
struct
{
int num;
char name[20];
char sex;
int age;
}stu[5]; int i;
for(i=0;i<5;i++)
{printf("请输入信息\n");
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
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\n",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\n",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
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\n",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\n",t);" }
可以观察到,arr[0]并未存入字符,t的数值比预期少1
原因:这种情况通常发生在前面已经有了输入语句,而当前的scanf是在接收字符(即用%c控制输入)时。由于前面的输入语句(不一定是scanf)把最后输入的'\n'遗留在了输入缓冲区,而当前的scanf("%c",...);又会把'\n'当一个字符接收,又由于scanf在%c控制下只接收一个字符,所以就不能接收正式输入的字符了。解决这一问题的最简单办法是在接收字符的scanf的控制符"%c"中的%前加一个空格写成" %c",把前一次输入遗留在输入缓冲区里的所有广义空格(' '、'\t'、'\n'等)都吸收掉。在接收字符的scanf前加getchar()等的办法其实是有漏洞的——当缓冲区里只遗留了一个广义字符时可正常工作,若多于一个则同样出错。
改正错误之后的代码:
#include
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\n",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\n",t);
}
将scanf中的%c变为 %c,得到预期结果。
非char类型数组,只能一个一个的输入数组元素!
char 类型数组,可以用字符串操作输入一连串的字符。char str[100] ; scanf("%s", str );
用for循环实现.如:
int i[10], j;
for(j=0; j<9; j++)
scanf("%d", &i[j]);
#include
main()
struct
int num;
char name[20];
char sex;
int age;
stu[5];
int i;
for(i=0;i<5;i++)
printf("请输入信息\n");
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
</n;i++)
</n;i++)
</n;i++){scanf("%c",&arr[i]);}printf("%c\n",arr[0]);for(i=0;i
</n;i++)
</n;i++)
c语言 怎样用scanf输入数组变量?
/*假设变量数组都已正确定义好*/
scanf("%d",&n);/*输入元素个数*/
for(i=0;i
<n;i++)
scanf("%d",&a[i]);
#include
void main(){ int a[10], i; // 输入10个数,放入数组 for(i=0; i<10; i++) { scanf("%d", &a[i]); } // 输出 for(i=0;i<10;i++) { printf("%d\n", a[i]); }}用循环语句实现
</n;i++)
如何用scanf函数输入数组的第二个元素?
#include"stdio.h"
int main()
{
int a[10]={0},i=0; //第定义数组
scanf("%d",&a[1]); //接受输入并赋值给数组的弟2个元素
for(i=0;i<10;i++) // 打印数组
printf("%d",a[i]);
}
用c++中的cin吧,这个比较的简单。
int a[10];
cin>>a[1]即可输入数组的第一个元素了。
scanf("%d",&a[1]);
scanf("格式指定符",数组名+1);
1、首先在电脑中新建一个C语言文件,命名为ceshi,如下图所示。
2、然后写上c语言文件的开头,如下图所示。
3、接着写上main函数,如下图所示。
4、然后定义一个变量price,如下图所示。
5、然后使用scanf,第一个参数是输入参数的类型,这里使用%d,后面将这个输入的值赋值给price。
6、最后编译运行这个程序,如下图所示就完成了。
用scanf输入数据到数组中需要加&吗?
执行scanf的代码:
#include
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\n",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\n",t);" }
可以观察到,arr[0]并未存入字符,t的数值比预期少1
原因:这种情况通常发生在前面已经有了输入语句,而当前的scanf是在接收字符(即用%c控制输入)时。由于前面的输入语句(不一定是scanf)把最后输入的'\n'遗留在了输入缓冲区,而当前的scanf("%c",...);又会把'\n'当一个字符接收,又由于scanf在%c控制下只接收一个字符,所以就不能接收正式输入的字符了。解决这一问题的最简单办法是在接收字符的scanf的控制符"%c"中的%前加一个空格写成" %c",把前一次输入遗留在输入缓冲区里的所有广义空格(' '、'\t'、'\n'等)都吸收掉。在接收字符的scanf前加getchar()等的办法其实是有漏洞的——当缓冲区里只遗留了一个广义字符时可正常工作,若多于一个则同样出错。
改正错误之后的代码:
#include
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\n",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\n",t);
}
将scanf中的%c变为 %c,得到预期结果。
如果像楼上的代码那样,逐个输入数组中的数,是要用&的,但是如果是字符数组,以字符串形式整体输入,就不用,示例:
char a[20];
scanf("%s",a);
直接输入字符数组a中的全部内容就可以了,当然,长度不能超过19
要加&。代码(1)是正确的,代码(2)虽能通过编译,但执行时就要中断报错,因为把b[i]当地址对等了,而实际上b[i]只是个变量!scanf()函数要求接收输入值的必须是实际意义上的“变量地址”而不能是“变量”。
应该要加的 你测试一下这代码就知道了
(1)#include
int main()
{
int b[10],i;
for(i=0;i<10;i++)
{
scanf("%d",&b[i]);
}
for(i=0;i<10;i++)
{
printf("%d ",b[i]);
}
return 0;
}
(2)#include
int main()
{
int b[10],i;
for(i=0;i<10;i++)
{
scanf("%d",b[i]);
}
for(i=0;i<10;i++)
{
printf("%d ",b[i]);
}
return 0;
}
逐个输入数组中的数,是要用&的,但是如果是字符数组,以字符串形式整体输入,就不用,示例:
#include
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\n”,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\n”,t);" }
可以观察到,arr[0]并未存入字符,t的数值比预期少1
原因:这种情况通常发生在前面已经有了输入语句,而当前的scanf是在接收字符(即用%c控制输入)时。由于前面的输入语句(不一定是scanf)把最后输入的'\n'遗留在了输入缓冲区,而当前的scanf(“%c”,...);又会把'\n'当一个字符接收,又由于scanf在%c控制下只接收一个字符,所以就不能接收正式输入的字符了。
解决这一问题的最简单办法是在接收字符的scanf的控制符“%c”中的%前加一个空格写成“ %c”,把前一次输入遗留在输入缓冲区里的所有广义空格(' '、'\t'、'\n'等)都吸收掉。在接收字符的scanf前加getchar()等的办法其实是有漏洞的——当缓冲区里只遗留了一个广义字符时可正常工作,若多于一个则同样出错。
改正错误之后的代码:
#include
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\n”,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\n”,t);
}
将scanf中的%c变为 %c,得到预期结果。
扩展资料:
c语言各种输出方法实例:
#include
main()
{
int a, b;
scanf( “%d%d”, &a, &b );
printf( “%d+%d=%d\n”, a, b, a + b );
printf( “%d-%d=%d\n”, a, b, a - b );
printf( “%d*%d=%d\n”, a, b, a * b );
printf( “%d/%d=%d\n”, a, b, a / b );
printf( “%d%%%d=%d\n”, a, b, a % b );
getch();
}
</n;i++)
</n;i++)
</n;i++){scanf(“%c”,&arr[i]);}printf(“%c\n”,arr[0]);for(i=0;i
</n;i++)
</n;i++)
</n;i++){scanf("%c",&arr[i]);}printf("%c\n",arr[0]);for(i=0;i
C语言scanf如果输入的是数组,可以不打&吗?
&表示取地址。
其实从效果上来说不打&和打&是一样的,但是这里要注意 s 和 &s 的类型是不同的。s 相当于 &s[0],而 &s是一个指向 char[80] 的指针,类型是 char(*)[80]。
以下代码可以看出这个不同:
1 #include
2
3 int main()
4 {
5 int array[100] = {0, 1, 2};
6 typedef int (*ARRAY)[100];
7 int* p1 = array;
8 ARRAY p2 = &array;
9 //int* p3 = &array; //这样编译错误
10
11 printf("p1 = 0x%08X\n", p1);
12 printf("p2 = 0x%08X\n", p2);
13 printf("p1[2] = %d\n", p1[2]);
14 printf("p2[2] = %d\n", p2[2]);
15 printf("(*p2)[2] = %d\n", (*p2)[2]);
16
17 getchar();
18 return 0;
19 }
运行结果可能是:
p1 = 0x0022FDF8
p2 = 0x0022FDF8
p1[2] = 2
p2[2] = 2294040
(*p2)[2] = 2
scanf 里面的变量只能是地址。二数组s1[40]中的s1本身就是这个数组的首地址。而加&表示取地址
&是什么功能???
取地址。
数组名可以看做数组首地址。
所以。。。
字串可以
可以,但是输入数据的时候一定也要加上逗号。
用scanf()读取数据时,输入的格式必须和scanf()的格式控制字符串对应,比如说:
1、scanf("%d,%d",&a,&b);因为两个%d之间有一个逗号,所以在输入时两个整数之间只能用逗号分隔,如果用其它符号分隔就会出错(比如说此时用空格、回车分隔就会出错)
2、scanf("%d%d",&a,&b);这个格式控制字符串就可以用空白分隔(空格,回车都可以)
C语言怎么让键盘输入数字到数组里?
scanf("%d",x);int a[x];for (int i=0;i
<x;i++){scanf("a[",i,"]=%d\n",&a[i]);}输入数组时,每输入一个加一个回车即可。
定义一个数组。假设为 int a[100]int a[100];for(i=0;i<100;i++)scanf("%d",&a[i]);输入的每一个数可以用空格间隔即可(也可用换行符)。
scanf("%d",x);
int
a[x];
for
(int
i=0;i
<x;i++)
{
scanf("A[",i,"]=%d\n",&a[i]);
}
输入数组时,每输入一个加一个回车即可。
定义一个数组。
假设为
int
a[100]
int
a[100];
for(i=0;i<100;i++)
scanf("%d",&a[i]);
输入的每一个数可以用空格间隔即可(也可用换行符)。
1、首先打开电脑的编辑软件。然后创建编辑项目。
2、创建文件指针和字符型char。再读取文件内容。
3、然后用for语句进行接受数据。再用getchar语句接受键盘的输入。
4、然后用foput函数。再将数据写入到文件。
5、然后用fclose函数关闭文件。再返回数值。
6、运行程序,输入数值。再打开文件,就可以发现键盘输入的东西,写入到文件。
</x;i++)
</x;i++){scanf("a[",i,"]=%d\n",&a[i]);}输入数组时,每输入一个加一个回车即可。