C语言错题集 (1) (慢慢来比较快)(将练习过程中的错题整理出来,归纳知识点)
选择题(2道)
第一题:
下面代码的结果是:( )
#include <stdio.h>
int main()
{int arr[] = {1,2,3,4,5};short *p = (short*)arr;int i = 0;for(i=0; i<4; i++){*(p+i) = 0;}for(i=0; i<5; i++){printf("%d ", arr[i]);}return 0;
}
A.1 2 3 4 5
B.0 0 3 4 5
C.0 0 0 0 5
D.1 0 0 0 0
我的答案:C
正确答案:D
解答:
知识点:①小端存储
②sizeof( short ) = 2
10进制:1 2 3 4 5
原先二进制:00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05
结合sizeof( short ) = 2,
得到现在的二进制:00 00 00 00 00 00 00 00 00 00 00 03 00 00 00 04 00 00 00 05
答案就是:0 0 3 4 5
第二题:
题目名称:
下面代码的结果是:
#include <stdio.h>
int i;
int main()
{i--;if (i > sizeof(i)){printf(">\n");}else{printf("<\n");}return 0;
}
A.>
B.<
C.不输出
D.程序有问题
我的答案:D
正确答案:A
解答:
知识点:① sizeof( ) 的结果是 unsigned int
② 算数转换:long double
double
float
unsigned long int
long int
unsigned int
int
unsigned short
short
③ -1 的补码 11111111
4 的补码 00000100
由于是 unsigned int ,显然,-1 > 4
#include <stdio.h>int i; // i 是全局变量,全局在没有赋初值的时候,编译器会自动将其赋值为 0
int main()
{i--; // i = -1if (i > sizeof(i)) //判断 -1 > 4 ???{ //sizeof() 的结果是 unsigned int printf(">\n"); //所以,要将 i 先转换成 unsigned int ,然后和 -1 进行比较}else{printf("<\n");}return 0;
}
编程题(3道)
第一题:
计算求和
题目内容:
求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,
例如:2+22+222+2222+22222
我的答案(运行正确)
知识点:
① double pow (double base , double exponent)
#include <stdio.h>
#include <math.h>int main()
{int i = 0;int sum = 0;for (i = 1; i < 6; i++){int j = 0;int ret = 0;for (j = 0; j < i; j++){ret += 2*pow(10, j);}sum += ret;}printf("%d\n", sum);return 0;
}
提供的答案:
通过观察可以发现,该表达式的第i项中有i个a数字,因此:
假设第i项为temp,则第i+1项为temp*10+a
具体参考以下代码
*/
int main()
{int a = 0;
int n = 0;
int i = 0;
int sum = 0;
int tmp = 0;scanf("%d%d", &a, &n);
for(i=0; i<n; i++)
{tmp = tmp*10+a;
sum += tmp;
}
printf("%d\n", sum);return 0;
}
第二题:
使用指针打印数组内容
写一个函数打印arr数组的内容,不使用数组下标,使用指针。
arr是一个整型一维数组。
我的答案:
#include <stdio.h>panduan(int* a,int sz)
{int i = 0;for (i = 0; i < sz; i++){printf("%5d\n", *a);a = a + 1;}
}int main()
{int arr[] = {0,1,2,3,4,5,6,7,8,9 };int size = sizeof(arr) / sizeof(arr[0]);panduan(arr,size);return 0;
}
视频课程给出的答案:
#include <stdio.h>int main()
{int arr[] = { 1,2,3,4,5,6,7,8,9,0 };int size = sizeof(arr)/sizeof(arr[0]);int* p = arr;int* pend = arr + size - 1;while (p < pend){printf("%d\n", *p);p++;}return 0;
}
第三题:
求出0~100000之间的所有“水仙花数”并输出。
“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=13+53+3^3,则153是一个“水仙花数”。
正确解答过程:(我调试了40多分钟)
#include <stdio.h>
#include <math.h>int main()
{int i = 0;for (i = 0; i < 100000; i++){int count = 1;int pb = i; //一定要将 i 赋值给 变量 pb,因为假设用 i 进行 i/10 运算时while (pb / 10) //就会将 i 的值改变 {count++;pb /= 10;}double ret = 0;int temp = i; //一定要将 i 赋值给 变量 temp,while (temp){ret += pow((double)(temp % 10), (double)count);temp = temp / 10;}if ((double)i == ret) //这里体现了将 i 赋值给变量 pb 和变量 temp 的重要性printf("%d\n", i);}return 0;
}
答案给出的过程:
此题的关键在于只要知道判断一个数据是否为水仙花数的方式,问题就迎刃而解。假定给定一个数据data,具体检测方式如下:1. 求取data是几位数2. 获取data中每个位置上的数据,并对其进行立方求和3. 对data中每个位上的数据立方求和完成后,在检测其结果是否与data相等即可,相等:则为水仙花数否则:不是具体实现参考以下代码。*/int main(){int i = 0;for(i=0; i<=999999; i++){int count = 1;int tmp = i;int sum = 0;//判断i是否为水仙花数//1. 求判断数字的位数while(tmp/10){count++;tmp = tmp/10;}//2. 计算每一位的次方和tmp = i;while(tmp){sum += pow(tmp%10, count);tmp = tmp/10;}//3. 判断if(sum == i)printf("%d ", i);}return 0;}
C语言错题集 (1) (慢慢来比较快)(将练习过程中的错题整理出来,归纳知识点)相关推荐
- 沈阳师范大学大一上册C语言PTA题目集以及答案(第三章 循环结构程序设计 编程题篇)
沈阳师范大学大一上册C语言PTA题目集以及答案(第三章 循环结构程序设计 编程题篇) 7-1 求阶乘序列前N项和 (15分) 本题要求编写程序,计算序列 1!+2!+3!+⋯ 的前N项之和. 输入格式 ...
- 一本好的“错题集”如何做?看这里
<错题本>制作 每个人肯定都有听说,错题本对高考到底多么多么有用,对我们的复习多么多么有用.但是问题也来了,做错题本好像要用我们很多的时间,可能做完了还空看,那怎么办呢?今天本车从做错题本 ...
- C语言易错题集 第四部
C语言易错题集 第四部 一.位操作相关 二.switch()相关 三.输出相关 四.实数相关 五.指针&a相关 六.指针访问数组元素相关 七.转义字符相关 八.类型提升问题 九.是不是正确的浮 ...
- C语言易错题集 第二部
C语言易错题集后续 一.共用体相关(union) 二.do,while相关 三.char溢出相关 四.printf()相关 五.++相关 六. for语句相关 七.calloc()相关 八.defin ...
- C语言练习题的错题集
@C语言练习题错题集 判断题错题集 1.在对数组全部元素赋初值时,不可以省略行数,但能省略列数. 对于数组来说,列数是不可以省略的,相反的可以省略行数. 2.数组名就是一个指针常量,指向数组的首元素( ...
- C语言错题集(指针2020/12/8)
C语言错题集(指针2020/12/8) 1.关于C语言指针的运算:指针只有加减操作,没有乘除操作.指针可以加常数.减常数:相同类型的指针可以相加.相减.(F) 指针之间可以相减,但不可以相加:两个同一 ...
- c语言解三元一次方程组_七年级下学期《8.3 一元一次不等式组》2020年高频易错题集...
一.选择题(共10小题) 二.填空题(共5小题) 三.解答题(共5小题) 七年级下学期<8.5 一元一次不等式组>2020年高频易错题集 参考答案与试题解析 一.选择题(共10小题) [点 ...
- C语言易错题集 第三部
目录 一.C语言程序exe相关 二.sizeof和strlen相关 三.小端存储相关 四.break和continue相关 五.函数声明相关 六.递归相关 七.预处理相关 八.C语言程序的最小单元相关 ...
- php开发错题集,基于PHP技术数学错题集错系统的设计实现
基于PHP技术的数学错题集错系统的设计与实现 摘要:现代信息技术的快速发展和不断更新,引发了教育教学领域的深刻变革.先进的教育理念鼓励教师把现代信息技术与其它学科课程相整合,鼓励教育技术从" ...
- 2020年国考行测错题集(省级)
15.下列关于电池的说法错误的是: A.干电池利用液态电解液产生电流 B.自行放电是蓄电池不可避免的渐生故障 C.锂电池不会产生铅.汞等有害重金属物质 D.太阳能电池产生的电是直流电 答错选项:C 答 ...
最新文章
- 在Corporate Network里配置SAP Cloud Connector连接SAP云平台,需要设置代理
- ado filter 多条记录_注意!武汉江南中心绿道武九线综合管廊工程开工,青山区多条道路通行规则有变...
- python 爬虫热搜_Python网络爬虫之爬取微博热搜
- linux常用的文件操作命令大全,(办公)记事本_Linux常用的文件操作命令
- Kendo UI 模板概述
- 百度文库免费复制文字_我们有2种通过鼠标右键复制百度文库的方法要告诉你...
- 《算法图解》---笔记
- 高速下载百度网盘资料(Tampermonkey+百度网盘直链下载助手+xdown)
- android+ios打印机,Android/iOS手机安装HP打印机的详细方法和操作步骤
- matlab添加文件夹语音_怎么使用MATLAB导入语音,如果是用MP3录音过的WAV文件又怎么导入?...
- Teamcenter 与各种工具软件的集成解决方案
- 方寸微 T620 存储安全芯片 安全存储 USB3.0 U盘/移动硬盘
- html个性花边代码,十种漂亮的多层花边边框代码
- 自创文字小游戏《人类末日·丧尸危机》
- Spring Cloud自定义Hystrix请求命令 1
- 云表WMS仓储管理系统助力公司业务增长
- beats耳机用安卓手机影响音效么_100元以内性价比高无线蓝牙耳机推荐:音质最好的蓝牙耳机排行榜10强...
- mysql 从入门到精通之 Linux环境安装mysql数据库
- 腾讯搞了一个大新闻,躺枪的竟是百度……辣眼睛
- matlab光学仿真——菲涅尔透镜优化代码