1. 前言

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

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

2. 程序填空题

2.1 题目要求

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 题目要求

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 题目要求

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. 后记

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

2个月搞定计算机二级C语言——真题(11)解析的更多相关文章

  1. 二级C语言真题笔记

    二级C语言真题笔记 1. 知识重点:数据类型.循环.数组.函数.指针.结构体与共同体 2. 求程序的运行结果 #include <stdio.h> main() {     short i ...

  2. 计算机二级-C语言-程序修改题-190108记录-字符串处理

    //程序修改题:给定程序MODI1.C中函数fun的功能是:先将字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面.例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为 ...

  3. 计算机二级-C语言-程序修改题-190113记录-对指定字符串的大小写变换处理。

    //给定程序中fun函数的功能是:将p所指的字符串中每个单词的最后一个字母改成大写.(这里的“单词”是指由空格隔开的字符串) //重难点:指针对数组的遍历.大小写转换的方法.第一种使用加减32 得到, ...

  4. 计算机二级-C语言-程序设计题-190112记录-结构体的遍历和结构体的数据的交换处理,文件的操作。

    //程序设计题:学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数低的学生数据放在b所指的数组中,注意:分数最低的学生可能不止一个,函数返回 ...

  5. 计算机二级-C语言-程序设计题-190111记录-两种指针赋值的不同,普通输入输出函数和文件输入输出函数的使用

    //程序设计题:函数fun的功能是:将两位数的正整数a,b合并形成一个整数放在c中.合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上.例如:当 ...

  6. 计算机二级-C语言-程序修改题-190123记录-对整数进行取余和除以操作。

    //函数fun功能:将长整型数中每一位上为偶数的数依次取出,构成一个新数放在t中.高位仍在高位,低位仍在低位. //重难点:思路:因为不是字符串,所以可以把问题变成整数的操作,采用取余和除的操作.对整 ...

  7. 计算机二级-C语言-程序设计题-190119记录-求出一个二维数组每一列的最小值。

    //编写一个函数:tt指向一个M行N列的二维数组,求出二维数组每列中最小的元素,并依次放入pp所指的一维数组中.二维数组中的数在主函数中赋予. //重难点:求出的是每一列的最小值,这里要注意,学会简化 ...

  8. 计算机二级-C语言-程序设计题-190118记录-通过数组和指针两种方式对字符串进行处理。

    //编写一个函数fun,比较两个字符串的长度,(不使用C语言提供的求字符串长度的函数),函数返回较长的字符串.若两个字符长度相同,则返回第一个字符串. //重难点:通过数组处理和通过指针进行处理的不同 ...

  9. 计算机二级-C语言-程序修改题-190116记录-对数组进行排序的两种方法。

    //函数fun的功能是:将n个无序整数从小到大排序. //冒泡排序法:小数往下浮,大数往上浮.把数都存到一个数组,然后两两比较,大数往后交换.双层递减循环. //第二种方法:都放入一个数组中,然后记录 ...

  10. 计算机二级-C语言-程序修改题-190114记录-对整型变量进行取余操作可以取得各个位上的值。

    //给定程序中fun函数的功能是:从低位开始取出长整形变量s中奇数位上的数,依次构成一个新的数放在t中.高位仍在高位,低位仍在低位.例如:当s中的数为7654321时,t中的数为7531. //重难点 ...

随机推荐

  1. Macos 安装md5sum、sha1sum、md5deep、sha1deep

    一.安装md5sum和sha1sum 方法一:brew 安装 # brew install md5sha1sum 方法二:编译安装 源码下载地址:http://www.microbrew.org/to ...

  2. MySQL said: Authentication plugin 'caching_sha2_password' cannot be loaded

    OUTLINE问题描述解决方案问题描述在mac下,用sequel pro连接数据库,出现以下问题: MySQL said: Authentication plugin 'caching_sha2_pa ...

  3. Java Function 接口用法

    Java 8 中 Function 接口的介绍 Java 8 中提供了一个函数式接口 Function,这个接口表示对一个参数做一些操作然后返回操作之后的值.这个接口的有一个抽象方法 apply,这个 ...

  4. Qt开源作品26-通用按钮地图效果

    一.前言 在很多项目应用中,需要根据数据动态生成对象显示在地图上,比如地图标注,同时还需要可拖动对象到指定位置显示,能有多种状态指示,安防领域一般用来表示防区或者设备,可以直接显示防区号,有多种状态颜 ...

  5. 企业微信的IM架构设计揭秘:消息模型、万人群、已读回执、消息撤回等

    本文作者潘唐磊,腾讯WXG(微信事业群)开发工程师,毕业于中山大学.内容有修订. 1.内容概述 本文总结了企业微信的IM消息系统架构设计,阐述了企业业务给IM架构设计带来的技术难点和挑战,以及技术方案 ...

  6. 微信小游戏直播在Android端的跨进程渲染推流实践

    本文由微信开发团队工程师"virwu"分享. 1.引言 近期,微信小游戏支持了视频号一键开播,将微信升级到最新版本,打开腾讯系小游戏(如跳一跳.欢乐斗地主等),在右上角菜单就可以看 ...

  7. Solution -「GLR-R4」芒种

    \(\mathscr{Description}\)   Link, 懒得概括题意.jpg \(\mathscr{Solution}\)   Subtask 1 \((n,m\le2)\) 一共只有五种 ...

  8. linux-大数据常用命令

    1. vi/vim一般模式语法 功能描述yy 复制光标当前一行y数字y 复制一段(从第几行到第几行)p 箭头移动到目的行粘贴u 撤销上一步dd 删除光标当前行d数字d 删除光标(含)后多少行x 删除一 ...

  9. Elasticsearch(4)--- 基本概念(Index、Type、Document、集群、节点、分片及副本、倒排索引)

    这篇博客讲到基本概念包括: Index.Type.Document.集群,节点,分片及副本,倒排索引. 一.Index.Type.Document 1.Index index:索引是文档(Docume ...

  10. linux:init

    init命令启动级别的含义(0-6) 0:停机1:单用户形式,只root进行维护2:多用户,不能使用net file system3:完全多用户4:未使用(系统之间可能略有不同,有些人的博客写的是安全 ...