【拯救大学牲】人民邮电出版社C语言程序设计第九章编程题答案

注:本文所有程序均为笔者自己编写,仅供交流学习使用,欢迎一切纠错与指正。

目录

一、统计字符串中元音字母的个数。

二、 使用起泡法和选择法将字符串按ASCII码值从小到大排序。

三、将字符串中的数字字符倒置,即'0'变'9','1'变'8',......'9'变'0'。例如:字符串"a1b2c3d4e9f0"倒置后为"a8b7c6d5e0f9"。

五、有10个字符串,每个字符串表示一段文字,将10个字符串连接成一篇文章,保存到一维数组中并输出。

六、编写本章中的6个字符串处理函数。


一、统计字符串中元音字母的个数。

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

int main()
{
    char str[100],ch;
    int i,num=0;
    scanf("%s",str);
    for(i=0;i<100;i++)
    {
        if(str[i]=='a'||str[i]=='e'||str[i]=='i'||str[i]=='o'||str[i]=='u'||
        str[i]=='A'||str[i]=='E'||str[i]=='I'||str[i]=='O'||str[i]=='U')
        {
            num++;
        }
    }
    printf("该字符串中包含%d个元音字母。",num);

    return 0;
}

二、 使用起泡法和选择法将字符串按ASCII码值从小到大排序。

#include <stdio.h>
#include <string.h>
#define N 100
void BubbleSort(char *,int);
void SelectSort(char *,int);

int main()
{ 
    char a[N],b[N];
    int n;
    gets(a);
    n=strlen(a);
    strcpy(b,a);
    BubbleSort(a,n);
    SelectSort(b,n);
    puts(a);
    puts(b);

    return 0;
}

void BubbleSort(char *x,int n)
{
	char t;
	int i,j;
	for(i=1;i<n;i++)
    {
	    for(j=0;j<n-i;j++)
        {
  	        if(x[j]>x[j+1])
	        { 
                t = x[j];
                x[j] = x[j+1];
                x[j+1] = t;
            }
        }
    }
}

void SelectSort(char *x,int n)
{
	char t,max = 0;
	int i,j,k;
	for(i=0;i<n;i++)
    {
        max = 0;
	    for(j=0;j<n-i;j++)
        {
  	        if(x[j]>max)
	        {
                max = x[j];
                k = j;
            }
        }
        t = x[j-1];
        x[j-1] = x[k];
        x[k] = t;
    }
}

三、将字符串中的数字字符倒置,即'0'变'9','1'变'8',......'9'变'0'。例如:字符串"a1b2c3d4e9f0"倒置后为"a8b7c6d5e0f9"。

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

int main()
{
    char a[30];
    int i;
    gets(a);
    for(i;i<30;i++)
    {
        if((a[i]>=48)&&(a[i]<=57))
        {
            a[i] = 105-a[i];
        }
    }
    puts(a);

    return 0;
}

五、有10个字符串,每个字符串表示一段文字,将10个字符串连接成一篇文章,保存到一维数组中并输出。

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

int main()
{
    char s[100],a[10][10];
    int i;
    for(i=0;i<11;i++)
    {
        gets(a[i]);
    }
    for(i=0;i<11;i++)
    {
        strcat(s,a[i]);
    }
    puts(s);

    return 0;
}

六、编写本章中的6个字符串处理函数。

#include <stdio.h>
#include <assert.h>

void Myputs(char *p) 
{
	while (*p != '\0') 
	{
		printf("%c", *p++);
	}

	putchar('\n');
}


char *Mygets(char *dest) 
{
	int c = getchar();
	char *p = dest;

	while (c != EOF && c != '\n') 
	{
		*p++ = c;
		c = getchar();
	}

	*p = '\0';

	return dest;
}

char *Mystrcpy(char *dest, const char *src) 
{
	char *ret = dest;
	assert(dest != NULL && src != NULL);

	while (*dest++ = *src++) ;
	*dest = *src;

	return ret;
}

char *Mystrcat(char *dst, const char *src) 
{
	char *temp = dst;
	assert(dst != NULL && src != NULL);

	while (*temp != '\0') 
	{
		temp++;
	}

	while ((*temp++ = *src++) != '\0');

	return dst;
}


int Mystrcmp(const char *str1, const char *str2) 
{
	assert(NULL != str1);
	assert(NULL != str2);

	while ( *(unsigned char *)str1 == *(unsigned char *)str2 ) 
	{
		if ( *(unsigned char *)str1 != '\0') 
		{
			return 0;
		}

		str1++;
		str2++;
	}

	return *(unsigned char *)str1 - *(unsigned char *)str2;
}

int Mystrlen(char *x) 
{
	int count = 0;

	while (*x != '\0') 
	{
		count++;
		x++;
	}

	return count;
}

int main() 
{
	char a[30], b[60];
	Mygets(a);
	Myputs(a);
	Mystrcpy(b, a);
	Mystrcat(b, a);
	Myputs(b);

	if (Mystrcmp(a, b) > 0) 
	{
		printf("str1>str2\n");
	} 
	else if (Mystrcmp(a, b) == 0) 
	{
		printf("str1=str2\n");
	} 
	else if (Mystrcmp(a, b) < 0) 
	{
		printf("str1<str2\n");
	}

	printf("%d", Mystrlen(b));

	return 0;
}

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
设计目的: 本教程旨在帮助初学者了解C语言的基本语法和数据类型,同时通过实现一个简单的学生成绩管理系统,让读者学习如何使用C语言进行编程和数据处理。 设计内容: 本教程分为以下几个部分: 1. C语言基础知识:介绍C语言的基本语法和数据类型,包括变量、运算符、控制语句、函数等。 2. 学生成绩管理系统需求分析:分析学生成绩管理系统的功能需求,包括添加学生信息、查询学生成绩、修改学生成绩、删除学生信息等。 3. 学生成绩管理系统设计与实现:根据需求分析,设计学生成绩管理系统的数据结构和算法,并用C语言实现。 4. 学生成绩管理系统测试与调试:对学生成绩管理系统进行测试和调试,确保其功能正常。 设计思路: 本教程采用面向对象的设计思路,将学生信息和成绩封装为一个结构体,通过定义相关函数实现添加、查询、修改和删除等功能。 具体实现流程如下: 1. 定义一个结构体,包含学生姓名、学号、性别、年龄和成绩等信息。 2. 定义添加学生信息函数,实现向学生信息数组中添加学生信息的功能。 3. 定义查询学生成绩函数,实现根据学号查询学生成绩的功能。 4. 定义修改学生成绩函数,实现修改学生成绩的功能。 5. 定义删除学生信息函数,实现删除学生信息的功能。 6. 编写主函数,实现对学生成绩管理系统的调用和测试。 7. 进行测试和调试,确保学生成绩管理系统的功能正常。 设计结果: 通过本教程的学习和实践,读者可以掌握C语言的基本语法和数据类型,了解面向对象的设计思路,掌握数据结构和算法的实现方法,以及如何使用C语言进行编程和数据处理。 同时,本教程提供了一个简单的学生成绩管理系统的设计和实现,使读者可以通过实践进一步了解和掌握C语言编程能力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

风痕天际

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

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

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

打赏作者

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

抵扣说明:

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

余额充值