[C刷题]第2天
作者:小教学发布时间:2023-09-19分类:程序开发学习浏览:81
一、选择题
1个、以下程序段的输出结果是()
#include<stdio.h>
int main()
{
char s[] = "\\123456\123456\t";
printf("%d\n", strlen(s));
return 0;
}
A:12 B:13 C:16 D:以上都不对
[答案]:
一个
[解析]:
考点:转义字符
\\表示反斜杠,取消转义的作用
\123表示八进制的123
\t表示水平制表符,相当于选项卡键
这些都是算一个字符,其他都是单独一个为一个字符,故为12个
2、若有以下程序,则运行后的输出结果是()
#include <stdio.h>
#define N 2
#define M N + 1
#define NUM (M + 1) * M / 2
int main()
{
printf("%d\n", NUM);
return 0;
}
A:4 B:8 C:9 D:6
[答案]:
B类
[解析]:
考点:定义宏定义只是简单的替换
(1)先把M进行替换得到(N+1+1)*N+1/2(M换成N+1不用加括号,直接替换就好)
(2)再把N进行替换,(2+1+1)*2+1/2得到就是8.5
(3)以整形的形式进行打印,取整数部分就是8
3、如下函数的f(1)的值为()
int f(int n)
{
static int i = 1;
if(n >= 5)
return n;
n = n + i;
i++;
return f(n);
}
A:5 B:6 C:7 D:8
[答案]:
C
[解析]:
考点:
静态修饰局部变量改变了变量的周期(让静态局部变量出了作用域依然存在,知道程序结束,生命周期才停止)
4、下面3段程序代码的效果一样吗()
int b;
(1)const int *a = &b;
(2)int const *a = &b;
(3)int *const a = &b;
A:(2)=(3)B:(1)=(2)C:都不一样D:都一样
[答案]:
B类
[解析]:
考点:指针常量和常量指针
重要区别:*的位置
我们以*为分界线,如果const在*左边,那么就是常量指针(指针指向的是常量);
如果const在*右边,那么就是指针常量(指针是个常量)
1.常量指针:指针指向的内容是常量(const只存在于指针指向的过程中,而与变量本身是否被const修饰无关)
Const:int*n;
Int in const*n;
注意两点:
(1)常量指针的意思是不能通过指针解引用改变变量(B)的值,但是可以通过其他引用来改变变量(B)的值
int b=5;
const int *a=&b;
b=6;
(2)常量指针可以改变指向,常量指针可以指向其他的地址
int a = 5;
int b = 6;
const int* n = &a;
n = &b;
2.指针常量:指针本身是个常量,不能指向其他的地址
Int*const n;
*注意:
指针常量指向的地址不能改变,但是地址中保存的值是可以改变的,数据可以通过其他指向改变地址的指针来修改
int a = 5;
int* p = &a;
int* const n = &a;
*p = 8;//通过p指针来改变a的值
5、对于下面的说法,正确的是()
A:对于结构X{Short S;int i;char c;},sizeof(X)sizeof(S)+sizeof(I)+sizeof(C)
B:对于某个Double变量a,可以使用a==0.0来判断其是否为零
C:初始化方式char a[14]=“你好,世界!”;和char a[14];a=“你好,世界!”;的效果相同
D:以上说法都不对
[答案]:
D
[解析]:
一个。没有考虑内存对齐
胡麻B.考察浮点型的比较,由于浮点型存在误差,不能直接判断两个数是否相等,通常采用比较两个数差的绝对值是否小于一个很小的数,作为误差
C。第二种的a代表首元素的地址,地址是常量不可以改变
二、编程题
1.尼科彻斯定理
[参考答案]:
通过数学规律找到要打印的第一个数,第一个数就是m*m-m+2*i+1
注意最后一个数不用打印+,所以要特殊考虑
#include <stdio.h>
int main()
{
int m=0;
int count=0;
//输入
scanf("%d",&m);
//输出
for(int i=0;i<m;i++)
{
if(i!=m-1)
printf("%d+",m*m-m+2*i+1);
//最后一个没+
else
printf("%d",m*m-m+2*i+1);
}
return 0;
}
2.等差数列
[参考答案]:
就是套数学公式,Sn=a1*n+n*(n-1)*d/2
#include <stdio.h>
int main()
{
int n=0;
//输入
scanf("%d",&n);
//输出
printf("%d",2*n+n*(n-1)*3/2);
}
- 程序开发学习排行
-
- 1鸿蒙HarmonyOS:Web组件网页白屏检测
- 2HTTPS协议是安全传输,为啥还要再加密?
- 3HarmonyOS鸿蒙应用开发——数据持久化Preferences
- 4记解决MaterialButton背景颜色与设置值不同
- 5鸿蒙HarmonyOS实战-ArkUI组件(RelativeContainer)
- 6鸿蒙HarmonyOS实战-ArkUI组件(Stack)
- 7鸿蒙HarmonyOS实战-ArkUI组件(GridRow/GridCol)
- 8[Android][NDK][Cmake]一文搞懂Android项目中的Cmake
- 9鸿蒙HarmonyOS实战-ArkUI组件(mediaquery)
- 最近发表
-
- WooCommerce最好的WordPress常用插件下载博客插件模块的相关产品
- 羊驼机器人最好的WordPress常用插件下载博客插件模块
- IP信息记录器最好的WordPress常用插件下载博客插件模块
- Linkly for WooCommerce最好的WordPress常用插件下载博客插件模块
- 元素聚合器Forms最好的WordPress常用插件下载博客插件模块
- Promaker Chat 最好的WordPress通用插件下载 博客插件模块
- 自动更新发布日期最好的WordPress常用插件下载博客插件模块
- WordPress官方最好的获取回复WordPress常用插件下载博客插件模块
- Img to rss最好的wordpress常用插件下载博客插件模块
- WPMozo为Elementor最好的WordPress常用插件下载博客插件模块添加精简版