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;
}
运行
相关推荐
Pretend° Ω12 小时前
LRU缓存详解:用C语言实现高效数据管理
运维·c语言·spring·缓存·lru·双向链表
我叫汪枫13 小时前
C语言深度入门系列:第十一篇 - 动态内存管理与数据结构:程序世界的高效算法大师
c语言·数据结构·算法
叫我木子17 小时前
c语言,识别到黑色就自动开枪,4399单击游戏狙击战场,源码分享,豆包ai出品
c语言·人工智能·游戏
l1t17 小时前
对expat库XML_Parse函数调用优化的测试
xml·c语言·解析器·expat
l1t18 小时前
利用美团龙猫添加xlsx的sheet.xml读取sharedStrings.xml中共享字符串输出到csv功能
xml·c语言·数据结构·人工智能·算法·解析器
l1t19 小时前
how to build tbox xml into the demo
xml·linux·c语言·parser·tbox
九皇叔叔20 小时前
【2】标识符
c语言
野生的编程萌新21 小时前
【C++深学日志】从0开始的C++生活
c语言·开发语言·c++·算法
Hello_Embed1 天前
STM32HAL 快速入门(二十四):I2C 编程(一)—— 从 OLED 显示初识 I2C 协议
c语言·stm32·单片机·嵌入式硬件·学习
晨非辰1 天前
#C语言——刷题攻略:牛客编程入门训练(十一):攻克 循环控制(三),轻松拿捏!
c语言·开发语言·经验分享·学习·visual studio