函数
函数就是将一大段逻辑凑在一起,传入一些值或者不传入值,每次调用都会去执行一次函数中的所有代码
#include <stdio.h>
// 求和函数
int add(int a, int b) {
return a + b;
}
int main() {
int a, b;
scanf_s("%d %d", &a, &b);
int sum = add(a,b);
printf("求和的值为%d", sum);
}
数组
数组可以能将一组相同类型的值存在一块。
数组会给这一些数字标“序号”,这种序号就是下标,下标从0开始,可以通过这些下标去访问对应存储的值。
数组变量在一开始定义的时候,初始化了,可以不指定长度,如果不指定长度,C语言会动态的帮我们处理数组的长度,如果没有初始化,必须要指定长度。
C99标准之前数组的大小都是用常量或常量表达式来指定。C99标准之后,支持了变长数组,这个时候允许数组的大小是变量,但是这种指定方式的数组不能初始化。
#include <stdio.h>
int main() {
int num[10] = { 2,3,5,7,8,4,3,5,7,1 };
int i = 0;
while (i < 10) {
printf("下标为%d的值为%d\n",i,num[i]);
i = i+1;
}
}
前三天学习练习题
- 下面哪个不是C语言内置的数据类型
A: char
B: double
C: struct Stu
D: short
解析:答案选C。C语言内置的数据类型有char、short、int、float、double、long、long long共七个数据类型。
struct是我们自定义的一个数据类型
- 局部变量的作用域是?
A: main函数内部
B: 整个程序
C: main函数之前
D: 局部变量所在的局部范围
解析:答案选D。
- 下面代码的输出结果是什么
#include <stdio.h>
int num = 10;
int main() {
int num = 1;
printf("num = %d", num);
return 0;
}
A: 程序代码有问题,不能运行
B: 1
C: 10
D: 0
解析:答案选B。在局部作用域中优先取局部作用域中的变量,如果没有该变量才会取去外一层作用域的...一直到全局
- 字符串的结束标志是什么?
A: '0'
B: EOF
C: '\0'
D: 空格
解析:答案选C。
- 关于数组描述错误的是?
A: 数组是一组相同类型元素的集合
B: 数组的下标是从1开始
C: 数组如果初始化,可以不指定数组的大小
D: 数组的下标是从0开始
解析:答案选B。
- 下面代码的执行输出结果是什么?
#include <stdio.h>
#include <string.h>
int main() {
int length = strlen("C:\test\121");
printf("%d", length);
return 0;
}
A: 7
B: 8
C: 9
D: 10
解析:答案选A。\是转义字符,C会将\t当成转义字符,同\ddd则是ASCII编码的转义规则,也会被转义成一个字符,
因此一共C、:、\t、e、s、t、Q 这7个字符,因此长度为7。
- 下面哪个不会被成功转义?
A: '\n'
B: '\060'
C: '\q'
D: '\b'
解析:答案选C。\n是空格,\060对于ASCII编码的0,\b对应光标后退一格。
- 下面代码的结果是?
#include <stdio.h>
#include <string.h>
int main() {
char str[] = { '我','是','一','个','字','符' };
int length = strlen(str);
printf("str字符串的长度是%d", length);
return 0;
}
A: 6
B: 随机数
C: 7
D: 8
解析:答案选B。因为字符串没有结束符号'\0',因此长度取决于读取内存中第一个\0的位置。
- C语言中下面哪个数组的创建是错误的?
A: int arr[10] = {0};
B: int n = 10; int arr[n] = {0};
C: int arr[] = {1,2,3,4,5,6,7,8,9,0};
D: char str[10] = "hello bit";
解析:答案选B。C99标准之前数组的大小都是用常量或常量表达式来指定。C99标准之后,支持了变长数组,这个时候允许数组的大小是变量,但是这种指定方式的数组不能初始化。
- 定义一个函数,返回更大的那个值(例如传入1和2进去,返回的值是2)
#include <stdio.h>
int more(int num, int num2) {
if (num >= num2) {
return num;
}
else {
return num2;
}
}
int main() {
int i = 0;
while (i == 0) {
int num;
int num2;
scanf_s("%d %d", &num, &num2);
printf("你输入的两个值为%d和%d他们两个%d更大", num, num2, more(num, num2));
return 0;
}
return 0;
}