当前位置: 首页 > news >正文

C语言刷题-编程(一)(基础)


🌊用有趣的言语来阐述苦涩难懂的代码世界,让每一个技术都充满风趣!
🔭个人主页:散峰而望
🚀学习方向: C/C++等方向
📌专栏系列:

  • 📖《C语言:从基础到进阶》
  • 📚《编程工具的下载和使用》
  • 🚀《C语言刷题》
  • ⚖️《算法竞赛从入门到获奖》

💬人生格言:冀以尘雾之微,补益山海,荧烛末光,增辉岁月。

🎬博主简介

请添加图片描述

请添加图片描述

文章目录

  • 前言
  • 1. C语言基础知识
  • 2.初入循环
  • 结语


前言

该篇文章主要分享一些比较基础的C语言基础编程代码题,让各位能够更好熟练使用C语言,为以后的深入做好准备。

1. C语言基础知识

  1. 实践出真知

先把语言运行环境改为C模式

在这里插入图片描述

文章只要打印出Practice makes perfect!,非常简单所以只需要一个printf函数就行了。代码如下:

#include <stdio.h>int main() {printf("Practice makes perfect!");return 0;
}

回答正确后便会出现这个窗口:

在这里插入图片描述

  1. 我是大V

做任何题目都要注意题目描述所需求的内容

在这里插入图片描述

这篇题也非常简单,按照形式进行打印。

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

除了多行输入,也可以单行输入:

#include <stdio.h>int main()
{//一行输出的效果printf("v   v\n v v\n  v\n");return 0;
}
  1. 有容乃大

这道题也非常简单按照题目要求的方式进行输出就行,代码如下:

#include <stdio.h>int main()
{printf("The size of short is %d bytes.\n", sizeof(short));printf("The size of int is %d bytes.\n", sizeof(int));printf("The size of long is %d bytes.\n", sizeof(long));printf("The size of long long is %d bytes.\n", sizeof(long long));return 0;
}
  1. 缩短二进制

根据要求:在八进制前显示前导0,在十六进制数前显示前导0X。但是一般电脑打印不会出现,所以要自行添加。又由备注

printf可以使用使用格式控制串“%o”、“%X”分别输出八进制整数和十六进制整数

则代码如下:

int main()
{printf("0%o 0X%X", 1234, 1234);return 0;
}

注意:这里题目要求十六进制(字母大写),千万不要把X写成x。

这里我们就需要对各种数据的格式控制进行掌握,比如:

在这里插入图片描述

格式参考:https://zh.cppreference.com/w/c/io/fscanf

更多了解:https://blog.csdn.net/sanfengerwang/article/details/151065417

  1. 小飞机

比较简单按照题目要求输入就行,代码如下:

#include <stdio.h>int main()
{printf("     **\n");printf("     **\n");printf("************\n");printf("************\n");printf("    *  *\n");printf("    *  *\n");return 0;
}
  1. 十六进制转十进制

也是一道非常简单的题按照题目要求打印即可,注意要有15占位宽,要写成 %15d 代码如下:

#include <stdio.h>int main()
{printf("%15d\n", 0xABCDEF);return 0;
}
  1. printf的返回值

由题目可知要打印两个值,要打印两个,一个是输出值一个是返回值。因为printf函数返回的是打印在屏幕上的字符的个数,所以需要一个变量来接收这个返回值。

int main()
{int ret = printf("Hello world!");printf("%d\n", ret);
}

又题目要求打印要在两行那么是否要在Hello world后面加上 \n 呢?

在这里插入图片描述

发现输出的不为12,而是13,这是为什么呢?原因是将 \n 一并读取了,所以 \n 要单开一列。

#include <stdio.h>int main()
{int ret = printf("Hello world!");printf("\n");printf("%d\n",ret);return 0;
}

也可以这样写:

#include <stdio.h>int main()
{int ret = printf("Hello world!");printf("\n%d\n",ret);return 0;
}

还能这样写:

#include <stdio.h>int main()
{printf("\n%d\n",printf("Hello world!"));return 0;
}

至于为什么可以这样写,是因为想要打印 %d 就必须读取Hello world的返回值,所以先打印Hello world,然后换行,打印返回值。

那么思考一下,下面这样写会有什么效果,打印的是什么?

int main()
{printf("%d", printf("%d", printf("%d", 43)));return 0;
}

打印:4321
因为43是两个值,所以返回2,然后第二个printf打印2,之后返回1,打印1

  1. 学生基本信息输入输出

由题目要注意输入格式,其他的按照题目要求输出就行。代码如下:

int main()
{int number = 0;float score_c = 0.0;float score_math = 0.0;float score_eng = 0.0;scanf("%d;%f,%f,%f", &number, &score_c, &score_math, &score_eng);printf("The each subject score of No. %d is %.2f, %.2f, %.2f.\n", number, score_c, score_math, score_eng);return 0;
}

2.初入循环

  1. 反向输出一个四位数

如果想让1234反向输入为4321,我们可以联想到/%,这是因为

1234 % 10 == 4
123 % 10 == 3

同时

1234 / 10 == 123
123 / 10 == 12

又需要多次运行/%,所以需要用到while循环。

所以代码如下:

#include <stdio.h>int main()
{int n = 0;scanf("%d", &n);while (n){printf("%d", n % 10);n /= 10;}return 0;
}
  1. 大小写转换

题目要求:多组输入过程中要注意“回车”也是字母,所以要“吸收”(getchar())掉该字母。

所以此处要用到getchar函数,如果对这个函数不了解的可以跳转到这里进行了解:https://blog.csdn.net/sanfengerwang/article/details/154577254

因为getchar函数所有的字母都会读取,所以如果用getchar会出现,将回车键读取,放有’\n’字符,打印出’*‘。所以要解决这个问题要第二次调用getchar把’\n’从输入缓冲区拿走。

同时需要多组输入所以要用到while循环。

int main()
{int ch = 0;while ((ch = getchar()) != EOF){putchar(ch + 32);getchar();//处理多余的\n}return 0;
}

运行会发现这个代码有错误,这是为什么呢?因为while循环没有跳出。想让代码读取失败需要加一个 != EOF (EOF – end of file文件结束标志,通常为文件的末尾),同时还要换行。

#include <stdio.h>int main() {int ch = 0;while ((ch = getchar()) != EOF) {putchar(ch + 32);printf("\n");getchar();//处理多余的\n}return 0;
}

当然还可以这样写:

#include <stdio.h>int main() {int ch = 0;while ((ch = getchar()) != EOF) {printf("%c\n", ch + 32);getchar();//处理多余的\n}return 0;
}
  1. 判断字母
#include <stdio.h>int main()
{int ch = 0;while ((ch = getchar()) != EOF){if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))printf("YES\n");elseprintf("NO\n");getchar();//处理\n}return 0;
}

如果最后不再写一下getchar()处理 \n 就会一直报错。当然对getchar了解比较少可以改用isalpha库函数,代码如下:

int main()
{int ch = 0;while((ch=getchar()) != EOF){//使用库函数if(isalpha(ch))printf("YES\n");elseprintf("NO\n");getchar();}     return 0;
}

isalpha - 是专门用来判断一个字符是不是字母,是字母返回非0的值,不是字母返回0。

  1. 字符圣诞树

这里需要循环打印,因此使用for循环相对好用。同时该题需要先循环一次确定行数,之后再循环一次空格字符

int main()
{char ch = 0;ch = getchar();int i = 0;//每循环一次,打印一行//每一行由2部分组成,空格和字符for (i = 0; i < 5; i++){//打印空格int j = 0;for (j = 0; j < 4 - i; j++){printf(" ");}//打印字符for (j = 0; j <= i; j++){printf("%c ", ch);}printf("\n");}return 0;
}

结语

希望这些题目能够更好的帮助各位掌握C语言基础,向更高的目标更难的算法进攻。

同时愿诸君能一起共渡重重浪,终见缛彩遥分地,繁光远缀天

在这里插入图片描述

请添加图片描述

http://www.dtcms.com/a/589059.html

相关文章:

  • 日常踩用的坑笔记
  • dede制作的网站挂马中国深圳航空公司官网
  • 网站开发工作需要什么专业织梦如何做网站
  • Java 面向对象进阶:抽象类、接口与 Comparable 接口
  • springboot移动端购物系统设计与实现(代码+数据库+LW)
  • 说一下Redis为什么快
  • web网页开发,在线%台球俱乐部管理%系统,基于Idea,html,css,jQuery,jsp,java,ssm,mysql。
  • 【C++STL】入门不迷路:容器适配器 + deque+stack/queue 使用 + 模拟实现指南!
  • 做设计挣钱的网站备案的网站有什么好处
  • 项目环境变量配置全攻略
  • AIGC|深圳AI优化企业新榜单与选择指南
  • 小红书MCP服务器 - 技术架构深度解析
  • 003-HTML之表单
  • 湖南省网站集约化建设实施方案做网站里面的图片像素要求
  • x402 生态系统:Web3 与 AI 融合的支付新基建
  • Rust 练习册 :掌握文本处理与词频统计
  • SpringCloud01-初识微服务SpringCloud
  • Web3 与去中心化应用(dApp)学习分享:从基础到应用
  • 贵州省住房和城乡建设厅官网站首页本地如何安装wordpress
  • 使用 dash 构建整洁架构应用
  • Transofrmer架构详解与PyTorch实现(附代码讲解)
  • 【自用】Python二分查找写法
  • 云原生爬虫:使用Docker和Kubernetes部署与管理分布式爬虫集群
  • Rust与Go:现代系统编程语言的深度对比
  • 国外html5网站源码网络舆情应急处置预案
  • 第1篇:Linux工具复盘上篇:yum与vim
  • Linux复习:gdb调试深度解析:debug与release
  • 哪家网站开发公司好平台公司信用评级
  • 【JavaEE】Spring Web MVC(下)
  • Hello-Agents第一章深度解析:智能体的本质、构建与实践