c实例练习笔记(拓展)

news2024/11/23 16:26:40

本博文参考题目的地址看右边----》C技能树

我跟你说!!!!!c语言有bool类型!!!!!你是不是百度跟你说没有只有c++才有?   是有的!!!!!! 这就是为啥我们要做扩展练习!!!!

// #include <stdbool.h> 引入这个文件  c语言就有bool 数据类型了; bool only_child=true;
// #include <ctype.h>//大小写处理 系统便准库  isalpha 该函数检查所传的字符是否是字母。 isupper判断大写返回1 ,islower(int c) 判断是不是小写
//  #include <stdarg.h>  va_list valist;定义变量 va_start 初始化va_start(valist, num); va_arg(valist, int);读字  va_end(valist);
//   itoa():将整型值转换为字符串。
//   ltoa():将长整型值转换为字符串。
//   ultoa():将无符号长整型值转换为字符串。
//   gcvt():将浮点型数转换为字符串,取四舍五入。
//   ecvt():将双精度浮点型值转换为字符串,转换结果中不包含十进制小数点。
//   fcvt():指定位数为转换精度,其余同ecvt()。

// 获取char字符串长度strlen(str)
// extern 申明变量在别的文件
// #include <windows.h> SetConsoleOutputCP(65001); 打印中文
// srand((unsigned) time(NULL)); 随机数种子(rand())
//  %d 十进制有符号整数
//  %u 十进制无符号整数
//  %f 浮点数
//  %s 字符串
//  %c 单个字符
//  %p 指针的值
//  %e 指数形式的浮点数
//  %x, %X 无符号以十六进制表示的整数
//  %o 无符号以八进制表示的整数
//  %g 把输出的值按照 %e 或者 %f 类型中输出长度较小的方式输出
//  %p 输出地址符
//  %lu 32位无符号整数
//  %llu 64位无符号整数
//  %% 输出百分号字符本身。
//  %ld的L是long的意思,%ld表示按longint格式(有符号长整型数格式)输出。

打印二维数组char

#include <stdio.h>
#include <string.h>
#include <windows.h>
#define ROW 7
#define COL 50
void print(char arr[ROW][COL]){
   char str;
   for(int i=0;i<ROW;i++){
      printf("%s\n",arr[i]);
   }
   
}
int main(int argc, char** argv)
{
   SetConsoleOutputCP(65001);
    char feature[ROW][COL] = {
        "1. 语言简洁,使用方便灵活",
        "2. 可移植性好",
        "3. 表达能力强",
        "4. 表达方式灵活",
        "5. 可进行结构化程序设计",
        "6. 可以直接操作计算机硬件",
        "7. 生成的目标代码质量高"
    };
    printf("********** C语言特点 **********\n");
    print(feature);
    printf("*******************************\n");
    return 0;
}

计算圆的面积

#include <stdio.h>
#include <windows.h>
// #define PI 314e-2
#define PI 3.14   
// const float PI=3.14;
// const float PI;// 错误const 定义产量 要赋值
// PI=3.14;       // 错误 
int main(int argc, char** argv)
{
   SetConsoleOutputCP(65001);
    float radius = 2.0;
    float area = PI * radius * radius;
    printf("半径为%.2f的圆,面积是%.2f", radius, area);
    return 0;
}

 打印学生基本信息

bool类型其实是有的!!!!! !我才知道!!!

#include <stdbool.h>
#include <stdio.h>
#include <windows.h>
int main(int argc, char **argv)
{
   SetConsoleOutputCP(65001);
   int student_id=1001;
   char name[]="陈晓明";
   char sex[]="男";
   int age=19;
   double height=164.50;
   double weight=70.50;
   bool only_child=true;   //这个bool是c++的,所以题目出的多少有问题。因为c里面也可以跑c++,而c本身没有bool类型
   
   printf("学号:\t%d\n", student_id);
   printf("姓名:\t%s\n", name);
   printf("性别:\t%s\n", sex);
   printf("年龄:\t%d\n", age);
   printf("身高:\t%.2f\n", height);
   printf("体重:\t%.2f\n", weight);
   printf("是否独生子女:\t%s\n", only_child ? "是" : "否");

   return 0;
}

 英文字母判断

#include <stdio.h>
#include <windows.h>
#include <ctype.h>
int main(int argc, char** argv)
{
   SetConsoleOutputCP(65001);
    char ch;
    printf("请输入一个字符:");
    scanf("%c", &ch);

    if ('A'<=ch &&ch<='Z'||'a'<=ch &&ch<='z')//引入 #include <ctype.h> 用isalpha(ch)可以直接判断
        printf("字符 \'%c\' 是一个英文字母", ch);
    else
        printf("字符 \'%c\' 不是一个英文字母", ch);

    return 0;
}

while i++和++i  都会跳过i=0这个值

#include <stdio.h>
#include <windows.h>
#include <ctype.h>
#define UPPER 10
int main(int argc, char** argv){
   SetConsoleOutputCP(65001);
    int i = 1;
   while(i++<UPPER){ //先对比i<UPPER 才会执行i++; 如果是++i只会输出到9
      // if(i%10==0){
         printf("%d\n",i);
      // }
   }
    return 0;
}

 区间重叠判断

#include <stdio.h>
#include <windows.h>
#define MAX(a,b) ((a > b) ? a : b)
#define MIN(a,b) ((a < b) ? a : b)
int main(int argc, char** argv){
   SetConsoleOutputCP(65001);
    int start_1, end_1;
    int start_2, end_2;
    printf("请输入第1个闭区间(逗号分隔):");
    scanf("%d,%d", &start_1, &end_1);
    printf("请输入第2个闭区间(逗号分隔):");
    scanf("%d,%d", &start_2, &end_2);
    if(!(MAX(start_1,start_2)==start_2 &&MIN(start_1,end_2)==start_1)||(MAX(end_1,start_2)==start_2 &&MIN(end_1,end_2)==end_1))
        printf("两个区间不重叠!");
    else
        printf("两个区间重叠!");

    return 0;
}

int 组数的数组长度

#include <stdio.h>
#include <windows.h>
int main ()
{
   SetConsoleOutputCP(65001);
   int arr[] = {1,2,3,4,5};
   //注意前提,是arr[] 如果arr[10]长度就变成10了,所以一下定义是在arr[]形式下 可行
   int len=sizeof arr/sizeof(int);//sizeof(arr)/sizeof int;是不行的
   // int len=sizeof(arr)/sizeof(*arr);//
   // int len=sizeof(arr)/sizeof(arr[0]);//
   printf("%d",len);
   return 0;
}

 字符串 数组长度

#include <stdio.h>
#include <windows.h>
int main ()
{
   SetConsoleOutputCP(65001);
   char a[]={'h','e','l','l','o','\0'};
   int aSize=sizeof(a)/sizeof(*a);
   // int aSize=strlen(a);写法2 这种写法的前提是要求 a[] 
   //的尾巴一定要有 '\0'     直到空结束字符,但不包括空结束字符
   printf("%d",aSize);
   return 0;
}

 如果strlen如果自定的a[]尾巴没有‘\0’查出来会变成如下图

 但是对于用户输入的  scanf 这种就不用管他'\0'了因为用户输入完一般是要回车的!

这也就是我扩展练习的时候才发现,之前以为一个strlen就搞定了,之前也觉得要引入<string.h>,现在发现不引入也没事

c语言,逗号运算符

他是这样,括号里面 取最后的一个值给z, 是由顺序决定的!跟大小无关!

#include <stdio.h>
#include <windows.h>
int main ()
{
   
   SetConsoleOutputCP(65001);
   int x, y, z;
   x = y = 1;
   z=(1,2);
    //要让结果输出 2 3 1
   printf("%d\n", z);
   return 0;
}

 如果你换一种写法

z=1,2;

 看懂了吗,这玩意教程里面也没教。博主只能靠换值去试

运算符优先级与求值顺序

自己做了一遍还是感觉以后会忘记,有必要记录下现在的思路

#include <stdio.h>
#include <windows.h>
int main ()
{
   
   SetConsoleOutputCP(65001);
   int x, y, z;
   x = y = 1;
   z=(++x,y++),y++; 
   // 输出结果要是 2,3,1。
   printf("%d,%d,%d\n", x, y, z);
   return 0;
}

 1、首先尾巴的y++跟z没关系,不懂的去看上面那个案例c语言,逗号运算符博主有举例

 2、z只跟(a,b)里面的b的取值有关,跟a无关

 3、因为题目要求z=1;所以要先赋值在运算,而++y会变成先  y+1;然后z才等于y,所以不行

 4、因为x要输出2 ,括号里面是x++还是++x;都跟z没关系!所以随便写

 5、因为结果y要输出3,前面y已经是2了,所以尾巴是y++还是++y;都没关系。

 值互换函数传参

#include <stdio.h>
#include <windows.h>
void huan(int *x,int *y){
   int z=*y;
   *y=*x;
  *x=z;
}
int main ()
{
   
   SetConsoleOutputCP(65001);
   int a;
   int b;
   printf("请输入2个数字用逗号隔开:");
   scanf("%d,%d",&a,&b);
   huan(&a,&b);
   printf("%d,%d",a,b);
   return 0;
}

 我竟然做错了。。。。

切记要改变量值,要传&,  有& 就有*指针。一对。

goto语句:求10以内的数之和

第一次看到这种循环体

他是这样你写一个if(){},然后再if前面加一个自定义变量 a:if(){},然后再if里面 i++;去goto去跑a,就跟while很像,只不过while没有goto。

#include <stdio.h>
#include <windows.h>
int main()
{
    SetConsoleOutputCP(65001); 
   int sum = 0;
   int i = 0;
   a:if(++i<=10){
      sum+=i;
      goto a;
   }
   printf("10以内的正整数之和为:%d", sum);
   return 0;
}

 函数申明和定义几种写法

1、先申明、后面在定义

  int型

#include <stdio.h>
#include <windows.h>
void print_skill_tree(int,int);
int main()
{
   SetConsoleOutputCP(65001);
   int tree_name = 1;
   int tree_link = 2;
   print_skill_tree(tree_name, tree_link);
   return 0;
}
void print_skill_tree(int a,int b){
   printf("%d,%d",a,b);
}

 char型

#include <stdio.h>
#include <windows.h>
void print_skill_tree(char [],char []);
int main()
{
   SetConsoleOutputCP(65001);
   char tree_name[] = "微信搜";
   char tree_link[] = "程序员实用资源";
   print_skill_tree(tree_name, tree_link);
   return 0;
}

 2、直接定义和申明

void print_skill_tree(char arr[],char arr1[]){
   printf("%s,%s",arr,arr1);
}
int main()
{
   SetConsoleOutputCP(65001);
   char tree_name[] = "微信搜";
   char tree_link[] = "程序员实用资源";
   print_skill_tree(tree_name, tree_link);
   return 0;
}

 函数返回字符串 函数指针

#include <stdio.h>
#include <windows.h>
char* a(){
   return "湖南";
};
int main()
{
   SetConsoleOutputCP(65001);
   printf("%s",a());
}

 模拟循环那题 答案是错的~!!!!!!!!

我模拟了下,如下

#include <stdio.h>
#include <windows.h>
void a(int i){
   
   if(i<10){
      a(++i);
      printf("%d\n",i);
   }
}

int main()
{
   SetConsoleOutputCP(65001);
   a(1);
}

这个结果是

 所以正确的写法应该是

#include <stdio.h>
#include <windows.h>
void a(int i){
   
   if(i<10){
      printf("%d\n",i);
      a(++i);
      
   }
}

int main()
{
   SetConsoleOutputCP(65001);
   a(1);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/457579.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第六章 完善内核

函数调用约定简介 参数的传递方式&#xff1a;使用后栈来保存。 每个进程都有自己的栈&#xff0c;这就是每个内存自己的专用内存空间&#xff1b;保存参数的内存地址不用再花精力维护&#xff0c;已经有栈机制来维护地址变化了&#xff0c;参数在栈中的位置可以通过栈顶的偏移…

QMS-云质说质量 - 1 张小泉的质量危机

云质QMS原创 转载请注明来源 作者&#xff1a;王洪石 引言 百年老店的拍蒜质量门 最近张小泉拍蒜断刀事件&#xff0c;吸引了全民关注&#xff0c;虽然随后发布了“断刀召集令”&#xff0c;但从事件发生到后续拖沓且不专业的应对&#xff0c;张小泉肯定是“失蒜”了。 张小泉…

一篇终结synchronized

一&#xff1a;基本原理 Java对象在内存中由两部分组成 &#xff1a; 1 是成员变量 2 是对象头&#xff0c;以32位虚拟机介绍&#xff1a;此时对象头是64位&#xff0c;即8字节 其中32个字节代表 mark word 另外32个字节代表klass word分别是什么意思呢&#xff1f; 1 klass …

文心一言 VS chatgpt (12)-- 算法导论3.1 6~7题

六、证明&#xff1a;一个算法的运行时间为θ(g(n))当且仅当其最坏情况运行时间为O(g(n))&#xff0c;且其最好情况运行时间为Ω(g(n)) 。 文心一言&#xff1a; chatgpt&#xff1a; 要证明「一个算法的运行时间为θ(g(n))当且仅当其最坏情况运行时间为O(g(n))&#xff0c;且…

LeetCode213 打家劫舍 II 动态规划法

题目地址 https://leetcode.cn/problems/house-robber-ii/ 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋&#xff0c;每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 &#xff0c;这意味着第一个房屋和最后一个房屋是紧挨着的。同时&#xff0c;相邻的房屋装…

【Hive实战】Windows下 IDEA DEBUG hiveMetastore hive2.3.9

Windows下 IDEA DEBUG hiveMetastore hive2.3.9 环境准备 编译好hive2.3.9源码&#xff0c;参考文档编译hive2.3.9源码准备好Mysql库&#xff0c;并手动创建schema&#xff0c;相关sql文件&#xff1a;hive-schema-2.3.0.mysql.sql和hive-txn-schema-2.3.0.mysql.sql。 启动…

SpringCloud --- Gateway服务网关

一、简介 Spring Cloud Gateway 是 Spring Cloud 的一个全新项目&#xff0c;该项目是基于 Spring 5.0&#xff0c;Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关&#xff0c;它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。 二、为…

QT实现固高运动控制卡示波器

目录 一、固高示波器 二、基于QCustomPlot实现示波器 三、完整源码 一、固高示波器 固高运动控制卡自带的软件有一个示波器功能&#xff0c;可以实时显示速度的波形&#xff0c;可辅助分析电机的运行状态。但是我们基于sdk开发了自己的软件&#xff0c;无法再使用该功能&…

深度学习技巧应用8-各种数据类型的加载与处理,并输入神经网络进行训练

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下深度学习技巧应用8-各种数据类型的加载与处理&#xff0c;并输入神经网络进行训练。在模型训练中&#xff0c;大家往往对各种的数据类型比较难下手&#xff0c;对于非结构化数据已经复杂的数据的要进行特殊处理&…

听我一句劝,别去外包,干了三年,废了....

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

2.黑马SpringbBoot运维篇笔记自己修改

SpringBoot运维实用篇 ​ 基础篇发布以后&#xff0c;看到了很多小伙伴在网上的留言&#xff0c;也帮助超过100位小伙伴解决了一些遇到的问题&#xff0c;并且已经发现了部分问题具有典型性&#xff0c;预计将有些问题在后面篇章的合适位置添加到本套课程中&#xff0c;作为解…

[社区图书馆】《PyTorch高级机器学习实战》书评

《PyTorch高级机器学习实战》是一本非常实用的机器学习书籍&#xff0c;作者为阿里云智能首席AI专家赵健。这本书的目标读者是具有一定Python编程基础并对深度学习有兴趣的开发者和研究者。 在书中&#xff0c;作者从最基础的线性回归、逻辑回归、卷积神经网络&#xff08;CNN…

前端食堂技术周刊第 80 期:Vite 4.3、Node.js 20、TS 5.1 Beta、Windi CSS 即将落幕

美味值&#xff1a;&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f; 口味&#xff1a;东坡肉 食堂技术周刊仓库地址&#xff1a;https://github.com/Geekhyt/weekly 本期摘要 Vite 4.3Node.js 20TypeScript 5.1 BetaWindi CSS 即将落幕Pretty TypeScri…

springboot项目的jar文件以打包成docker镜像的方式部署

清单&#xff1a; 安装有docker的Linuxspringboot打包的jar文件&#xff08;该项目只有一个返回"hello world"接口&#xff09; Linux的IP地址&#xff1a;192.168.221.129 springboot项目的接口&#xff1a; 1、上传jar文件至Linux 我上传的位置为&#xff1a;/…

4.2——派生类的构造函数和析构函数

派生类继承了基类的成员&#xff0c;实现了原有代码的重用&#xff0c;但是基类的构造函数和析构函数不能被继承&#xff0c;在派生类中&#xff0c;如果对派生类新增的成员进行初始化&#xff0c;就需要加入派生类的构造函数。与此同时&#xff0c;对所有从基类继承下来的成员…

SpringMVC-学习修改尚硅谷最新教程笔记

三、SpringMVC 1、SpringMVC简介 1.1、什么是MVC MVC是一种软件架构的思想&#xff0c;将软件按照模型、视图、控制器来划分 M&#xff1a;Model&#xff0c;模型层&#xff0c;指工程中的JavaBean&#xff0c;作用是处理数据 JavaBean分为两类&#xff1a; **一类称为实…

【JAVA-模块五 数组】

JAVA-模块五 数组 一、数组&#xff08;一维&#xff09;1.1数组是什么&#xff1f;1.2java中数组静态初始化&#xff1a;&#xff08;存&#xff09;两种定义格式&#xff1a;数组初始化格式&#xff1a;静态初始化后&#xff0c;打印数组名&#xff1a; 1.3 数组元素访问&…

win11 环境下streamlit使用pycharm debug

目录 1. pycharm中配置run 脚本2. streamlit3. 开始debug调试 1. pycharm中配置run 脚本 &#xff08;一&#xff09;点击 Edit Configurations,按图操作. 2. streamlit 1.streamlit 安装在 anaconda 的 base 环境&#xff08;随意哈&#xff0c;安装哪里都可以&#xff0c…

Zookeeper 面试题总结

Zookeeper 1、工作中 Zookeeper 有什么用途吗2、zookeeper 数据模型是什么样的3、那你知道 znode 有几种类型呢4、你知道 znode 节点里面存储什么吗5、每个节点数据最大不能超过多少呢6、你知道 znode 节点上监听机制嘛7、那你讲下 Zookeeper 特性吧8、你刚提到顺序一致性&…

LRU缓存淘汰策略——面试高频

⭐️前言⭐️ 本文主要介绍在面试中常见的高频手撕算法题目&#xff0c;LRU算法&#xff0c; &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f349;博主将持续更新学习记录收获&#xff0c;友友们有任何问题可以在评论区…