C语言例题练手(1)

前几篇博客的内容已经涉及了C语言的部分语法知识,我们可以尝试做一些编程题,或者换一种说法就是可以写出什么样的程序以此来解决一些问题。

题目来自牛客网https://www.nowcoder.com和C语言菜鸟教程C 语言教程 | 菜鸟教程

数值计算

【例1】带余除法计算------实际应用场景:计算器等自动计算

思路

我们需要输入两个整数因此需要输入函数printf并且用变量定义输入值,定义的数据类型是整型类型;需要输出两个数相除的结果因此用/、需要输出余数因此要引入新的算术操作符%表示求余数、和输出函数scanf++(++ ++因为scanf也可以,故不再写成scanf_s,原scanf_s只是比scanf安全程度更高)++,根据上面的思路我们开始写出相对应的代码。

程序

#include<stdio.h>//包含头文件
int main()//程序入口
{
    int a = 0,b = 0;//定义数据变量和类型
    scanf("%d %d",&a,&b);//输入变量的值,%d中间有空格隔开让其更美观
    printf("%d %d",a/b,a%b);//输出运算结果,分别是商和余数,%d中间有空格隔开让其更美观
    return 0;
}
运行

【例2】交换两个数------位置、货币、物品交换

描述

给定两个整数a和b,交换两个数的数值。

输入描述

输入两个整数a和b,中间用空格隔开。

输出描述

输出a和b两个数值交换的结果。

思路

需要输入函数和提示信息、实现两个数值的交换、输出函数。

程序

解法一:

#include<stdio.h>
int main()
{
    int a = 0, b = 0;
    scanf("%d %d", &a, &b);
    printf("交换之前:a=%d b=%d\n", a, b);

    //创建临时变量
    int c = 0;
    c = a;//交换数值用到临时变量c,来暂时存储a的值因为下一步a就要被b覆盖,并且后面重新赋值给b,于是实现了交换
    a = b;
    b = c;

    printf("交换之后:a=%d b=%d\n", a, b);
    return 0;
}
运行

补充:当交换的数值是浮点数时同样也可以实现,只需要把数据类型和占位符变化一下即可。

解法二:不使用临时变量

#include <stdio.h>
int main()
{
    int a = 0, b = 0;
    scanf_s("%d %d", &a, &b);
    printf("交换之前:a=%d b=%d\n", a, b);//例如a=11,b=99

    a = a + b;  // ( 11 + 99 = 110)  此时 a 的变量为两数之和,b 未改变
    b = a - b;  // ( 110 - 99 = 11)  
    a = a - b;  // ( 110 - 11 = 99)

    printf("交换之后:a=%d, b=%d\n", a, b);
}

【例3】计算自然数的和------计算物品个数和

描述

自然数数列,0,1,2,3,4,5......指非负整数递增并且每次只加1的数列,给定项数,求该项对应的数和前面数值的总和

输入

输入整数项数

输出

输出整数总和

思路

需要循环、输出函数

程序

for循环
#include<stdio.h>
int main()
{
    int a;
    printf("输入项数: ");
    scanf("%d",&a);

    //刚开始总和sum为0,然后通过循环i自增,其实是遍历了0~a(包括a)项的所有数值,因为刚好自然数列的数值和项数的本身重合
    int sum=0;//需要先定义并且初始化才能使用,定义也可以放在跟a在一块
    for(int i=0;i<=a;i++)
    {
        sum=sum+i;
    }

    printf("sum=%d",sum);
    return 0;
}
运行

补充:这类问题其实是等差数列(公差为1)的求和问题。也可以用while循环来写

while循环
#include <stdio.h>
int main()
{
    int a, i, sum = 0;//while循环没有for循环可以定义自增变量i的功能,所以在这里先行定义
    printf("输入项数: ");
    scanf("%d",&a);
 
    i = 1;//定义从1开始可以减少一次while循环,因为0加进去并不会影响总和
    while ( i <=a )
    {
        sum += i;
        ++i;
    }

    printf("sum = %d",sum);
    return 0;
}
运行
相关推荐
涛ing3 小时前
32. C 语言 安全函数( _s 尾缀)
linux·c语言·c++·vscode·算法·安全·vim
厂太_STAB_丝针5 小时前
【自学嵌入式(8)天气时钟:天气模块开发、主函数编写】
c语言·单片机·嵌入式硬件
charlie1145141916 小时前
从0开始使用面对对象C语言搭建一个基于OLED的图形显示框架(协议层封装)
c语言·驱动开发·单片机·学习·教程·oled
*TQK*7 小时前
ZZNUOJ(C/C++)基础练习1041——1050(详解版)
c语言·c++·编程知识点
*TQK*7 小时前
ZZNUOJ(C/C++)基础练习1031——1040(详解版)
c语言·c++·编程知识点
Terasic友晶科技9 小时前
第26篇 基于ARM A9处理器用C语言实现中断<二>
c语言·fpga开发·中断·de1-soc开发板
linhhanpy13 小时前
自制虚拟机(C/C++)(二、分析引导扇区,虚拟机读二进制文件img软盘)
c语言·汇编·c++·python·stm32·操作系统
qystca20 小时前
洛谷 P1734 最大约数和 C语言
c语言·数据结构·算法
Oracle_6661 天前
C基础算法与实现
c语言·算法
Pakho love1 天前
Linux:文件与fd(被打开的文件)
android·linux·c语言·c++