2个月搞定计算机二级C语言——真题(11)解析
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)解析的更多相关文章
- 二级C语言真题笔记
		
二级C语言真题笔记 1. 知识重点:数据类型.循环.数组.函数.指针.结构体与共同体 2. 求程序的运行结果 #include <stdio.h> main() { short i ...
 - 计算机二级-C语言-程序修改题-190108记录-字符串处理
		
//程序修改题:给定程序MODI1.C中函数fun的功能是:先将字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面.例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为 ...
 - 计算机二级-C语言-程序修改题-190113记录-对指定字符串的大小写变换处理。
		
//给定程序中fun函数的功能是:将p所指的字符串中每个单词的最后一个字母改成大写.(这里的“单词”是指由空格隔开的字符串) //重难点:指针对数组的遍历.大小写转换的方法.第一种使用加减32 得到, ...
 - 计算机二级-C语言-程序设计题-190112记录-结构体的遍历和结构体的数据的交换处理,文件的操作。
		
//程序设计题:学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数低的学生数据放在b所指的数组中,注意:分数最低的学生可能不止一个,函数返回 ...
 - 计算机二级-C语言-程序设计题-190111记录-两种指针赋值的不同,普通输入输出函数和文件输入输出函数的使用
		
//程序设计题:函数fun的功能是:将两位数的正整数a,b合并形成一个整数放在c中.合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上.例如:当 ...
 - 计算机二级-C语言-程序修改题-190123记录-对整数进行取余和除以操作。
		
//函数fun功能:将长整型数中每一位上为偶数的数依次取出,构成一个新数放在t中.高位仍在高位,低位仍在低位. //重难点:思路:因为不是字符串,所以可以把问题变成整数的操作,采用取余和除的操作.对整 ...
 - 计算机二级-C语言-程序设计题-190119记录-求出一个二维数组每一列的最小值。
		
//编写一个函数:tt指向一个M行N列的二维数组,求出二维数组每列中最小的元素,并依次放入pp所指的一维数组中.二维数组中的数在主函数中赋予. //重难点:求出的是每一列的最小值,这里要注意,学会简化 ...
 - 计算机二级-C语言-程序设计题-190118记录-通过数组和指针两种方式对字符串进行处理。
		
//编写一个函数fun,比较两个字符串的长度,(不使用C语言提供的求字符串长度的函数),函数返回较长的字符串.若两个字符长度相同,则返回第一个字符串. //重难点:通过数组处理和通过指针进行处理的不同 ...
 - 计算机二级-C语言-程序修改题-190116记录-对数组进行排序的两种方法。
		
//函数fun的功能是:将n个无序整数从小到大排序. //冒泡排序法:小数往下浮,大数往上浮.把数都存到一个数组,然后两两比较,大数往后交换.双层递减循环. //第二种方法:都放入一个数组中,然后记录 ...
 - 计算机二级-C语言-程序修改题-190114记录-对整型变量进行取余操作可以取得各个位上的值。
		
//给定程序中fun函数的功能是:从低位开始取出长整形变量s中奇数位上的数,依次构成一个新的数放在t中.高位仍在高位,低位仍在低位.例如:当s中的数为7654321时,t中的数为7531. //重难点 ...
 
随机推荐
- 基于实践:一套百万消息量小规模IM系统技术要点总结
			
本文由公众号"后台技术汇"分享,原题"基于实践,设计一个百万级别的高可用 & 高可靠的 IM 消息系统",原文链接在文末.由于原文存在较多错误和不准确内 ...
 - 基于开源IM即时通讯框架MobileIMSDK:RainbowChat v8.3版已发布
			
关于MobileIMSDK MobileIMSDK 是一套专门为移动端开发的开源IM即时通讯框架,超轻量级.高度提炼,一套API优雅支持UDP .TCP .WebSocket 三种协议,支持iOS.A ...
 - 16. C++快速入门--模板和Concept
			
待修改 1 定义模板 1.1 模板形参 模板参数 模板可以有两种参数, 一种是类型参数, 一种是非类型参数 这两种参数可以同时存在, 非类型参数 的类型 可以是 模板类型形参 template < ...
 - C Primer Plus 第6版 第七章 编程练习参考答案
			
编译环境VS Code+WSL GCC 源码请到文末下载 . 注意:本章部分题目有些超纲(回用到函数调用),不理解的同学可以先去看一下后面的知识点和注释. /*第1题***************** ...
 - CDS标准视图:功能位置描述 I_FunctionalLocationText
			
视图名称:功能位置描述 I_FunctionalLocationText 视图类型:基本视图 视图代码: 点击查看代码 @EndUserText.label: 'Functional Location ...
 - Nukem pg walkthrough	Intermediate
			
nmap 扫描 ┌──(root㉿kali)-[~] └─# nmap -p- -A 192.168.157.105 Starting Nmap 7.94SVN ( https://nmap.org ...
 - MapStruct入门使用
			
MapStruct入门使用案例 以下是常用的使用举例,按照需求改动即可 @Data public class UserDO{ private int age; private String name; ...
 - 一文搞懂 结构伪类 :nth-child && :nth-of-typ
			
结构伪类 从使用结构伪类的选择器开始 往上一层父辈开始筛选 从使用结构伪类的选择器开始 往上一层父辈开始筛选 从使用结构伪类的选择器开始 往上一层父辈开始筛选 不是从左往右选择 不是先父辈后筛选子类 ...
 - 共促数字经济高质量发展,天翼云出席2024 IDC中国年度盛典!
			
9月11日,2024 IDC中国年度盛典暨颁奖典礼在上海盛大启幕.本次峰会以「AI时刻,欢迎来到下一个大事件」为主题,汇聚行业专家.意见领袖,深度探讨生成式AI.中国企业出海.创新业务模式.科技可持续 ...
 - SQL注入之报错注入
			
SQL注入之报错注入 一.报错注入原理 报错注入的原理基于应用程序在处理数据库查询时产生的错误信息.当应用程序执行一个含有恶意SQL代码的查询时,如果查询出错(例如,由于语法错误或权限不足),数据库系 ...