当前位置:网站首页>C语言——几道C语言经典习题
C语言——几道C语言经典习题
2022-07-23 03:23:00 【头发没有代码多】
习题1 斐波那契数列的最小步数
Fibonacci数列是这样定义的:
F[0] = 0
F[1] = 1
for each i ≥ 2: F[i] = F[i-1] + F[i-2]
因此,Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, ...,在Fibonacci数列中的数我们称为Fibonacci数。给你一个N,你想让其变为一个Fibonacci数,每一步你可以把当前数字X变为X-1或者X+1,现在给你一个数N求最少需要多少步可以变为Fibonacci数。输入描述:
输入为一个正整数N(1 ≤ N ≤ 1,000,000)
输出描述:
输出一个最小的步数变为Fibonacci数"
(求一个数跟斐波那契数列中元素的最小步数)
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a=0;
int b=1;
int c=a+b;
int n;
scanf("%d",&n);
while(1)
{
if(a==n||b==n)
{
printf("%d",0);
break;
}
else
{
if(n>a&&n<b)
{
if(abs(n-a)>abs(b-n))
printf("%d",abs(n-b));
else
printf("%d",abs(n-a));
break;
}
}
a=b;
b=c;
c=a+b;
}
return 0;
}abs函数
头文件#include<stdlib.h>
int abs(int x)x -- 完整的值
返回值:该函数返回 x 的绝对值
习题2 空格替换
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
class Solution {
public:
void replaceSpace(char *str,int length) {
int i=0;
int count=0;
while(str[i]!='\0')
{
if(str[i]==' ')
{
count++;
}
i++;
}
i=length-1;
int j=length-1+count*2;
for(i=length-1,j=length-1+count*2;i>0,j>0;i--,j--)
{
if(str[i]!=' ')
str[j]=str[i];
else
{
str[j--]='0';
str[j--]='2';
str[j]='%';
}
}
}
};解题思路:先计算出空格数,每个空格处之后会被修改为3个字符,也就是说在每个空格处会增加俩个字符,给空格数*2,然后把这个长度加到数组后面(把数组延长一下),然后从前往后开始遍历,遇到空格之后则按要求转换
选择题
第一题 unsigned char取值范围考察
#include<stdio.h> int main(){ unsigned char i = 7; int j = 0; for(;i > 0;i -= 3){ ++j; }p rintf("%d\n", j); return 0; }请问该程序的输出是多少()
A 2
B 死循环
C 173
D 172题解:unsigned char取值范围0-255
i变化范围:7,4,1,254-2(中间j加了84次,2的时候j再加一次即85次),255-0(中间j加了85次)
第二题 位运算
以下哪个选项一定可以将flag的第二个bit置0() A.flag&=~2 B.flag|=2 C.flag^=2 D.flag>>=2A 2的二进制0010
取非之后 1100
此时第二个bit位为0,与任何数相与结果都是0
以下哪个选项一定可以将flag的第二个bit置0()
int fun(int a){ a^=(1<<5)-1; return a; }F(21)的结果
A.10B.5C.3D.8A,1的二进制位000001
左移五位 100000
减1 011111
和21异或 010101
001010
结果为10
第三题 大小写转换
#include <stdio.h> int main() { char a = 0, ch; while ((ch = getchar()) != '\n') { if (a % 2 != 0 && (ch >= 'a' && ch <= 'z')) ch = ch - 'a' + 'A'; a++; putchar(ch); }p rintf("\n"); return 0; }以下程序运行时,若输入1abcedf2df<回车>输出结果是()
A.1abcedf2dfB.1ABCEDF2DFC.1AbCeDf2dFD.1abceDF2DFC,该题将小写字符转换为大写字母,且该字母ASCII码值不能是2的整数倍
第四题 结构体内存对齐
struct One{ double d; char c; int i; } struct Two{ char c; double d; int i; }下面两个结构体
在#pragma pack(4)和#pragma pack(8)的情况下,结构体的大小分别是()
A.16 24,16 24B.16 20,16 20C.16 16,16 24D.16 16,24 24A
第五题 循环
int x = 1; do{ printf("%2d\n",x++); }while(x--);
A.1B.无任何输出C.2D.陷入死循环D
第六题 运算
#include<stdio.h> #include<stdlib.h> void main() { int a = -3; unsigned int b = 2; long c = a + b; printf("%ld\n", c); }
A.-1B.4294967295C.0x7FFFFFFFD.0xFFFFFFFFA
第七题 指针运算
设有定义char *p[]={"Shanghai","Beijing","Honkong"};则结果为j字符的表达式是
A.*p[1] +3B.*(p[1] +3)C.*(p[3] +1)D.p[3] [1]B
下面关于"指针"的描述不正确的是()
A.当使用free释放掉一个指针内容后,指针变量的值被置为NULLB.32位系统下任何类型指针的长度都是4个字节C.指针的数据类型声明的是指针实际指向内容的数据类型D.野指针是指向未分配或者已经释放的内存地址A
第八题 函数递归
int f(int x){ return ((x>2) ? x*f(x-1) : 3); } int i; i=f(f(2));
执行如上函数后. i的值为()
A.30B.无限递归C.9D.2160C
第九题 二维数组
int p[][4] = { {1}, {3, 2}, {4, 5, 6}, {0}};中,p[1][2]的值是()
A.1B.0C.6D.2B
第十题 宏定义
下列关于C/C++的宏定义,不正确的是()
A.宏定义不检查参数正确性,会有安全隐患B.宏定义的常量更容易理解,如果可以使用宏定义常量的话,要避免使用const常量C.宏的嵌套定义过多会影响程序的可读性,而且很容易出错D.相对于函数调用,宏定义可以提高程序的运行效率设有以下宏定义:
#define N 3+1
#define Y(n) ((N+1)*n)
则执行语句 z=2*(N+Y(5+1))后,z 的值为()
A.60B.190C.248D.上述答案都不对A
第十一题 程序编译
由多个源文件组成的C程序,经过编辑、预处理、编译、链接等阶段会生成最终的可执行程序。下面哪个阶段可以发现被调用的函数未定义()
A.预处理B.编译C.链接D.执行C
第十二题 隐式转换
char a; int b; float c; double d;则表达式 a*b+d-c 值的类型为()
A.floatB.intC.charD.doubleD
边栏推荐
- 射频电路循证设计
- 软考 系统架构设计师 简明教程 | 逆向工程
- [node middle layer practice (IV)] ---- logical processing of express middle layer
- 七大排序--万字详解
- IDM最新版软件的安装下载和使用方法
- How to do the system security test? Let's talk about it in detail
- PHP script paging TXT content case
- leetcode 1074. Number of Submatrices That Sum to Target(和为target的子矩阵个数)
- 华泰证劵开户有骗局吗安全吗
- 网络通信原理与IP地址的分配原理,网络七层由下往上分别为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层
猜你喜欢

《nlp入门+实战:第一章:深度学习和神经网络》

Leetcode 1074. number of submatrices that sum to target

Leetcode-99. restore binary search tree

spark分区算子partitionBy、coalesce、repartition

【C语言基础】16 可变数组(数组长度可扩展)

Kill a process on Linux

中小企业的福音来咯!JNPF渐火,助力业务数字化升级

智能建造试点城市通知的三大目标和八项任务

Seven sorts -- detailed explanation of ten thousand words

A concise tutorial for soft exam system architecture designer | reverse engineering
随机推荐
深入理解MVCC与BufferPool缓存机制
十年磨一剑,云原生分布式数据库PolarDB-X的核心技术演化
567. Arrangement of strings
时间序列-第三方库:tsfresh【特征提取、特征选择】
技术分享 | 大事务阻塞 show master status
什么是Per-Title编码?
并发编程中volatile面试总结
卡特兰数---
Hide the PHP version information in the response header of the website server
Leetcode 1074. number of submatrices that sum to target
args参数解析
[node middle tier practice (III)] --- template engine Pug
IDM最新版软件的安装下载和使用方法
华泰证券开户安全性高吗,怎么办理
A brief tutorial for soft exam system architecture designer | requirements engineering
转行软件测试薪资10K | 手中有粮心中有底,在任何时候都是真理
笔记——记录一个dynamic-datasource please check the setting of primary 问题解决
Excel简单使用宏
在Unity中使用Tessellation
PHP converts pictures to Base64 format and restores them to generate pictures