2个月搞定计算机二级C语言——真题(11)解析

news/2024/11/14 17:00:54/文章来源:https://www.cnblogs.com/main-studio/p/18538484

1. 前言

今天双 11,正好轮到讲第 11 篇,直接来个三 11。

那么本篇我们讲解2个月搞定计算机二级C语言——真题11

真题11-程序评分

2. 程序填空题

2.1 题目要求

真题11-程序填空

2.2 提供的代码

#include   <stdio.h>
#include   <ctype.h>
#pragma warning (disable:4996)
void fun(int* cd, int* cu, int* cs)
{char  c;printf("用回车键结束输入!\n");while ((c = getchar()) != '\n'){/**********************found***********************/if (c >= '0' && ____(1)____)  ++*cd;/**********************found***********************/if (____(2)____ && c <= 'Z')  ++*cu;/**********************found***********************/if (c >= 'a' && ____(3)____)  ++*cs;}
}main()
{int cd, cu, cs;cd = cu = cs = 0;fun(&cd, &cu, &cs);printf("数字的个数: %d\n", cd);printf("大写字母的个数: %d\n", cu);printf("小写字母的个数: %d\n", cs);
}

2.3 解题思路

这道题是对于范围的判断,在字符中数字的范围是'0'~'9',小写字母的范围是'a'~'z',大写字母的范围是'A'~'Z'

要统计个数,只需要判断是否符合这个范围即可。

第(1)处填空:

数字的范围,即 0 到 9。

if (c >= '0' && c <= '9')  ++*cd;

第(2)处填空:

大写字母的范围,即 A 到 Z。

if (c >= 'A' && c <= 'Z')  ++*cu;

第(3)处填空:

小写字母的范围,即 a 到 z。

if (c >= 'a' && c <= 'z')  ++*cs;

2.4 代码实现

填写完整的代码:

#include   <stdio.h>
#include   <ctype.h>
#pragma warning (disable:4996)
void fun(int* cd, int* cu, int* cs)
{char  c;printf("用回车键结束输入!\n");while ((c = getchar()) != '\n'){/**********************found***********************/if (c >= '0' && c <= '9')  ++*cd;/**********************found***********************/if (c >= 'A' && c <= 'Z')  ++*cu;/**********************found***********************/if (c >= 'a' && c <= 'z')  ++*cs;}
}main()
{int cd, cu, cs;cd = cu = cs = 0;fun(&cd, &cu, &cs);printf("数字的个数: %d\n", cd);printf("大写字母的个数: %d\n", cu);printf("小写字母的个数: %d\n", cs);
}

提示:为确保代码正常运行,请在题库编程环境的对应题目中进行测试和运行。

3. 程序修改题

3.1 题目要求

真题11-程序修改

3.2 提供的代码

#include <stdio.h>
int  fun(int  n, int  a[], int* k)
{int  m = 0, i, t;t = n;/**********found**********/for (i = 0; i < n; i++)if (n % i == 0){a[m] = i;  m++;  t = t - i;}/**********found**********/k = m;/**********found**********/if (t = 0)  return  1;else  return  0;
}main()
{int  n, a[10], flag, i, k;printf("请输入一个整数:    ");  scanf("%d", &n);flag = fun(n, a, &k);if (flag){printf(" %d 是完数,其因子是:  ", n);for (i = 0; i < k; i++)   printf("  %d ", a[i]);printf("\n");}else    printf(" %d 不是完数.\n ", n);getchar();
}

3.3 解题思路

第(1)处修改:

我们知道 0 是不能做除数的,所以这里i的初始值不能为 0,应从 1 开始。

for (i = 1; i < n; i++)

第(2)处修改:

这里要做的是将m的值通过指针int* k传递回去,即存放因子个数,所以这里需要对指针k进行解引用操作。

*k = m;

第(3)处修改:

语法错误,一个=为赋值,两个==为判断左右值是否相等。

if (t == 0)  return  1;

3.4 代码实现

修改后的代码:

#include <stdio.h>
int  fun(int  n, int  a[], int* k)
{int  m = 0, i, t;t = n;/**********found**********/for (i = 1; i < n; i++)if (n % i == 0){a[m] = i;  m++;  t = t - i;}/**********found**********/*k = m;/**********found**********/if (t == 0)  return  1;else  return  0;
}main()
{int  n, a[10], flag, i, k;printf("请输入一个整数:    ");  scanf("%d", &n);flag = fun(n, a, &k);if (flag){printf(" %d 是完数,其因子是:  ", n);for (i = 0; i < k; i++)   printf("  %d ", a[i]);printf("\n");}else    printf(" %d 不是完数.\n ", n);getchar();
}

提示:为确保代码正常运行,请在题库编程环境的对应题目中进行测试和运行。

4. 程序设计题

4.1 题目要求

真题11-程序设计

4.2 提供的代码

#include <stdio.h>
float  fun(int m, int n)
{}main()   /* 主函数 */
{void NONO();printf("P=%f\n", fun(12, 8));NONO();getchar();
}void NONO()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */FILE* fp, * wf;int i, m, n;float s;fp = fopen("in.dat", "r");wf = fopen("out.dat", "w");for (i = 0; i < 10; i++) {fscanf(fp, "%d,%d", &m, &n);s = fun(m, n);fprintf(wf, "%f\n", s);}fclose(fp);fclose(wf);
}

4.3 解题思路

这道题也不难,让我们用函数fun完成公式求p的值。

公式中是三个阶乘做乘除运算,所以我们需要先计算出阶乘,在return时直接套入公式就可以了。

在程序中用了三个for循环,分别计算m!n!(m-n)!,最后通过return (_m / (_n * _mn));返回计算结果P

4.4 代码实现

填写完整的代码:

#include <stdio.h>
float  fun(int m, int n)
{float _m = 1.0, _n = 1.0, _mn = 1.0;int i = 0;// 计算 m 的阶乘for (i = 1; i <= m; i++){_m *= i;}// 计算 n 的阶乘for (i = 1; i <= n; i++){_n *= i;}// 计算 m-n 的阶乘for (i = 1; i <= (m - n); i++){_mn *= i;}return (_m / (_n * _mn));   // 通过公式求出 P,将其返回
}main()   /* 主函数 */
{void NONO();printf("P=%f\n", fun(12, 8));NONO();getchar();
}void NONO()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */FILE* fp, * wf;int i, m, n;float s;fp = fopen("in.dat", "r");wf = fopen("out.dat", "w");for (i = 0; i < 10; i++) {fscanf(fp, "%d,%d", &m, &n);s = fun(m, n);fprintf(wf, "%f\n", s);}fclose(fp);fclose(wf);
}

提示:为确保代码正常运行,请在题库编程环境的对应题目中进行测试和运行。

5. 后记

本篇博客到这就结束了,如果您有疑问或建议欢迎您在留言区留言。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/831728.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录——二叉树-12.平衡二叉树

自顶向下递归(前序遍历)这种方法是一开始想到的,虽然ac了但是对于它的本质却不清不楚,不知道时间复杂度,不知道属于前序遍历。思路 首先得到root节点的左右子树的深度(左右),若深度差绝对值大于1(中),则root为根的树不是平衡二叉树; 否则继续递归root的左右子树,其…

【论文系列】之 ---- CLIP

CLIP(Contrastive Language-Image Pre-Training) 从名字显而易见:语言-图像,预训练,主要用于学习图像 该模型的核心思想是使用大量图像和文本的配对数据进行预训练,以学习图像和文本之间的对齐关系 CLIP模型有两个模态,一个是文本模态,一个是视觉模态,包括两个主要部分…

[极客大挑战 2019]Havefun

页面一只猫,啥东西也没有,直接检查页面源码发现只有输入参数cat==dog就会输出一个值直接拿到flag

代码随想录——二叉树-11.完全二叉树的节点个数

思路 一、层序遍历,时间复杂度O(n) 二、利用完全二叉树性质,时间复杂度O(logn * logn)(小于O(n)) 完全二叉树性质:若树深度为h,则前h-1层节点都达到最大值。第h层节点都集中在最左侧的位置 完全二叉树要么1.是满二叉树 2.最后一层没满满二叉树计算节点数太方便了,直接用…

Rocky9系统安装PostgreSQL

官网 https://www.postgresql.org/环境查看安装 登录官网根据平台选择帮助文档sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm sudo dnf -qy module disable postgresql sudo dnf install -y po…

【GiraKoo】GLSurfaceView闪现黑屏的问题

Android下GLSurfaceView在显示正式内容之前,会有一个黑屏的过程。本文解释如何解决这个问题。【GiraKoo】GLSurfaceView闪现黑屏的问题 现象在Android平台,多个Activity之间进行切换。 使用GLSurfaceView进行描画,会有短暂的黑屏显示。对策设置GLSurfaceView的Surface的Form…

Mysql高可用架构方案

目录Mysql 介绍高可用结构主从模式主从模式介绍主从复制技术主从模式注意事项MHA(MasterHighAvailability)MHA模式介绍MHA工作流程MMM(Multi-MasterReplicationManagerForMysql)MGR(MysqlGroupReplication)总结 Mysql 介绍 Mysql是典型的开源关系型数据库,是许多网站、应…

postcss-px-to-viewport 移动端适配

以前做移动端项目的时候都是用rem来做适配,现在基本上都是通过viewport单位来做。 postcss-px-to-viewport就是一个将px单位转换为视口单位的 (vw, vh, vmin, vmax) 的 PostCSS 插件,它可以将你CSS中的px单位转化为vw,1vw等于1/100视口宽度。 1.安装 javascript代码解读 复…

支持多语言、多商店的商城,.Net7 + EF7领域驱动设计架构

推荐一个跨平台、模块化、可扩展且超快速的开源一体化电子商务平台。01项目简介 Smartstore 支持桌面和移动平台、多语言、多商店、多货币的商城,并支持SEO优化,支持无限数量的产品和类别、报表、ESD、折扣、优惠券等等。 还有一套全面的 CRM 和 CMS、销售、营销、付款和物流…

连接数据库-mysql

连接前的三个条件:下载好JDK环境、Mysql、数据库驱动jar包 jar包也去MySQL官网上下就可以 然后创建数据库,我是在Navicat上建的数据库然后创建的表。也尝试在小黑框那创建了但总出错。跟着up主改配置改了一通up主是成果了,我也没成功。。。、 然后在eclipse上新建项目,连上…

联影医疗王欢:智能管理驾驶舱推动业务闭环管理

在当今竞争激烈的市场环境下,市场的瞬息万变和客户需求的多样化,使得传统封闭式的经营管理模式难以为继,企业内部管理的复杂性也在不断加剧。许多企业在经营管理中普遍存在着管理效率低下、管理决策滞后、缺少闭环机制、目标缺乏协同、绩效信息黑匣等问题。 面对这些挑战,“…

代码语言模型是如何训练的:Qwen2.5-Coder 技术报告学习

Qwen2.5-Coder 是通义千问最新的代码语言模型,基于 Qwen2.5 的架构继续 pretrain 了 5.5T 的 token。通过细致的数据清洗、可扩展的合成数据生成和平衡的数据混合,Qwen2.5-Coder在展示令人印象深刻的代码生成能力的同时,还保留了通用的多功能性。本文根据官方的技术报告(Qw…