目录

C语言 | 温度转换(1)

C语言 | 计算存款本息和(2)

C语言 | 大写字母A转换为小写a(3)

C语言 | 用%f控制符输出6位小数(4)

C语言 | 用putchar输出Love(5)

C语言 | 由小到大输出两个数(6)

C语言 | 三目运算实现判断大写(7)

C语言 | 输入一个数输出对应的值(8)

C语言 | 成绩等级判别(9)

C语言 | 判断某年是否只闰年(10)


C语言 | 温度转换(1)

“要成为绝世高手,并非一朝一夕,除非是天生武学奇才,但是这种人…万中无一”                                                                                                                                                  ——包租婆

        这道理放在C语言学习上也一并受用。在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要经历的是日积月累的学习。

        那么如何学习呢?当然是每天都练习一道C语言题目!!

        例1:有人用温度计测量出用华氏温度98°F,现在要求用C语言实现把它转换为以摄氏法表示的温度。

        解题思路:这个问题的算法很简单,关键在于找到二者之间的转化公式,摄氏度等于九分之五乘以华氏度减去32的积,也就是:

centigrade=(5.0/9)*(f_Degree-32);

源代码演示:

#include<stdio.h>//头文件
 int main() //主函数
 {
   float f_Degree,centigrade; //定义浮点型变量
   f_Degree=98.0;//初始化华氏度变量
   centigrade=(5.0/9)*(f_Degree-32);//注意此处应该是5.0
   printf("华氏度98的摄氏度为:%f\n",centigrade);//输出结果
   return 0;//函数返回值为0
 }

编译结果:

华氏度98的摄氏度为:36.666668

--------------------------------
Process exited after 1.796 seconds with return value 0
请按任意键继续. . .

读者应该会很容易的看懂这道例题,但是有一点需要读者格外的注意,就是这行代码

centigrade=(5.0/9)*(f_Degree-32);

如果写成

centigrade=(5/9)*(f_Degree-32);

那么就会出现逻辑性错误,如下输出:

华氏度98的摄氏度为:0.000000

--------------------------------
Process exited after 1.967 seconds with return value 0
请按任意键继续. . .

        为什呢么?

        在C语言中不声明格式,这种整数相除的被除数比除数大的,会直接等于0,没有小数点后面的数字。

C语言 | 计算存款本息和(2)

        例2:用C语言计算存款利息。假设有本金1000元,想存一年,有三种方法可选择:

  • 活期,年利率为0.0036;

  • 一年期定期,年利率为0.0225;

  • 存两次半年定期,年利率为0.0198。

        请分别计算出一年后按3种方法所得到的本息和

        解题思路:这个问题的算法很简单,关键在于找到公式,若存款额为principal_0,也就是本金

        活期存款一年后的本息和为:

principal_0*(1+interest_Rate1);

        一年定期存款后,本息和为:

principal_0*(1+interest_Rate2);

        两次半年定期存款,一年后本息和:

principal_0*(1+interest_Rate3/2)*(1+interest_Rate3/2);

        源代码演示:

#include<stdio.h>//头文件
int main() //主函数
{
  float interest_Rate1,interest_Rate2,interest_Rate3;//定义浮点型利率变量
  interest_Rate1=0.0036; //初始化第一种方式年利率
  interest_Rate2=0.0225; //初始化第二种方式年利率
  interest_Rate3=0.0198; //初始化第三种方式年利率
    
  float principal_0,principal_1,principal_2,principal_3;//定义变量
  principal_0=1000;//初始化本金

  principal_1=principal_0*(1+interest_Rate1);//第一种本息和
  principal_2=principal_0*(1+interest_Rate2);//第二种本息和
  principal_3=principal_0*(1+interest_Rate3/2)*(1+interest_Rate3/2);//第三种本息和

  printf("第一种本息和:%f\n",principal_1);//输出第一种本息和
  printf("第二种本息和:%f\n",principal_2);//输出第二本息和
  printf("第三种本息和:%f\n",principal_3);//输出第三种本息和
  
  return 0; //函数返回值为0
}

        编译结果:

第一种本息和:1003.599976
第二种本息和:1022.500000
第三种本息和:1019.898010

--------------------------------
Process exited after 0.07304 seconds with return value 0
请按任意键继续. . .

        读者应该会很容易的看懂这道例题,但是有一点需要读者格外的注意,就是应该定义为浮点型类型的变量,因为存款的钱都是有小数点的,不要定义成整型的。

        毕竟14亿人的一分钱加起来可是1400万人民币。

C语言 | 大写字母A转换为小写a(3)

        例3:C语言实现将大写字母A,输出为小写字母a

        解题思路:字符数据以ASCII码存储在内存的,形式与整数的存储形式相同,所以字符型数据和其他算术型数据之间可以互相赋值和运算。

        比如A在ASCII码表的值为65,如下代码

#include<stdio.h> //头文件
int main() //主函数
{
  char character_Big;//定义字符变量
  character_Big='A';//初始化
  printf("%d",character_Big);//注意这里的格式控制符是%d
}

        运行后,输出

65
--------------------------------
Process exited after 0.08885 seconds with return value 0
请按任意键继续. . .

        读者需要特别注意的是,printf语句我用的格式控制符是%d,输出的是整型

        学习过上面的小案例,再来看例题就容易理解了

        源代码演示:

#include<stdio.h> //头文件
int main() //主函数
{
  char character_Small,character_Big;//定义字符变量
  character_Big='A'; //字符变量初始化,即把赋值字母A赋值给character_Big
  character_Small=character_Big+32;//ASCII码表值+32
  printf("大写字母%c",character_Big);//输出大写字母A
  printf("的小写字母是:%c\n",character_Small);//输出小写字母a
  return 0;//函数返回值为空
}

        编译结果:

大写字母A的小写字母是:a

--------------------------------
Process exited after 1.442 seconds with return value 0
请按任意键继续. . .

        上述C语言代码的这行

character_Small=character_Big+32;

        意思是把字符变量character_Big的值与整数32相加得到97,再把97赋给字符变量character_Small,97在ASCII码表中对应的就是小写字母a。

C语言 | 用%f控制符输出6位小数(4)

        例4:C语言实现用%f输出实数,且只能得到6位小数

        解题思路:不指定输出数据的长度,由系统根据数据的实际情况决定数据所占的列数。系统处理的方法一般是:实数中的整数部分全部输出,小数部分输出6位。

        源代码演示:

#include<stdio.h>//头文件
int main() //主函数
{
  double double_temp,temp;//定义双精度浮点型变量
  double_temp=1.0;//初始化double_temp
  temp=double_temp/3;//将double_temp除以3得到得结果赋值给temp
  printf("%f\n",temp);//输出temp
  return 0;//函数返回值为0
}

        编译结果:

0.333333

--------------------------------
Process exited after 0.074 seconds with return value 0
请按任意键继续. . .

        在上述代码中,虽然double_temp是双精度型,double_temp/3的结果也是双精度,但是用%f格式声明只能输出6位小数。

        这里也可以用%m.nf指定数据宽度和小数位数。

        在C语言中,/ 是除,如果是整数相除,只取整数部分,没有四舍五入之类的;%是取模,即取除法的余数。

        如果取模发现被除数比除数小,比如:

#include<stdio.h>//头文件
int main() //主函数
{
  printf("%d",2%5);
}

%的结果是商为0余2 ,输出如下:

2
--------------------------------
Process exited after 1.792 seconds with return value 0
请按任意键继续. . .

        大白话就是在求模时,如果被除数比除数小,输出的值则是被除数本身。

C语言 | 用putchar输出Love(5)

        例5:C语言实现先后输出Love四个个字符。

        解题思路:定义4个字符变量,分别赋以初值L、o、v、e’,然后用putchar函数输出4个字符变量的值。

        源代码演示:

#include<stdio.h>
int main()
{
  char character1,character2,character3,character4;//定义字符变量
  character1='L';//初始化变量,将字符L赋值给character1
  character2='o';//初始化变量,将字符o赋值给character2
  character3='v';//初始化变量,将字符v赋值给character3
  character4='e';//初始化变量,将字符e赋值给character3
  putchar(character1);//输出字符L
  putchar(character2);//输出字符o
  putchar(character3);//输出字符v
  putchar(character4);//输出字符e
  putchar('\n');//换行
  return 0;//函数返回值为0
}

编译结果:

Love

--------------------------------
Process exited after 0.06673 seconds with return value 0
请按任意键继续. . .

        在上述代码中哦可以看出:用putchar函数既可以输出能在显示器屏幕上显示的字符,也可以输出屏幕控制字符,如putchar('\n')的作用是输出一个换行符,使输出的当前位置移到下一行的开头。

C语言 | 由小到大输出两个数(6)

        例6:C语言实现输入两个实数,按照数值由小到大的顺序输出这两个数。

        解题思路:这道题目的逻辑很简单,只要做一次比较,然后进行交换即可。

源代码演示:

#include<stdio.h>//头文件
int main() //主函数
{
  float num1,num2;//定义浮点型变量
  printf("请输入输入2个实数:");
  scanf("%f,%f",&num1,&num2);//键盘输入输入两个数,注意两个%f之间的逗号
  float temp; //定义中间变量
  if(num1>num2) //判断条件,如果num1大于num2,就交换数值
  {
    temp=num1;
    num1=num2;
    num2=temp;
  }
  printf("%.2f,%.2f\n",num1,num2);//输出.2的意思是,保留到小数点后两位
  return 0;
}

编译结果:

请输入输入2个实数:2.3,2.1
2.10,2.30

--------------------------------
Process exited after 9.335 seconds with return value 0
请按任意键继续. . .

        在上述代码中哦可以看出,为了将num1和num2对换,借助了中间变量temp。

        读者如果不理解的话可以这样想,将A和B两个杯子里面的水互换,用两个杯子倒来倒去是不可能实现的,必须借助第三个杯子。这就是程序中实现两变量换值的算法。

        有一点读者需要额外注意下,就是这行代码:

scanf("%f,%f",&num1,&num2);

        两个%f之间我写的是英文逗号,因此在键盘输入时也要输入英文逗号,如果键盘输入中文逗号,结果如下:

请输入输入2个实数:2.3,2.1
-0.00,2.30

--------------------------------
Process exited after 5.91 seconds with return value 0
请按任意键继续. . .

C语言 | 三目运算实现判断大写(7)

        例7:输入一个字符,判别它是否为大写字母,如果是,将它转换成小写,如果不是,不转换。然后输出最后得到的字符,要求使用三目运算符。

        解题思路:用条件表达式来处理,当字母是大写时,转换成小写字母,否则不转换

源代码演示:

#include<stdio.h>//头文件
int main()//主函数
{
  char character_Big,character_Small;//定义字符变量
  printf("请输入字母:");
  scanf("%c",&character_Big);//键盘输入字符
  character_Small=(character_Big>='A'&&character_Big<='Z')?(character_Big+32):character_Big;
  printf("%c\n",character_Small);//输出
  return 0;//函数返回值为0
}

编译结果:

请输入字母:B
b

--------------------------------
Process exited after 5.149 seconds with return value 0
请按任意键继续. . .

        什么是三目运算符?

b?x:y;

        先计算条件b,然后进行判断。如果b的值为true,计算x的值,运算结果为x的值;否则,计算y的值,运算结果为y的值,条件表达式相当于一个不带关键字if的if语句,用它处理简单的选择结构可使程序简洁。

        此外,读者需要知道在C语言中有且只有一个三目运算符。

C语言 | 输入一个数输出对应的值(8)

        例8:C语言实现当num<0时,输出result=-1;当num>0时,result=1;当num=0时,result=0。编写一个C程序,输入一个num值,要求输出相应的result值。

        解题思路:用if语句检查num的值,根据num的值决定赋予result的值。由于result的可能性不是两个而是3个,因此不可能只用一个简单的if语句就可以实现,,需要用到if语句的嵌套。

源代码演示:

#include<stdio.h>//头文件
int main()//主函数
{
  int num,result; //定义整型变量
  printf("请输入num:");//提示语句
  scanf("%d",&num);//键盘输入
  if(num<0) //判断条件小于0时
  {
    result=-1;
  }
  else if(num==0)//判断条件等于0时
  {
    result=0;
  }
  else //判断条件大于0时
  {
    result=1;
  }
  printf("%d\n",result);//输出结果
  return 0;//函数返回值为0
}

编译结果:

请输入num:4
1

--------------------------------
Process exited after 4.581 seconds with return value 0
请按任意键继续. . .

        为了使程序更清晰,易读,写程序时对选择结构和循环结构应采用锯齿形的缩进形式。

C语言 | 成绩等级判别(9)

        例9:C语言实现按照考试成绩的等级输出百分制分数段,A等为85-100分,B等为70-84分,C等为60-69分,D等为60分以下。

        解题思路:这是一个多分支选择问题,根据百分制分数将学生成绩分为4个等级,如果用if语句来处理至少需要3层嵌套的if,进行3次检查判断。用switch语句,进行一次检查即可得到结果。

源代码演示:

#include<stdio.h>//头文件
int main()//主函数
{
  char grade; //定义成绩级别字符变量
  printf("输入成绩级别:");//提示语句
  scanf("%c",&grade); //键盘输入
  printf("成绩段:");//提示语句
  switch(grade) //switch多分支
  {
    case'A':printf("85-100\n");break;//输出A的成绩分布
    case'B':printf("70-84\n");break;//输出B的成绩分布
    case'C':printf("60-69\n");break;//输出C的成绩分布
    case'D':printf("不及格小于60\n");break;//输出D的成绩分布
    default:printf("输入成绩等级有误\n");//输出成绩级别有误
  }
  return 0;//函数返回值为0
}

编译结果:

输入成绩级别:D
成绩段:不及格小于60

--------------------------------
Process exited after 1.931 seconds with return value 0
请按任意键继续. . .

        读者需要注意的一点是:switch后面括号内的“表达式”,其值的类型应为整数类型(包括字符型),switch语句的作用是根据表达式的值,使流程跳转到不同的语句。

C语言 | 判断某年是否只闰年(10)

        例10:C语言实现判断某一年是否是闰年。

        解题思路:首先要想出如果这一年是闰年的条件,闰年是公历中的名词,分为普通闰年和世纪闰年,普通闰年:公历年份是4的倍数的,且不是100的倍数,为普通闰年;世纪闰年:公历年份是整百数的,必须是400的倍数才是世纪闰年。

源代码演示:

#include<stdio.h>//头文件
int main()//主函数
{
  int year;//定义整型变量
  printf("随意输入一年:");//提示语句
  scanf("%d",&year);//键盘输入年份
  if((year%4==0 && year%100!=0)||year%400==0)//判断闰年的条件
  {
    printf("%d是闰年\n",year);
  }
  else
  {
    printf("%d不是闰年\n",year);
  }
  return 0; //函数返回值为0
}

编译结果:

随意输入一年:2000
2000是闰年

--------------------------------
Process exited after 3.921 seconds with return value 0
请按任意键继续. . .

        我们常说“学而不思则罔”,我们只有在学习C语言的同时加以总结与思考,才能对编程有更系统和深入地了解,学到的知识才真正能为自己所用。

然后今天就讲到这里啦,大家记得点赞收藏,分享转发,关注小哥哥哦! 最后,如果你想学或者正在学C/C++编程,可以加入小编的编程学习C/C++企鹅圈https://jq.qq/?_wv=1027&k=vLNylJeG

更多推荐

C语言10道入门题集