【C语言】语言篇——程序设计入门 2

简介: 【C语言】语言篇——程序设计入门

分支结构程序设计

例题1-4

鸡兔同笼:

已知鸡和兔的总数量为n,总腿数为m。输入n和m,依次输出鸡的数目和兔的数目。如果无解,则输出No answer。

分析

假设鸡有a只,兔有b只,则a+b=n,2a+4b=m,联立解得a=(4n-m)/2,b=n-a。

怎样判断无解呢?

解出a或者b是负数。或者a或者b不是整数。

#include<stdio.h>
int main()
{
 int a, b, n, m;
 scanf("%d%d", &n, &m);
 a = (4*n-m)/2; b = n-a;
 if(m % 2 == 1 || a < 0 || b < 0)  //短路的方法计算逻辑表达式
 printf("No answer\n");
 else
 printf("%d %d\n", a, b);
 return 0;
}

C语言中的逻辑运算符,都是短路运算符,一旦能确定整个表达式的值,就不再进行计算了。

例题1-5:三个整数排序

输入三个整数,从小到大排序后输出。

样例输入

20 7 33

样例输出

7 20 33

分析

方法一这三个数有可能的六种排序:

abc,acb,bac,bca,cab,cba,所以我们可以利用分支结构一一列出:

(这里需要注意的是,千万不要忽略等于即不仅仅有可能是a<b<c,也有可能a<=b<=c)

#include <stdio.h>
int main(void)
{
  int a,b,c;
  scanf("%d%d%d",&a,&b,&c);
  if (a<=b && b<=c)
    printf("%d %d %d \n",a,b,c);
  else if (a<=c && c<=b)
    printf("%d %d %d \n",a,c,b);
  else if (b<=a && a<=c)
    printf("%d %d %d \n",b,a,c);
  else if (b<=c && c<=a)
    printf("%d %d %d \n",b,c,a);
  else if (c<=a && c<=b)
    printf("%d %d %d \n",c,a,b);
  else if (c<=b && c<=a)
    printf("%d %d %d \n",c,b,a);
  return 0;
}

方法二

利用前面讲过的三变量交换法,先检查a和b,使得a是a和b中最小的数,然后再检查,a和c使得a是a和c中最小的数(即a,b,c中最小的数),然后再检查b和c,使得b是b和c中最小的数。

#include <stdio.h>
int main(void)
{
  int a,b,c,t;
  scanf("%d%d%d",&a,&b,&c);
  if (a>b)
    t=a;a=b;b=t;
  if (a>c)
    t=a;a=c;c=t;
  if (b>c)
    t=b;b=c;c=t;
  printf("%d %d %d \n",a,b,c);
  return 0;
}

输出实验

转义字符\n

#include <stdio.h>
int main(void)
{
  printf("1\n2\n");
  printf("1\n\n2\n");
  return 0;
}

38dca7a646d94e83acdcee5a3951cdd8.png

输出’’

#include <stdio.h>
int main(void)
{
  printf("\\\n");//编译器会把双斜线理解成单个字符'\'
  return 0;
}

0cfcf878600b45908aea260ea6b5ca2c.png

表达式1/0 ,1.0/0.0,0.0/0.0

printf("%d",0.0/0.0);
  printf("%d",1.0/0.0);
  printf("%d",1/0);

系统都会报错:

divide or mod by zero

习题

习题1-1平均数(average)

输入3个整数,输出他们的平均值,保留3位整数。

#include <stdio.h>
int main(void)
{
  double a,b,c;
  scanf("%lf%lf%lf",&a,&b,&c);
  printf("%.3lf\n",(a+b+c)/3);
  return 0;
}

习题1-2温度(temperature)

输入华氏温度f,输出对应的摄氏温度c,保留3位小数。提示:c=5(f-32)/9。

#include <stdio.h>
int main(void)
{
  double f;
  scanf("%lf",&f);
  printf("%.3lf\n",5*(f-32)/9);
  return 0;
}

习题1-3连续和(sum)

输入正整数n,输出1+2+3+……+n。

#include <stdio.h>
int main(void)
{
  int i,n,sum=0;
  scanf("%d",&n);
  for (i=1;i<=n;i++)
    sum+=i;
  printf("%d\n",sum);
  return 0;
}

习题1-4正弦和余弦(sin和cos)

输入正整数n(n<360),输出n度的正弦、余弦函数值。

#include <stdio.h>
#include <math.h>
int main(void)
{
  double n;
  const double PI=3.1415;
  scanf("%lf",&n);
    printf("cos(%.1lf)=%lf,sin(%.1lf)=%lf\n",n,cos(n/180*PI),n,sin(n/180*PI));
  return 0;
}

这里需要注意的是,输入的n是角度,而cos(),sin()函数的参数是弧度制的,所以需要转化。

习题1-5

一件衣服95元,若消费满300元,可打八五折。输入购买衣服件数,输出需要支付的金额(单位:元),保留两位小数。

#include <stdio.h>
int main(void)
{
  int n;
  scanf("%d",&n);
  if (n*95>=300)
    printf("%.2lf\n",n*95*0.85);
  else
    printf("%d\n",n*95);
  return 0;
}

习题1-6 三角形(triangle)

输入三角形3条边的长度值(均为正整数),判断是否能为直角三角形的3个边长。如果可以,则输出yes,如果不能,则输出no。

如果根本无法构成三角形,则输出not a triangle。

#include <stdio.h>
int main(void)
{
  int a,b,c;
  scanf("%d%d%d",&a,&b,&c);
  if (a+b<=c || a+c<=b || b+c<=a)//无法构成三角形
    printf("not a triangle\n");
  else if (a*a+b*b=c*c || a*a+c*c=b*b || b*b+c*c=a*a)//直角
    printf("yes\n");
  else 
    printf("no\n");
  return 0;
}

习题1-7年份(year)

输入年份,判断是否为闰年。如果是,则输出yes,否则输出no。

判断闰年

能被4整除但不能被100整除,或者能被100整除。

#include <stdio.h>
int main(void)
{
  int n;
  scanf("%d",&n);
  if (n/400==0  ||  (n%4==0 && n/100!=0))
    printf("yes\n");
  else
    printf("np\n");
  return 0;
}


相关文章
|
1月前
|
安全 编译器 C语言
C++入门1——从C语言到C++的过渡
C++入门1——从C语言到C++的过渡
52 2
|
1月前
|
存储 Java 编译器
初识C语言1——C语言入门介绍
初识C语言1——C语言入门介绍
30 1
|
1月前
|
C语言
回溯入门题,数据所有排列方式(c语言)
回溯入门题,数据所有排列方式(c语言)
|
1月前
|
存储 程序员 编译器
初识C语言,计算机语言的基石
初识C语言,计算机语言的基石
|
2月前
|
C语言
C语言程序设计核心详解 第四章&&第五章 选择结构程序设计&&循环结构程序设计
本章节介绍了C语言中的选择结构,包括关系表达式、逻辑表达式及其运算符的优先级,并通过示例详细解释了 `if` 语句的不同形式和 `switch` 语句的使用方法。此外,还概述了循环结构,包括 `while`、`do-while` 和 `for` 循环,并解释了 `break` 和 `continue` 控制语句的功能。最后,提供了两道例题以加深理解。
|
2月前
|
存储 C语言
C语言程序设计核心详解 第十章:位运算和c语言文件操作详解_文件操作函数
本文详细介绍了C语言中的位运算和文件操作。位运算包括按位与、或、异或、取反、左移和右移等六种运算符及其复合赋值运算符,每种运算符的功能和应用场景都有具体说明。文件操作部分则涵盖了文件的概念、分类、文件类型指针、文件的打开与关闭、读写操作及当前读写位置的调整等内容,提供了丰富的示例帮助理解。通过对本文的学习,读者可以全面掌握C语言中的位运算和文件处理技术。
|
2月前
|
存储 C语言
C语言程序设计核心详解 第七章 函数和预编译命令
本章介绍C语言中的函数定义与使用,以及预编译命令。主要内容包括函数的定义格式、调用方式和示例分析。C程序结构分为`main()`单框架或多子函数框架。函数不能嵌套定义但可互相调用。变量具有类型、作用范围和存储类别三种属性,其中作用范围分为局部和全局。预编译命令包括文件包含和宏定义,宏定义分为无参和带参两种形式。此外,还介绍了变量的存储类别及其特点。通过实例详细解析了函数调用过程及宏定义的应用。
|
2月前
|
C语言
C语言程序设计核心详解 第三章:顺序结构,printf(),scanf()详解
本章介绍顺序结构的基本框架及C语言的标准输入输出。程序从`main()`开始依次执行,框架包括输入、计算和输出三部分。重点讲解了`printf()`与`scanf()`函数:`printf()`用于格式化输出,支持多种占位符;`scanf()`用于格式化输入,需注意普通字符与占位符的区别。此外还介绍了`putchar()`和`getchar()`函数,分别用于输出和接收单个字符。
|
2月前
|
存储 算法 C语言
C语言程序设计核心详解 第一章:数制及转换与ASCII码
本专栏旨在夯实C语言基础,涵盖基础知识与进阶内容,助力解决自命题考试和考研问题,为数据结构与算法设计奠定坚实基础。内容包括数制及其转换、ASCII码、内存管理、机器码等,重点讲解二进制、八进制、十六进制的概念与转换方法,并介绍C语言的结构、数据类型和标识符规范。
|
2月前
|
存储 人工智能 C语言
C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
本文详细讲解了C语言中的指针,包括指针变量的定义与引用、指向数组及字符串的指针变量等。首先介绍了指针变量的基本概念和定义格式,随后通过多个示例展示了如何使用指针变量来操作普通变量、数组和字符串。文章还深入探讨了指向函数的指针变量以及指针数组的概念,并解释了空指针的意义和使用场景。通过丰富的代码示例和图形化展示,帮助读者更好地理解和掌握C语言中的指针知识。