win7自己电脑做网站/网上营销新观察网
目录
1、编写一个程序从1到100中,所有出现9的个数
2、分数求和
3、10个整形数字中选出最大值
4、打印9*9的乘法口诀
5、字符串逆序
6、计算一个数的每位之和(递归实现)
7、递归实现n的K次方
8、写个冒泡排序,把一个整形数组变成升序。
9、二进制位移位
10、实现数组的逆序、初始化、打印
11、模拟实现strcpy函数
12、写一个函数Numberof1求出一个数二进制1的个数
13、求两个书的最大公倍数
14、将一句话的单词进行倒置,标点不倒置
15、设计一个程序判断是大端存储还是小端存储
16、由a组成前n项之和 - 不考虑溢出
17、使用指针打印数组内容
18、列出100000以内的水仙花数
19、写一个函数交换字符串的每个字符
20、用C语言在屏幕上输出以下图案
1、编写一个程序从1到100中,所有出现9的个数
int main()
{int i = 0;int count = 0;for(i=0; i<=100; i++){if(i%10 == 9){count++;}if(i/10 ==9){count++;}}printf("%d\n",count);return 0;
}
2、分数求和
计算1/1-1/2+1/3-1/4+1/5...... + 1/99 - 1/100 的值,打印出结果
int main()
{int i = 0;double sum = 0.0;int flag = 1;for(i=1; i<=100; i++){sum += flag*1.0/i;flag = -flag;}printf("%lf\n",sum);return 0;
}
3、10个整形数字中选出最大值
int main()
{int arr[] = {1,2,3,4,5,6,7,8,9,10};int i = 0;int max = arr[0];for(i=1; i<10; i++){max = (max>arr[i]?max:arr[i]);}printf("%d\n",max);return 0;
}
4、打印9*9的乘法口诀
int main()
{int i = 0;int j = 0;for(i=1; i<=9; i++){for(j=1; j<=i; j++){printf("%d*%d=%-2d ",i,j,i*j);}printf("\n");}return 0;
}
5、字符串逆序
编写一个函数reverse_string(char* string)
实现:将参数字符串中的字符反向排列,不是逆序打印。
要求:不能使用C函数库中的字符串操作函数
int my_strlen(char* str)
{int i = 0;int count = 0;while(str[i] != '\0'){str++;count++;}return count;
}
void reverse_string(char* arr)
{int left = 0;int right = my_strlen(arr)-1;int tmp = 0;while(left<right){tmp = arr[left];arr[left]=arr[right];arr[right]=tmp;right--;left++;}
}
int main()
{char arr[] = "abcdef";reverse_string(arr);printf("%s\n",arr);return 0;
}
6、计算一个数的每位之和(递归实现)
题目内容:写一个递归函数Digitsum(n),输入一个非负整数,返回组成它的数字之和。
例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19输入:1729,输出: 19
int DigiSum(int num)
{if(num>9){return num%10+DigiSum(num/10);}elsereturn num;
}
int main()
{int num = 1729;printf("%d\n",DigiSum(num));return 0;
}
7、递归实现n的K次方
题目内容:
编写一个函数实现n的K次方,使用递归实现。
double que(int n,int k)
{if(k == 0){return 1.0;}else if(k>0){return n*que(n,k-1);}elsereturn 1.0/(n*que(n,-k));
}
int main()
{int k = 0;int n = 0;scanf("%d %d",&n,&k);printf("%lf\n",que(n,k));return 0;
}
8、写个冒泡排序,把一个整形数组变成升序。
要求:写一个函数bubble_sort为冒泡排序
例如:arr[] = {9,8,7,6,5,4,3,2,1};变成:arr[] = {1,2,3,4,5,6,7,8,9};
void bubble_sort(int arr[],int sz)
{int i =0;//确定趟数for(i=0; i<sz-1; i++){int j = 0;for(j=0; j<sz-1-i; j++){if(arr[j] > arr[j+1]){int tmp = arr[j];arr[j] = arr[j+1];arr[j+1] = tmp;}}}
}
int main()
{int arr[] = {9,8,7,6,5,4,3,2,1};int sz = sizeof(arr)/sizeof(arr[0]);int i = 0;bubble_sort(arr,sz);for(i=0; i<sz; i++){printf("%d ",arr[i]);}return 0;
}
或者
void bubble_sort(int arr[],int sz)
{int i =0;int flat = 1;//确定趟数for(i=0; i<sz-1; i++){int j = 0;for(j=0; j<sz-1-i; j++){if(arr[j] > arr[j+1]){int tmp = arr[j];arr[j] = arr[j+1];arr[j+1] = tmp;flat = 0;}}if(flat == 1){break;}}
}
int main()
{int arr[] = {9,8,7,6,5,4,3,2,1};int sz = sizeof(arr)/sizeof(arr[0]);int i = 0;bubble_sort(arr,sz);for(i=0; i<sz; i++){printf("%d ",arr[i]);}return 0;
}
9、二进制位移位
要求:1.把a的二进制中的第5位置成1
2.把a的二进制中的第5位置成0
int main()
{int a = 13;//把a的二进制中的第5位置位1a = a | (1<<4);printf("%d\n",a);//把a的二进制中的第5位置位0a = a & ~(1<<4);printf("%d\n",a);return 0;
}
10、实现数组的逆序、初始化、打印
要求:数组{1,2,3,4,5,6,7,8,9}
- 写一个函数完成数组的逆序;
- 写一个函数打印数组的每一位元素
- 写一个函数完成数组全为0
void reverse(int arr[],int sz)
{int left = 0;int right = sz - 1;while(left<right){int tmp = 0;tmp = arr[right];arr[right] = arr[left];arr[left] = tmp;left++;right--;}
}
void init(int arr[],int sz)
{int i = 0;for(i=0; i<sz; i++){arr[i] = 0;}
}
void print(int arr[],int sz)
{int i = 0;for(i=0; i<sz; i++){printf("%d ",arr[i]);}printf("\n");
}
int main()
{int arr[] = {1,2,3,4,5,6,7,8,9};int sz = sizeof(arr) / sizeof(arr[0]);reverse(arr,sz);print(arr,sz);init(arr,sz);print(arr,sz);return 0;
}
11、模拟实现strcpy函数
要求:
- 写一个函数my_strcpy模拟实现strcpy函数
- 例如:把arr1[] = "hello"拷贝到arr[20] = "xxxxxxxxx"中
简单实现:
void my_strcpy(char* dest,char* src)
{while(*src != '\0'){*dest = *src;dest++;src++;}*dest = *src;
}
int main()
{char arr[20] = "xxxxxxxxxxxxxx";char arr2[] = "hello";my_strcpy(arr,arr2);printf("%s\n",arr);return 0;
}
通过改进为:
#include<assert.h>
void my_strcpy(char* dest,const char* src) //const修饰不会把src改掉
{assert(src != NULL); //断言,如果是NULL会有报错信息while(*dest++ = *src++) // 不仅可以实现把每个字符拷贝进去,而且还可以把‘\0’也拷贝过去{;}
}
int main()
{char arr[20] = "xxxxxxxxxxxxxx";char arr2[] = "hello";my_strcpy(arr,arr2);printf("%s\n",arr);return 0;
}
再改进:
#include<assert.h>
char* my_strcpy(char* dest,const char* src) //const修饰不会把src改掉
{assert(src != NULL); //断言,如果是NULL会有报错信息char* ret = dest;while(*dest++ = *src++) // 不仅可以实现把每个字符拷贝进去,而且还可以把‘\0’也拷贝过去{;}return ret;
}
int main()
{char arr[20] = "xxxxxxxxxxxxxx";char arr2[] = "hello";;printf("%s\n",my_strcpy(arr,arr2));return 0;
}
12、写一个函数Numberof1求出一个数二进制1的个数
int Numberof1(int n)
{int count = 0;while(n){if(n%2 == 1){count++;}n /= 2;}return count;
}
int main()
{int n = 15;printf("%d\n",Numberof1(n));return 0;
}
以上的代码没有办法求负数,改进后下面代码
int Numberof1(int n)
{int count = 0;int i = 0;for(i=0; i<32; i++){if((n >> i) & 1 == 1){count++;}}return count;
}
int main()
{int n = -1;printf("%d\n",Numberof1(n));return 0;
}
13、求两个书的最大公倍数
要求:输入a和b,求出最大公倍数m
int main()
{int a = 0;int b = 0;scanf("%d %d",&a,&b);int m = a>b?a:b;while(1){if((m%a == 0) && (m%b == 0)){printf("%d\n",m);break;}else{m++;}}return 0;
}
14、将一句话的单词进行倒置,标点不倒置
要求:输入:I like beijing. 经过函数变为:beijing. like I
#include<string.h>
void reverse(char* left,char* right)
{while(left<right){char tmp = 0;tmp = *left;*left = *right;*right = tmp;left++;right--;}
}
int main()
{char arr[100] = {0};gets(arr);//三布翻转法int len = strlen(arr);reverse(arr,arr+len-1); //先整体翻转//每个单词翻转char* start = arr;while(*start){char* end = start;while(*end != ' ' && *end !='\0'){end++;}reverse(start,end-1);if(*end == ' '){start = end + 1;}elsestart = end;}printf("%s\n",arr);return 0;
}
15、设计一个程序判断是大端存储还是小端存储
什么大端小端:
- 大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;
- 小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地址中。
int main()
{int a = 1;char* pa = (char*)&a;if(*pa == 1){printf("小端存储\n");}else{printf("大端存储\n");}return 0;
}
或者写成一个函数
int check_sys()
{int a = 1;char* pa = (char*)&a;return *pa;//返回1表示小端,返回0表示大端
}
int main()
{int ret = check_sys();if(ret == 1){printf("小端存储\n");}else{printf("大端存储\n");}return 0;
}
16、由a组成前n项之和 - 不考虑溢出
int main()
{int a = 0;int n = 0;scanf("%d %d",&a,&n);int i = 0;int sum = 0;int ret = 0;for(i=0; i<n; i++){ret = ret*10 + a;sum = sum + ret;}printf("%d\n",sum);return 0;
}
17、使用指针打印数组内容
题目内容:
- 写一个函数打印ar数组的内容,不使用数组下标,使用指针。
- arr是一个整形一维数组
- 用两种方法
int main()
{int arr[] = {1,2,3,4,5,6,7,8,9,10};int *p = arr;int sz = sizeof(arr) / sizeof(arr[0]);int i = 0;for(i=0; i<sz; i++){printf("%d ",*(p+i));}return 0;}
第二种方法
int main()
{int arr[] = {1,2,3,4,5,6,7,8,9,10};int *p = arr;int sz = sizeof(arr) / sizeof(arr[0]);int *pend = arr+sz-1;while(p<=pend){printf("%d ",*p);p++;}return 0;}
18、列出100000以内的水仙花数
水仙花数是:指一个n位数,其各位数字的n次方之和等于该数本身,如:153=1^3+5^3+3^3
#include<math.h>
int main()
{int i = 0;for(i=0; i<=100000; i++){//计算i的位数int n = 0;int tmp = i;while(tmp/10){n++;tmp = tmp/10;}//计算i的每一位的n次方和tmp = i;int sum = 0;while(tmp){//pow是用来求每一位的n次方的sum += pow( tmp % 10, n);tmp = tmp / 10;}if(sum == i){printf("%d ",i);}}return 0;
}
19、写一个函数交换字符串的每个字符
要求:分别用指针下标引用符和*指针的方式
指针下标引用符
#include<string.h>
void reverse(char arr[])
{int len = strlen(arr);int left = 0;int right = len-1;while(left<right){char tmp = 0;tmp = arr[left];arr[left] = arr[right];arr[right] = tmp;left++;right--;}
}
int main()
{char arr[] = "hello word"; reverse(arr);printf("%s\n",arr); return 0;
}
*指针的方式
#include<assert.h>
#include<string.h>
void reverse(char *arr)
{assert(arr !=NULL);int len = strlen(arr);char* left = arr;char* right = arr+len-1;while(left<right){char tmp = 0;tmp = *left;*left = *right;*right = tmp;left++;right--;}
}
int main()
{char arr[] = "hello word"; reverse(arr);printf("%s\n",arr); return 0;
}
20、用C语言在屏幕上输出以下图案
要求:输入n=7行时候,打印如下图
7************************************
*************************************************
请按任意键继续. . .
代码为:
int main()
{int line = 0;scanf("%d",&line);int i = 0;//打印上半部分for(i=0;i<line;i++){//打印前半段空格int j = 0;for(j=0;j<line-1-i;j++){printf(" "); }//打印后半段*for(j=0;j<2*i+1;j++){printf("*");}printf("\n");}//打印下半部分for(i=0;i<line-1;i++){int j = 0;for(j=0;j<=i;j++){printf(" ");}for(j=0;j<2*(line-1-i)-1;j++){printf("*");}printf("\n");}return 0;
}
C语言练习 | 初学者经典练习汇总
C语言初识(2) | 变量和常量
C语言初识(3) | 字符串 | 转译字符
C语言初识(4) | 顺序 | 选择 | 循环
C语言初识(5) | 函数 | 数组 | 操作符
C语言初识(6) | 关键字
C语言初识(7) | 指针| 结构体 | define
C语言初阶(8) | 选择结构 | if_else | switch
C语言初阶(9) | while | break | continue | getchar
C语言初阶(10) | 初识for循环 | 入门
相关文章:

C语言练习 | 初学者经典练习汇(2)
目录 1、编写一个程序从1到100中,所有出现9的个数 2、分数求和 3、10个整形数字中选出最大值 4、打印9*9的乘法口诀 5、字符串逆序 6、计算一个数的每位之和(递归实现) 7、递归实现n的K次方 8、写个冒泡排序,把一个整形数组变成升序。 9、二进制…...

git分支
分支什么是分支在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。对于初学…...

Java每天15道面试题 | redisII
1、什么是 Redis?简述它的优缺点? Redis 本质上是一个 Key-Value 类型的内存数据库,很像 memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据 flush 到硬盘上进行保存。因为是纯内存操作&a…...

浏览器渲染原理
阶段 - Parse 1、解析HTML,浏览器将从服务器获取到的HTML文件之后,会产生一个渲染任务,交给消息队列(EventLoop/MessageLoop)。 2、在事件循环机制的作用下,会将渲染任务交给主线程 3、主线程在获取到渲染…...

华为OD机试题 - 查找单入口空闲区域(JavaScript)| 含思路
华为OD机试题 最近更新的博客使用说明本篇题解:查找单入口空闲区域题目输入输出示例一输入输出说明示例二输入输出说明示例三输入输出说明示例四输入输出说明Code解题思路华为OD其它语言版本<...

制造型企业想要做好数字化改造,要注意以下几点!
很多企业在“工业4.0、智能制造、互联网”等概念满天飞的环境下迷失了方向,不知该如何下手,盲目跟风,看别人投自动化,自己也跟着投,看别人上信息化,自己也跟着上。 其实,智能制造也好ÿ…...

【蓝桥杯集训·每日一题】AcWing 1488. 最短距离
文章目录一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解三、知识风暴Dijkstra算法一、题目 1、原题链接 1488. 最短距离 2、题目描述 有 N 个村庄,编号 1 到 N。 村庄之间有 M 条无向道路,第 i 条道路连接村庄 ai 和村…...

比亚迪:全球最大电动汽车制造商的坎坷成长之路
来源:猛兽财经 作者:猛兽财经 特斯拉(TSLA)首席执行官埃隆马斯克表示,特斯拉最接近的竞争对手可能是一家中国电动汽车公司。猛兽财经认为,沃伦•巴菲特支持的比亚迪(0211)可能是马斯…...

Java开发 - Quartz初体验
前言 在上一篇博客中,我们对单点登录有了初步了解,这也让我们独立做系统有了最基础的保障。但在业务开发中,总是会出现一些定期处理的任务,我们首先想到的是Timer,但由于其调度功能单一,我们实际并不会用它…...

无头盔开发vr XR Device Simulator操作(更新)
1.摄像机(未开启TY键) 平移 上下左右:右键鼠标,移哪去哪 前后:右键快速滚动鼠标滚轮 旋转 XOY平面旋转:右键按住鼠标滚轮滚动鼠标滚轮 XOZ\YOZ平面旋转:右键按住鼠标滚轮移动鼠标 2.左手右手&am…...

《C++代码分析》第二回:函数重载const char* ,char*,const char[],char[]汇编代码上的区别
一、前言 C相比C是支持函数重载的,现在我们详细探讨一下C函数重载与类方法承载。 二、案例代码 我们编译如下代码,同样的我们关闭代码优化,删除符号链接文(.pdb) #include "windows.h" #include "w…...

【学习笔记】深入理解JVM之垃圾回收机制
【学习笔记】深入理解JVM之垃圾回收机制 更多文章首发地址:地址 参考: 《深入理解JAVA虚拟机》第三版 第三章尚硅谷 第134 - 203 集参考文章:https://blog.csdn.net/qq_48435252/article/details/123697193 1、概念 🌻 首先我们…...

49.在ROS中实现local planner(2)- 实现Purepersuit(纯跟踪)算法
48.在ROS中实现local planner(1)- 实现一个可以用的模板实现了一个模板,接下来我们将实现一个简单的纯跟踪控制,也就是沿着固定的路径运动,全局规划已经规划出路径点,基于该路径输出相应的控制速度 1. Pur…...

Allegro如何设通孔Pin和Via的消盘操作指导
Allegro如何设通孔Pin和Via的消盘操作指导 用Allegro做PCB设计的时候,除了可以在光绘设置里面设置内层通孔Pin和Via的消盘,在设计过程中,同样也可以设置消盘效果,以便实时显示,如下图 如何设置,具体操作如下 点击Setup点击Unused Pads Suppression...

Android工厂模式
工厂模式分为三种 :简单工厂模式 、工厂方法模式 、抽象工厂模式 。 目录 简单工厂模式 UML图 实现 使用场景: 优点 : 缺点: 工厂方法模式 UML图 实现 使用场景: 优点: 缺点: 抽象工厂模式 UM…...

神经网络硬件加速器-架构篇
架构设计 常规架构通常包括两种: 1、全流水线架构,顾名思义,将整个神经网络进行平铺,并对每一层进行优化设计,优点:实现高吞吐率和低延时。缺点:消耗大量硬件资源,通常无法跨网络或…...

Python raise用法(超级详细,看了无师自通)
是否可以在程序的指定位置手动抛出一个异常?答案是肯定的,Python 允许我们在程序中手动设置异常,使用 raise 语句即可。 大家可能会感到疑惑,即我们从来都是想方设法地让程序正常运行,为什么还要手动设置异常呢&#…...

1.SpringSecurity快速入门
*SpringScurity的核心功能: 认证:验证当前访问系统的是不是本系统的用户,并且要确认具体是哪个用户 授权:经过认证后判断当前用户是否有权限进行某个操作 *第一步:创建springboot工程 *第二步:引入SpringSecurity依赖 *第三步:写controller,访问对应的url:localhos…...

Graph Partition: Edge cut and Vertex cut
Graph PartitionEdge cut and Vertex cutEdge cutVertex cut实际如何进行点分割和边分割的呢?Graph store format情况1:按照边列表存储:情况2:按照邻接表存储:Edge cut and Vertex cut 图结构描述了数据流动ÿ…...

Javascript周学习小结(初识,变量,数据类型)
JS的三大书写方式行内式如图所示:几点说明:JS的行内式写在HTML的标签内部,(常以on开头),如onclick行内式常常使用单引号括住字符串以区分HTML的双引号可读性差,不建议使用引号易出错,不建议使用特殊情况下使…...

C语言-基础了解-10-C函数
C函数 一、C函数 函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数。 您可以把代码划分到不同的函数中。如何划分代码到不同的函数中是由您来决定的,但在逻辑上&…...

【LeetCode】剑指 Offer(16)
目录 题目:剑指 Offer 33. 二叉搜索树的后序遍历序列 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过啦!!! 写在最后: 题目:剑指 Offer …...

第三十九章 linux-并发解决方法二(互斥锁mutex)
第三十九章 linux-并发解决方法二(互斥锁mutex) 文章目录第三十九章 linux-并发解决方法二(互斥锁mutex)互斥锁的定义与初始化互斥锁的DOWN操作互斥锁的UP操作用count1的信号量实现的互斥方法还不是Linux下经典的用法,…...

脚本方式本地仓库jar包批量导入maven私服
脚本内容,将以下内容保存为mavenimport.sh,放置于需要上传的目录下,可以是顶层目录,或者某个分包的目录,若私服已有待上传的包,则执行会被替换 #!/bin/bash # copy and run this script to the root of th…...

【c++】引用的学习
引用的定义和声明 引用是一种别名,它允许使用与原变量相同的内存位置。在C中,引用是使用&符号来定义的。引用必须在定义时初始化,并且可以与原变量分别使用。 int a 10; int& b a; // 定义了一个引用b,它指向a引用的作用…...

linux 软件安装及卸载
1.联网在线安装及卸载ubuntu环境下:使用apt-get 工具apt-get install - 安装软件包apt-get remove - 移除(卸载)软件包CentOS环境下:使用yum工具 (银河麒麟系统属于centos)yum install - 安装软件包yum rem…...

XShell连接ubuntu20.04.LTS
1 下载XshellXShell官方下载地址打开XSHELL官方下载地址,我们可以选择【家庭和学校用户的免费许可证】,输入邮箱之后即可获得下载链接安装非常简单,跟着提示进行即可。2 连接ubuntu2.1 查看ubuntu的ip地址输入命令查看ip地址ifconfig刚开始可…...

【FPGA】Verilog:MSI/LSI 组合电路之解码器 | 多路分解器
写在前面:本章将理解编码器与解码器、多路复用器与多路分解器的概念,通过使用 Verilog 实现多样的解码器与多路分解器,通过 FPGA 并使用 Verilog 实现。 Ⅰ. 前置知识 0x00 解码器与编码器(Decoder / Encoder) 解码器…...

深入理解JDK动态代理原理,使用javassist动手写一个动态代理框架
文章目录一、动手实现一个动态代理框架1、初识javassist2、使用javassist实现一个动态代理框架二、JDK动态代理1、编码实现2、基本原理(1)getProxyClass0方法(2)总结写在后面一、动手实现一个动态代理框架 1、初识javassist Jav…...

一、策略模式的使用
1、策略模式定义: 策略模式(Strategy Pattern)定义了一组策略,分别在不同类中封装起来,每种策略都可以根据当前场景相互替换,从而使策略的变化可以独立于操作者。比如我们要去某个地方,会根据距…...