2022/2/12——浙大版《C语言程序设计(第3版)》题目集PAT错题记录

习题8-7 字符串排序 (20 分)

本题要求编写程序,读入5个字符串,按由小到大的顺序输出。

输入格式:

输入为由空格分隔的5个非空字符串,每个字符串不包括空格、制表符、换行符等空白字符,长度小于80。

输出格式:

按照以下格式输出排序后的结果:

After sorted:
每行一个字符串

输入样例:

red yellow blue black white

输出样例:

After sorted:
black
blue
red
white
yellow

//1.scanf("%s", a[i]); 2. strcpy(); 3.strcpy(); 4.printf("\n%s", a[i]); 的应用

#include <stdio.h>
#include <string.h>
int main()
{
    char a[5][80], b[80], c;
    int i, j;
    for(i = 0; i < 5; i++)
    {
        scanf("%s", a[i]);
       
    }
    for(i = 0; i < 5; i++)
    {
        for(j = i + 1; j < 5; j++)
            if(strcmp(a[i], a[j]) > 0)
            {
                strcpy(b, a[i]);
                strcpy(a[i], a[j]);
                strcpy(a[j], b);
            }
                
        
        
    }
    printf("After sorted:");
    for(i = 0; i < 5; i++)
    {
        printf("\n%s", a[i]);
    }
    return 0;
}

练习8-8 移动字母 (10 分)

本题要求编写函数,将输入字符串的前3个字符移到最后。

函数接口定义:

void Shift( char s[] );

其中char s[]是用户传入的字符串,题目保证其长度不小于3;函数Shift须将按照要求变换后的字符串仍然存在s[]里。

裁判测试程序样例:

#include <stdio.h>
#include <string.h>

#define MAXS 10

void Shift( char s[] );

void GetString( char s[] ); /* 实现细节在此不表 */

int main()
{
    char s[MAXS];

    GetString(s);
    Shift(s);
    printf("%s\n", s);
    
    return 0; 
}

/* 你的代码将被嵌在这里 */

输入样例:

abcdef

输出样例:

defabc

//1.理解错误:是将前三个放到最后,不是让前三个和后三个互换2.函数Shift须将按照要求变换后的字符串仍然存在s[]里。3.strlen()函数

void Shift( char s[] )
{
    int l, i, j;
    char c[3];
    for(i = 0; i < 3; i++)
    {
        c[i] = s[i];
    }
    l = strlen(s);
    for(j = 3; j < l; j++)
    {
        s[j - 3] = s[j];
    }
     for(i = 0; i < 3; i++)
    {
        s[l - 3 + i] = c[i];
    }
}

习题8-4 报数 (20 分)

报数游戏是这样的:有n个人围成一圈,按顺序从1到n编好号。从第一个人开始报数,报到m(<n)的人退出圈子;下一个人从1开始报数,报到m的人退出圈子。如此下去,直到留下最后一个人。

本题要求编写函数,给出每个人的退出顺序编号。

函数接口定义:

void CountOff( int n, int m, int out[] );

其中n是初始人数;m是游戏规定的退出位次(保证为小于n的正整数)。函数CountOff将每个人的退出顺序编号存在数组out[]中。因为C语言数组下标是从0开始的,所以第i个位置上的人是第out[i-1]个退出的。

裁判测试程序样例:

#include <stdio.h>
#define MAXN 20

void CountOff( int n, int m, int out[] );

int main()
{
    int out[MAXN], n, m;
    int i;
    
    scanf("%d %d", &n, &m);
    CountOff( n, m, out );   
    for ( i = 0; i < n; i++ )
        printf("%d ", out[i]);
    printf("\n");
    
    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

11 3

输出样例:

4 10 1 7 5 2 11 9 3 6 8 

//1.count 初始化为0,每当if的条件满足时再加1比较好  2.while循环里再套一个for循环比较好

void CountOff( int n, int m, int out[] )
{
    int i, j = 1, count = 0;
    for(i = 0; i < n; i++)
        out[i] = 0;
    i = 0;
    while(j <= n)
    {
        for(i = 0; i < n; i++)
        {
            
        
        if(out[i] == 0)
        {
            count++;
            if(count == m)
            {
                out[i] = j;
                j++;
                count = 0;
            }
            
        }
        }
    }
}

习题8-5 使用函数实现字符串部分复制 (20 分)

本题要求编写函数,将输入字符串t中从第m个字符开始的全部字符复制到字符串s中。

函数接口定义:

void strmcpy( char *t, int m, char *s );

函数strmcpy将输入字符串char *t中从第m个字符开始的全部字符复制到字符串char *s中。若m超过输入字符串的长度,则结果字符串应为空串。

裁判测试程序样例:

#include <stdio.h>
#define MAXN 20

void strmcpy( char *t, int m, char *s );
void ReadString( char s[] ); /* 由裁判实现,略去不表 */

int main()
{
    char t[MAXN], s[MAXN];
    int m;
    
    scanf("%d\n", &m);
    ReadString(t);
    strmcpy( t, m, s );
    printf("%s\n", s);

    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

7
happy new year

输出样例:

new year

//1.先计算数组t的长度 2.数组shi是以单个字符的形式逐个赋值的,最后要手动加‘\0’

void strmcpy( char *t, int m, char *s )
{
    int i = 0, j = 0, k = 0;
    while(t[k] != '\0')
    {
        k++;
    }
    if(m > k)
        s[j] = '\0';
    else
        for(i = m - 1; i < k; i++, j++)
        {
            s[j] = t[i];
        }
    s[j] = '\0';
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 浙大C语言程序设计实验与习题指导(第3)》题目是一本针对C语言学习者的实验与习题指导书籍。该书包含了大量的实验和习题,涵盖了C语言的基础知识和应用技巧。通过完成这些实验和习题,读者可以逐步掌握C语言的编程思想和技能,提高自己的编程水平。该书内容丰富、难度适中,适合初学者和进阶者使用。 ### 回答2: 浙大C语言程序设计实验与习题指导(第3)》题目是一本较为优秀的学习C语言编程的书籍,其编写目的主要是为了帮助学习者在掌握C语言编程语言的基础知识之后,通过各种习题的练习和实验的操作,更好地学习和掌握C语言编程的能力,从而提高自己的编程水平。 本书分为两部分,第一部分是实验指导,旨在通过实际操作来帮助学习者更好地理解和掌握C语言编程的基础知识,其中包括C语言程序设计实验、C语言程序设计应用实验和C语言程序设计综合应用实验三个部分,每个实验都有配套的实验指导和实验报告模板,学生可以根据实验指导完成实验,通过实验来检验自己对C语言编程的理解和掌握程度。 第二部分是习题指导,主要是通过各种习题来达到帮助学习者进一步巩固和提高C语言编程能力的目的。习题指导包括基础知识习题、程序设计习题和综合应用习题三个部分,对于每个习题都有详细的讲解和参考答案,学生可以通过做习题来检验并提高自己的C语言编程能力。 总体来说,浙大C语言程序设计实验与习题指导(第3)》题目是一本非常优秀的教材,通过实验和习题的形式来帮助学习者更好地掌握C语言编程的基础知识和编程技能,对于提升学生C语言编程能力和实际应用能力有非常积极的作用。同时,本书编写非常系统、内容丰富、语言简明易懂,对于初学者和进阶者都有着很好的指导和帮助作用。虽然有英文的书籍,但此书的中文也是一本学习C语言编程非常好的教材,值得推荐。 ### 回答3: 《C语言程序设计实验与习题指导(第3)》是浙江大学计算机科学与技术学院编写的一本C语言教材,也是浙江大学计算机学院C语言课程的教材之一。本书主要分为两部分,第一部分是实验指导,第二部分是习题。在实验指导部分,本书从C语言的基础语法入手,通过不断地练习和实践,让读者逐步掌握C语言的编程技巧和方法。在习题中,本书涵盖了各个难度层次的练习题,从基本的语法练习到复杂的算法实现、图形绘制等练习都有。本书的练习题设计严密,题目设计科学合理,不仅可以让读者巩固和提高C语言编程能力,还能引导读者思考解决实际问题的程序设计方法。 《C语言程序设计实验与习题指导(第3)》的实验指导部分共有12个实验,每个实验包含实验目的、实验原理、实验步骤和实验报告等内容。在实验步骤中,每步都有详细的操作指导和说明,能够帮助读者轻松地进行实验。在实验报告中,本书也给出了详细的要求和格式说明,让读者写出规范、清晰的实验报告。 本书的习题部分分为基础篇、提高篇和应用篇三个部分,每个部分都有若干章节,涵盖了C语言的各个方面。每个章节都有若干个练习题目,其中不乏难度适中、有一定难度的习题。本书的习题循序渐进,能够帮助读者逐步提高C语言编程水平。 总之,《C语言程序设计实验与习题指导(第3)》不仅是一本优秀的C语言教材,更是一本优秀的C语言练习题。无论是C语言初学者还是有一定编程基础的读者,都可以从中获得巨大的收获。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值