问题 A: C语言实验——计算A+B(顺序结构)
思路讲解:
这个直接计算a+b就好,没有什么困难的,用来熟悉环境最适合不过
代码实现:
#include<stdio.h>
int main()
{
int a,b;
scanf("%d %d",&a,&b);
printf("%d\n",a+b);
return 0;
}
问题 B: 电子欢迎器
思路讲解:
这个就是学会使用字符数组,学会字符数组的输入输出,注意scanf这里不用加&,这个单独记住就好,然后就是空格不要去数,直接复制粘贴就好,然后注意换行,不然就格式错误了。
代码实现:
#include<stdio.h>
int main()
{
char name[20];
char howetown[20];
scanf("%s",name);
scanf("%s",howetown);
printf("******************************************\n");
printf(" Welcome\n");
printf(" %s(%s)\n",name,howetown);
printf("******************************************\n");
return 0;
}
问题 C: 输入两个整数,进行四则运算并输出结果
这道题主要是数据比较友好,保证了a一定能够整除b,否则的话就要去考虑a/b为小数的情况 ,到时候就需要使用浮点数了,要不两个int做除法遵循向下取整的原则,
https://blog.csdn.net/weixin_47712251/article/details/130675475
给你们找了一个博客,里面介绍了除法,包括整数的和浮点数的
我再自己额外说一点吧
C语言中的除法操作是通过运算符
/
来实现的。根据被除数和除数的类型,C语言中的除法可以分为以下几种情况:1. 整数除法
- 定义:当被除数和除数都是整数时,C语言执行整数除法。
- 特点:结果会是一个整数,任何小数部分会被截断(向下取整)。
示例:
#include <stdio.h> int main() { int a = 10; int b = 3; int result = a / b; // result将是3,忽略了小数部分 printf("整数除法: %d / %d = %d\n", a, b, result); return 0; }
2. 浮点除法
- 定义:当被除数或除数是浮点数(
float
或double
类型)时,C语言执行浮点除法。- 特点:结果将是一个浮点数,可以包含小数部分。
示例:
#include <stdio.h> int main() { float a = 10.0; float b = 3.0; float result = a / b; // result将是3.333333 printf("浮点除法: %.2f / %.2f = %.2f\n", a, b, result); return 0; }
3. 整数与浮点数的除法
- 定义:如果一个整数被一个浮点数除,结果将是浮点数。
示例:
#include <stdio.h> int main() { int a = 10; float b = 3.0; float result = a / b; // result将是3.333333 printf("整数与浮点数的除法: %d / %.2f = %.2f\n", a, b, result); return 0; }
4. 除数为零的情况
- 注意:在进行除法运算时,必须确保除数不为零。如果除数为零,程序会导致运行时错误,通常会引发一个“除以零”错误。
示例:
#include <stdio.h> int main() { int a = 10; int b = 0; if (b != 0) { int result = a / b; printf("结果: %d / %d = %d\n", a, b, result); } else { printf("错误: 除数不能为零!\n"); } return 0; }
总结
- C语言支持整数除法和浮点除法。
- 在进行除法运算时,注意检查除数是否为零,以避免程序崩溃。
- 根据不同的数据类型,结果的类型也会有所不同。
通过理解这些基本概念,可以在C语言中有效地进行除法操作。
C题代码:
#include<stdio.h>
int main(){
int a,b;
scanf("%d %d",&a,&b);
printf("%d\n",a+b);
printf("%d\n",a-b);
printf("%d\n",a*b);
printf("%d",a/b);
return 0;
}
问题 D: 三个整数和、积与平均值
思路讲解:
这道题的计算平均数就利用到了我刚才C题中所介绍的除法的应用,其他再没有什么了,
其实关于这个转化为浮点数的方法有很多种,
在这里我介绍一下类型转化吧
1.
double a = b;
- 类型:隐式类型转换(或自动类型转换)
- 描述:在这一行代码中,变量
b
的值被隐式转换为double
类型,并赋值给a
。这意味着如果b
是一个其他类型(如int
或float
),编译器会自动将其转换为double
类型,而无需显式地指定转换。这个过程通常是安全的,因为double
类型的范围和精度比其他类型要大。示例
#include <stdio.h> int main() { int b = 5; // b 是一个整数 double a = b; // 隐式转换为 double printf("%f\n", a); // 输出: 5.000000 return 0; }
2.
(double) b
- 类型:显式类型转换(或强制类型转换)
- 描述:在这一行代码中,
(double) b
表示将b
强制转换为double
类型。这里的强制类型转换是通过在变量前加上类型名称来实现的。它明确地告诉编译器将b
转换为double
类型,可以用于需要指定类型的上下文。示例
#include <stdio.h> #include <stdio.h> int main() { int b = 5; // b 是一个整数 double a = (double) b; // 显式转换为 double printf("%f\n", a); // 输出: 5.000000 return 0; }
总结
- 隐式类型转换:
double a = b;
会自动将b
转换为double
类型。- 显式类型转换:
(double) b
明确要求将b
转换为double
类型,通常在需要特定类型的上下文中使用。在大多数情况下,隐式转换会更简洁,而显式转换则提供了更高的控制和可读性,尤其是在复杂的表达式中。
这道题还有关于浮点数的一些知识点,比如,float和double的区别,float用%f,double 使用%lf,
%.2lf是保留小数点后两位,同学们可以去CSDN上进行自行搜索,不过也不着急,反正你们后续做题也就会了
代码实现:
#include<stdio.h>
int main()
{
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
printf("%d %d %.2lf",a+b+c,a*b*c,(a+b+c)/3.0);//因为3.0是一个浮点数,所以整数与浮点数做除法,结果一个浮点数
return 0;
}
或者是
#include<stdio.h>
int main()
{
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
printf("%d %d %.2lf",a+b+c,a*b*c,(double)(a+b+c)/3);
return 0;
}
问题 E: C语言实验——圆柱体计算
思路讲解:
这里题干说的定义,我使用了define,你们可能还没学,不过使用double PI=3.1415926也一样没什么区别
代码实现:
#include<stdio.h>
#define PI 3.1415926
int main()
{
double r,h;
scanf("%lf %lf",&r,&h);
double C=2*PI*r;
double S1=PI*r*r;
double S2=C*h;
double V=S1*h;
printf("%.2lf %.2lf %.2lf %.2lf",C,S1,S2,V);
return 0;
}
问题 F: 输出两个整数中较小的数(1)
思路讲解
这道题题干也说了,有很多种做法,那么我就来简单介绍几种吧
1.写条件判断语句,也就是if else 语句
#include<stdio.h>
int main()
{
int a,b;
scanf("%d %d",&a,&b);
if(a<b)
{
printf("min=%d",a);
}
else
{
printf("min=%d",b);
}
return 0;
}
2.使用函数
C++中自带min函数和max函数,而C语言中没有,那么我们可以自己手写,min函数和max函数,我想函数你们肯定还没学,所以有能力的同学可以先自行研究着,如果实在理解不了,等后期你们学了函数就明白了
#include<stdio.h>
int min(int a,int b) //min函数,作用是返回参数a和参数b当中较小的那一个 int类型的函数
{
if(a>b)
{
return b;
}
else
{
return a;
}
}
int main()
{
int x,y;
scanf("%d %d",&x,&y);
printf("min=%d\n",min(x,y));
return 0;
}
3,使用三目运算符
所谓的三目运算符,这里指的就是?:表达式,那么何为?:表达式
三目运算符(Ternary Operator),也称为条件运算符,是一种简洁的条件判断表达式,通常用于替代简单的 if-else
语句。它的基本形式为:
条件 ? 表达式1 : 表达式2
1. 基本语法
-
条件:一个布尔表达式(返回真或假)。
-
表达式1:当条件为真时返回的值或表达式。
-
表达式2:当条件为假时返回的值或表达式。
2. 工作原理
三目运算符根据条件的真值来决定返回哪一个表达式的值:
-
如果条件为真(
true
),则返回表达式1。 -
如果条件为假(
false
),则返回表达式2。
#include<stdio.h>
int main()
{
int x,y;
scanf("%d %d",&x,&y);
printf("min=%d\n",x>y?y:x);
return 0;
}
问题 G: 输出两个整数中较小的数(2)
这道题和上一道题一样的,就略过了
问题 H: 求三角形面积
思路讲解:
预备知识的话,就是海伦公式,然后就是判断是否能构成三角形条件,这个你们都很熟,任意两边之和大于第三边,
这里补充一下开根号的函数
sqrt,使用这个函数之前需要引入math头文件
代码实现:
#include<stdio.h>
#include<math.h>
int main()
{
double a,b,c,s,area;
scanf("%lf %lf %lf",&a,&b,&c);
if(a+b>c && a+c>b && b+c>a)
{
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("area=%.2lf",area);
}
else
{
printf("error input");
}
return 0;
}
问题 I: 夏令营的年龄
思路讲解:
其实就是那道求最小值的题,现在只不过是三个数,除了求最小值,还要求最大值,这道题实现的方式也很多,可以if else语句,可以使用三目运算符,可以使用遍历,函数也可以
来吧:
//使用if和else语句进行判断
#include <stdio.h>
int main()
{
int age1,age2,age3;
scanf("%d %d %d",&age1,&age2,&age3);
int max_age=age1;
if(age2>max_age)
{
max_age=age2;
}
if(age3>max_age)
{
max_age=age3;
}
int min_age=age1;
if(age2<min_age)
{
min_age=age2;
}
if(age3<min_age)
{
min_age=age3;
}
int diff=max_age-min_age;
printf("%d",diff);
return 0;
}
#include<stdio.h>
int main()
{
int age1,age2,age3,max_age,min_age,diff;
scanf("%d %d %d",&age1,&age2,&age3);
///寻找最大年龄
if(age1>age2 && age1>age3)
{
max_age=age1;
}
else if(age2>age1 && age2>age3)
{
max_age=age2;
}
else
{
max_age=age3;
}
///寻找最小年龄
if(age1<age2 && age1<age3)
{
min_age=age1;
}
else if(age2<age1 && age2<age3)
{
min_age=age2;
}
else
{
min_age=age3;
}
diff=max_age-min_age;
printf("%d\n",diff);
return 0;
}
//三目运算符
#include<stdio.h>
int main()
{
int age1,age2,age3;
scanf("%d %d %d",&age1,&age2,&age3);
int max_age=(age1>age2?age1:age2)>age3?(age1>age2?age1:age2):age3;
int min_age=(age1<age2?age1:age2)<age3?(age1<age2?age1:age2):age3;
int diff=max_age-min_age;
printf("%d\n",diff);
return 0;
}
//使用遍历数组来实现
#include<stdio.h>
int main()
{
int a[4];//开数组
//数组的下标是从0开始的,一共是3个元素,因此下标是0,1,2,a[0],a[1],a[2]
for(int i=0;i<3;i++)
{
scanf("%d",&a[i]);
}
int Max=0; //求最大的年龄,初始化为无穷小,这里年龄最小为0
int Min=200;//求最小的年龄,初始化为无穷大,这里年龄最大初始化为200吧
for(int i=0;i<3;i++)
{
if(a[i]>Max)
{
Max=a[i];
}
if(a[i]<Min)
{
Min=a[i];
}
}
//printf("%d\n",Max);
//printf("%d\n",Min);
int ans=Max-Min;
printf("%d",ans);
return 0;
}
问题 J: 展示十年的年龄
思路讲解:
这个的话,其实就是练习使用for循环语句,只要你会了for循环,这道题没什么问题,还有很多同学出现了格式错误,大部分是忘记加换行符了
代码实现:
#include<stdio.h>
int main()
{
int age;
scanf("%d",&age);
printf("*****************************************\n");
for(int i=0; i<10; i++)
{
printf("%d ",age+i);
}
printf("\n");
for(int i=0; i<10; i++)
{
printf("%d ",age+i*2);
}
printf("\n");
printf("*****************************************");
return 0;
}