第1题
switch对应的case中,每个后面都需要加break!(不然会继续执行)
第2题
switch(c)语句中,c不可以是什么类型?
double + float
第3题
注意点与1一样;
第4题
- switch语句中的default子句可以放在任意位置;
- switch语句中的case的表达式只能是整形常量表达式,且case表达式不要求顺序;
第5题
- C语言中的关系操作符是用来比较大小关系的;
- 且比较两个字符串大小不能使用关系操作符,要使用strcmp()函数
strcmp()使用方法:
- 例如strcmp(str1,str2)
- 返回类型有3种,如果str1<str2,那么返回值小于0;
- 如果str1=str2,那么返回值等于0;
- 如果str1>str2,那么返回值大于0;
- 从头到尾挨个查看字符大小,不一样的时候谁的字符大,谁的字符串就大;
如何存储并定义一个字符串?(两种方法)
- char* str1 = "abcdef";(str1是一个字符地址,里面存储了字符串中首元素的a的地址)
- char str3[] = "abcdef"(str3是一个数组,相当于是用字符串来初始化这个数组,其实str3也存放了字符a的地址)
- 区别在于数组可以修改;而常量字符串无法修改
第7题
三角形判断(牛客)
第8题
9*9乘法表
int main()
{
int i = 0;
int j = 0;
for(i = 1;i<=9;i++)
{
for (j = 1;j<=i;j++;)
{
printf("%d * %d = %d",j,i,j*i);
}
printf("\n");
}
return 0;
}
第9题
(求10个整数的最大值)
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int arr[10] = { 0 };
int i = 0;
int max = arr[0];
for (i = 0; i < 10; i++)
{
scanf("%d", &arr[i]);
}
int j = 0;
for (j = 1; j < 10; j++)
{
if (max < arr[j])
{
max = arr[j];
}
}
printf("max = %d\n", max);
return 0;
}
第10题
计算1/1-1/2+1/3-1/4+1/5......+1/99-1/100的值,打印结果
#define _CRT_SECURE_NO_WARN
#include<stdio.h>
int main()
{
int i = 1;
double sum = 0;
for (i = 1; i <= 100; i++)
{
// i在之后为小数的时候,因为sum为整形,所以会自动=0,因此sum应该设定为小数
if (i % 2 == 1)
sum = sum + 1.0 / i;
else
sum = sum - 1.0 / i;
}
printf("sum = %lf", sum);
return 0;
}
第11题
计算从1~100数字中9出现的个数
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int i = 0;
int count = 0;
for (i = 1;i <= 100;i++)
{
if (i % 10 == 9)
count++;
if (i / 10 == 9)
count++;
}
printf("9的个数为 %d ", count);
return 0;
}
第12题
注意点:对于while(条件表达式){循环体}
- 循环体的执行次数总是比表达式少一次!
- 循环中遇到continue则直接判断后再次进入循环(不再执行后面的内容)
第13题
rand函数在调用前需要使用<stdlib.h>的头文件,且需要设置种子
int rand(void)
设置种子:
void srand(unsigned int seed)
其中将seed设置为时间戳:
time(NULL)
常用的产生随机数的代码:
srand((unsigned int)time(NULL))
第14题
求最大公约数
方法:辗转相除法
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
// 假如当前有a和b两数分别为24和18;则最大公约数为6
int a = 24;
int b = 18;
int c = a % b; // c = 6
while (c != 0)
{
a = b;
b = c;
c = a % b;
}
printf("最大公约数为 %d", b);
return 0;
}
第15题
逗号表达式默认结果为后面的,例如(3,4)结果取4;
第16题
sizeof()会计算\0;但是strlen不会计算\0;
第17题
定义一个数组。输入10个整数,并求这个数组的平均值
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int arr[10] = { 0 };
int i = 0;
int sum = 0;
int c = 0;
for (i = 0; i < 10; i++)
{
scanf("%d", &arr[i]);
}
for (i = 0; i < 10; i++)
{
sum = sum + arr[i];
}
double avg = sum / 10.0;
printf("平均数的值为 %lf", avg);
return 0;
}
第17题
注意点:
char acX[] = "abcdefg";
char acY[] = {'a','b','c','d','e','f','g'};
由于sizeof()会计算\0,因此sizeof(acX) > sizeof(acY)
但是strlen(acY)的数值不确定,因为不知道什么时候能碰到\0,两个数字的strlen不能进行比较
变量的值只有在运行的时候才能确定是多少(一定是在运行的时候才能确定),编译的时候不能确定