数组
C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组用来存储一系列数据,但它往往被认为是一系列相同类型的变量。
声明数组
在 C语言 中要声明一个数组,需要指定元素的类型和元素的数量,定义格式如下:
定义格式:[修饰语(可省略)] [数据类型] [数组名(一个或多个)];
要声明一个类型为 double 的包含 10 个元素的数组 balance,声明语句如下:
double balance[10];
初始化数组
可以逐个初始化数组,也可以使用一个初始化语句,如下所示:
double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0};
花括号 { } 之间的值的数目不能大于我们在数组声明时在方括号 [ ] 中指定的元素数目。
例如:
int a[5]; //定长数组
int b[] = {1, 2, 3}; // 初始化一个为int类型长度为3的一维数组
const char c1[] = "ACM";// 字符串即字符数组
const char c2[] = {'A', 'C', 'M'}; // 和上面定义效果一致
int vec[3][4]; // 二维数组
int vec[][3] = {1, 2, 3, 1, 2, 3}; // 初始化一个为int类型2x3的二维数组
输入输出
格式化输入输出
格式化控制符 | 说明 |
---|---|
%c和%hhd | char |
%hx | 以16进制的 输出short类型的整数 |
%i/%d | int |
%u | unsigned int |
%lld | long long |
%llu | unsigned long long |
%I64d | __int64 |
%I64u | unsigned __int64 |
%x/%o | 十六进制/八进制 |
%#x/%#o | 显示各进制数前缀 |
%f/%lf/%Lf | float/double/long double |
%g/%lg | float/double去掉了尾随的0 |
%s | 读入一个字符串,遇空格、制表符或换行符结束。 |
%p | address |
%e | 指数形式,科学计数法 |
%nd 或 %nlld 等 | 也可以作为占位符打印整数数字,n是一个整数。打印结果一定占n个位置,空位置补充空格字符 |
%-nd 或 %-nlld 等 | 打印结果也占n个位置,空位置出现在右边 |
%0nd 或 %0nlld 等 | 打印结果也占n个位置,空位置用字符‘0’填充 |
%n.mf 或 %n.mlf 或%n.mLf | 可以用来打印浮点数,打印结果中整个数字占n个位置,小数点后面占m个位置。 |
//%d - 0 m.n |或者h 格式字符
//%转换说明的开始(占位符)
//-表示左对齐,默认是右对齐。
//0表示空位填0,省略则空位不填。
//m.n : m是域宽,指对应的输出项在输出设备占用多少个字符的宽度。n是精度,输出浮点数的时候,小数点后面的位数,默认是6。
getchar() & putchar() 函数
int getchar(void) 函数从屏幕读取下一个可用的字符,并把它返回为一个整数。这个函数在同一个时间内只会读取一个单一的字符。我们可以在循环内使用这个方法,以便从屏幕上读取多个字符。
int putchar(int c) 函数把字符输出到屏幕上,并返回相同的字符。这个函数在同一个时间内只会输出一个单一的字符。我们可以在循环内使用这个方法,以便在屏幕上输出多个字符。
例如:
#include <stdio.h>
int main()
{
int c;
printf("Enter a value :");
c = getchar();
printf("You entered: ");
putchar(c);
printf("\n");
return 0;
}
运行结果如下:
Enter a value :shuiwa
You entered: s
gets() & puts() 函数
char *gets(char *s) 函数从 stdin 读取一行到 s 所指向的缓冲区,直到一个终止符或 EOF。
int puts(const char *s) 函数把字符串 s 和一个尾随的换行符写入到 stdout。
例如:
#include <stdio.h>
int main()
{
char str[100];
printf("Enter a value :");
gets(str);
printf("You entered: ");
puts(str);
return 0;
}
运行结果如下:
Enter a value :shuiwa
You entered: shuiwa
scanf() 和 printf() 函数
int scanf(const char *format, …) 函数从标准输入流 stdin 读取输入,并根据提供的 format 来浏览输入。
int printf(const char *format, …) 函数把输出写入到标准输出流 stdout ,并根据提供的格式产生输出。
format 可以是一个简单的常量字符串,也可以分别指定 %s、%d、%c、%f 等来输出或读取字符串、整数、字符或浮点数。还有许多其他可用的格式选项,可以根据需要使用。如需了解完整的细节,可以查看这些函数的参考手册。参考手册可以在这里下载:下载地址,如果积分/C币不够下载的话,可以关注微信公众号水蛙编程,回复“资源”,就可以下载了。
举个例子:
#include <stdio.h>
int main()
{
char str[100];
int i;
printf("Enter a string and a value :");
scanf("%s %d", str, &i);
printf("You entered: %s %d \n", str, i);
return 0;
}
运行结果如下:
Enter a string and a value :shuiwa 1
You entered: shuiwa 1
scanf() 期待输入的格式与我们给出的 %s 和 %d 相同,这意味着我们必须提供有效的输入,比如 “string integer”,如果我们提供的是 “string string” 或 “integer integer”,它会被认为是错误的输入。另外,在读取字符串时,只要遇到一个空格,scanf() 就会停止读取,所以 “this is test” 对 scanf() 来说是三个字符串。