【C语言】山西省2023年专升本考试C程序设计(真题领取+难度解析)

⬇️⬇️⬇️点击链接免费下载真题⬇️⬇️⬇️

【免费】【C程序设计】2023年山西省专升本考试真题资源-CSDN文库

问:为什么选择我的文章?

答:① 可以白嫖真题

       ② 本人自学上岸山西传媒学院,升本经验真实可信

       ③ 站在考生角度的难度分析以及建议,看到就是赚到

       ④ 评论区有问必答,私信有问必回,前提是你要关注我


一点建议:(必看)

  • 有上考场的实力再做真题!做完真题再看正文!可以先点赞收藏方便以后看,建议直接把CSDN下载下来,程序员必备。

        ① 在考前做模拟卷或真题时,要按照考试时间严格要求自己,养成在这个时间做题的习惯。

        ② 真题做一次少一次,目前只有2021、2022、2023的真题具有参考价值,我认为真题最多做三遍就不要再碰了(因为此时你差不多能把答案都背下来了,真题不再具有价值),一定要等自己有上考场的实力以后再做真题,要留一遍在考前一两天做

        ③ 报升本机构要慎重,最好跟他要几张机构的模拟卷看看。如果跟真题出入太大(比如题量题型跟真题不一致),就不要考虑这家了,去了你会后悔的。如果你不是很了解真题的出题规律,可以私信我帮你看。

        ④ 不要有太多精神压力,反正考不上公办还有民办,但也不要因此摆烂,我认为上个公办并不难,考场上”水货“很多,真正和你有竞争关系的人凤毛麟角。

暂时就这么多,等以后想到别的再补充。


本文目录

一、单项选择题

二、填空题

三、程序阅读题

四、编程题

↓↓↓ 以下为正文 ↓↓↓


一、单项选择题

难度: 送分 

解析:基础知识懂的都懂

执行过程:编辑(.c)-> 编译(.obj)-> 连接(.exe)-> 运行

难度: 有一点 

解析:可能有同学会在 long int 和 double 之间纠结,C语言没有明确规定 long int 的大小,在不同的机器上 long int 的大小有所不同,可能是4字节,也可能是8字节,而 double 类型一定是8字节。

难度: 中等 

解析:同学们可以去网上搜一下C语言运算符优先级表,但是想把这个表全部背下来还是有点难度的

简单来说:!> 算术运算符 > 关系运算符 > && > || > 赋值运算符

难度: 送分 

解析:"%10.3f" 中的 .3 代表打印时保留 3 位小数。

难度: 送分 

解析:选项A,"5"是双引号,是字符串

           选项B,'5'是单引号,是字符常量,故选B

           选项C,5是个数字

           选项D,"Hello"也是个字符串

难度: 中等 

解析:这道题就看大家对C语言的学习深度了,一般人很容易搞混,所以今年的题目虽然简单,但还是很容易就拉开分数

        1字节:-128 ~ +127

        2字节:-32768 ~ +32767

        4字节:-2147483648 ~ +2147483647

小细节:负的尾数为8,正的尾数为7

难度: 送分 

解析:做这种题就把二维数组画出来,一目了然

注意:没被初始化的元素值为0,不是随机值

                      x[1][2] = 0

难度: 送分 

解析:选项ABD都没问题,都是正常的赋值操作

           选项C,a[3]越界了

难度: 送分 

解析:x数组虽然没有被全部使用,但他确确实实向内存申请了这么多空间,就算他不用这也是他的空间,所以x占了2*10=20字节,这种送分题可千万别出错了

难度: 送分 

解析:这道题都做错的建议抽自己一个大嘴巴

总结:基本全是送分题,选择题最多错一道,错两道及以上的自己好好反思一下,究竟是哪里没学到位。


二、填空题

难度: 送分 

解析:进制转换应该是每位计算机专业同学的基本功,非常容易考到!!!

这里使用连除法:

        25 % 16 = 1     -------  余数:9

        1 % 16 = 0       -------  余数:1

把得到的余数从下往上写,就是19由于是十六进制数字,前面别忘了加上 0x,所以答案为 0x19

难度: 超级坑题!

解析:本题的标准答案到底是啥没人能确定,此代码在不同编译器上是不同的结果,大家遇见这种题就不要纠结了,建议直接跳过

难度: 有一点 

解析:又是一道关于优先级的题目,注意题目要的是b--==256这个表达式的值,而不是b的值

难度: 偏难 

储备知识:① 每个字符串的末尾都有一个看不见的 '\0' 

                  ② strlen()函数计算字符串长度时遇到 '\0' 就停止

                  ③ '\ddd' 是一个转义字符,ddd表示1~3位八进制数字,比如题目中的 '\040' 就是一个转义字符

                  ④ ‘\xhh’ 也是一个转义字符,即 '\x’ 后跟着1~2位十六进制数字,他们实际上是一个转义字符,如:'\xAB'、'\x12'、'\xA2'

解析:可千万别单纯的把题目中的 '\0' 看成一个转义字符,人家后面还有俩数字呢,'\040' 才是一个完整的转义字符!!!

难度: 中等 

解析:本题考到了指针之间的相减,很多同学没有重视这块知识,导致丢分

注意:指针做减法运算时,一定要指向同一个数组,相减结果是两个指针之间的元素的数目,而不是两个指针之间相差的字节数

        p 是一个指针,它指向 &a[0],

        所以 p - &a[4] 可以看为:&a[0] - &a[4],

        由于是指针相减,结果为元素数目相减,也就是 0 - 4,得到结果 -4

难度: 送分 

解析:0x20、0x30、0x40 全部都是不为 0 的十六进制数字,所以也不用考虑什么优先级了,结果一定是 1 。

难度: 有一点 

解析:背过就有分,没背过就没分,想要拉开分数就得靠这些细碎的知识点

⬇️如果你对文件操作的内容还是一知半解,可以看我的另一篇博客⬇️

【C语言】文件操作重点内容梳理_字节连结的博客-CSDN博客

难度: 送分 

解析:这道题都做错的,我觉得你可能真的应该抽自己一个大嘴巴

总结:今年的填空题中,没有考程序填空,反而考了许多比较冷门的细节知识,这告诉我们:不能只会敲代码了,还要多重视书上那些细碎的小知识点呀!


三、程序阅读题

难度: 有一点(真“有一点”)

解析:注意输出时的逗号啊!别忘了那个逗号!!!

难度: 送分 

解析:我想不到什么情况下才会做错这道题,莫非是不会乘法??

难度: 送分 

解析:送分题不解释

难度: 送分 

解析:函数的传址调用

做题技巧:① 把 f2() 函数中的 x 替换为 &a,y 替换为 &b

                  ② 一个 * 和一个 & 相互抵消

难度: 送分 

解析:小写字母 - 32 = 大写字母

难度: 有一点 

解析:注意输出时的补空格,在答题卡上要空出合适的位置

总结:这种题型(程序阅读题)的难题不多,主要看细节,比如19题的逗号,没注意到就扣五分


四、编程题

注:编程题答案仅供参考,不要背代码!不要抄代码!一点用都没有!!!

难度: 送分 

参考答案:

#include <stdio.h>

int main()
{
	//假设有100只鸡,0只兔
	int chicken = 100;
	int rabbit = 0;
	while (chicken >= 0 && rabbit >= 0)//鸡兔的个数不可能为负
	{
		if (chicken * 2 + rabbit * 4 == 284)
		{
			printf("鸡有%d只,兔有%d只\n", chicken, rabbit);
			break;
		}
		//鸡-1,兔+1,总数还是100
		chicken--;
		rabbit++;
	}
	return 0;
}

难度: 有一点 

解析:如果没有见过这类型题的代码,那么你在考场上很可能读不懂题

参考答案:

#include <stdio.h>

int main()
{
	double e = 1;
	int n = 1;
	int i = 2;
	while (1.0 / n >= 1e-4)//1e-4就是10的负4次方
	{
		e += 1.0 / n;
		n = n * i;
		i++;
	}
	printf("e = %lf\n", e);
	return 0;
}

难度: 送分 

解析:会水仙花数就会这道题

参考答案:

#include <stdio.h>
#include <math.h>

int main()
{
	int sum;
	int i;
	for (i = 1000; i <= 9999; i++)
	{
		sum = 0;
		int temp = i;
		while (temp != 0)
		{
			sum += (int)pow(temp % 10, 4);
			temp /= 10;
		}
		if (i == sum)
		{
			printf("%d ", i);
		}
	}
	return 0;
}

难度: 有一点 

储备知识:① 素数,指的是“大于1的整数中,只能被1和这个数本身整除的数”

                  ② short类型输入输出用"%hd"

参考答案:

#include <stdio.h>

int main()
{
	short arr[10] = { 0 };
	short sum = 0;
	int i;
	//1.输入10个短整型数
	for (i = 0; i < 10; i++)
	{
		scanf("%hd", &arr[i]);
	}
	//2.遍历数组,判断是否为素数
	for (i = 0; i < 10; i++)
	{
		int flag = 1;//此变量用于判断,flag=1代表是素数,flag=0则不是素数
		//注意:只有大于1的数字才有可能是素数
		if (arr[i] > 1)
		{
			int j;
			for (j = 2; j < arr[i]; j++)
			{
				//如果被整除,说明该数字不是素数,把flag改为0
				if (arr[i] % j == 0)
				{
					flag = 0;
				}
			}
		}
		//若该数字小于等于1,则该数字不可能为素数
		else
		{
			flag = 0;
		}
		//3.如果是素数,就把他们的和加起来
		if (flag)
		{
			sum += arr[i];
		}
	}
	//4.打印结果
	printf("sum = %hd\n", sum);
}

总结:今年编程题没有难题,只要认真学过C语言就肯定都会做,但还是有一些细节问题会造成丢分。


本试卷要达到130分以上才有可能上岸理想的院校,做完的同学可以在评论区留下你的分数

学长分析今年试卷:

        相较于前两年,今年的出题尤为简单,程序填空、程序改错题均未出现,编程题也都是基础题型,但这并不意味着考上公办院校变得容易,恰恰相反,我认为这种情况下,反而让考试变得更加艰难:题目太简单,难以拉开分数。想象一下,一个学习500小时的人和一个学习100小时的人都一样会做这张试卷,在这种情况下,实力显得没那么重要了,而是要比谁更细心、谁的内心更加强大,要在考场上临危不乱,心思缜密。

  • 38
    点赞
  • 126
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 19
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

字节连结

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值