C语言作业二

第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不能进行比较

变量的值只有在运行的时候才能确定是多少(一定是在运行的时候才能确定),编译的时候不能确定

相关推荐
cui_ruicheng几秒前
Linux线程(四):线程池、日志系统与单例模式
linux·开发语言·单例模式
AOwhisky几秒前
Docker 学习笔记:网络篇
linux·运维·网络·笔记·学习·docker·容器
24白菜头2 分钟前
MySQL学习笔记
数据库·笔记·学习·mysql
文祐7 分钟前
三维数组在内存中的分布
开发语言·内存
MegaDataFlowers8 分钟前
102.二叉树的层序遍历
数据结构
洛水水8 分钟前
【力扣100题】28. 翻转二叉树
算法·leetcode
kaikaile199510 分钟前
基于 MATLAB 的3D 蒙特卡洛光子传输模拟
开发语言·matlab·3d
问心无愧051312 分钟前
ctf show web入门54
前端·笔记
小陈phd14 分钟前
多模态大模型学习笔记(三十九)——生成式与Transformer式OCR:从“像素抄录“到“文档智能“的完整演进
笔记·学习·transformer
我是唐青枫15 分钟前
C#.NET YARP 认证授权实战:在网关层统一接入 JWT
开发语言·c#·.net