CTGU—第7章指针

第1关:两个整数交换

任务:采用指针变量作为形参,编写一个实现两个整数交换的函数。在主函数中输入三个整数,调用数据交换函数将他们按从大到小的顺序排序后输出。

#include <stdio.h>
void main()
{
	int a,b,c;     
	void swap(int *px,int *py);	
	scanf("%d%d%d",&a,&b,&c);
	if(a<b)
		swap(&a,&b);
	if(a<c)
		swap(&a,&c);
	if(b<c)
		swap(&b,&c);
	printf("%d %d %d\n",a,b,c);
}
void swap(int *px,int *py)  //定义实现数据交换的函数
{
//************Begin***********
int temp;
temp=*px;
*px=*py;
*py=temp;
//************End***********
}

第2关:两字符交换

任务:采用指针变量作为形参,编写一个实现两字符交换的函数。在主函数中输入一个字符串,调用字符交换函数将其中的字符按从小到大的顺序排序后输出。

#include <stdio.h>
void main()
{
	char str[80], i, j;
	void swap(char *pa,char *pb);
	gets(str);
//************Begin***********
int len=0;
while(str[len]!='\0')//求字符串的长度
{
    len++;
}

for(i=1;i<=len-1;i++)
{
    for(j=0;j<len-i;j++)
    {
        if(str[j]>str[j+1])
        {
            swap(&str[j],&str[j+1]);
        }
    }
}
//************End***********
	printf("%s\n", str); //输出排序后的字符串
}

void swap(char *pa,char *pb) //自定义函数实现两字符交换
{
    
//************Begin***********
int temp;
temp=*pa;
*pa=*pb;
*pb=temp;
//************End***********
}

第3关:判断一个字符串是否是回文

任务:编写函数,判断一个字符串是否是回文。在主函数中输入一个字符串,调用自定义函数,输出结果。所谓回文是指顺读和倒读都一样的字符串。如“XZYKYZX”是回文。

#include <stdio.h>
#include <string.h>
void main()
{
    char s[50];
    int hw(char *s); // 自定义回文判断函数的声明
    gets(s);
    if (hw(s)) // 调用回文判断函数,是回文时,函数的返回值为1
        printf("是回文!\n");
    else
        printf("不是回文!\n");
}
// 定义函数判断回文,是则返回1,否则返0
int hw(char *s)
{
    //************Begin***********
    int i = 0, j = strlen(s) - 1;
    while (i < j) // 只要i小于j,继续比较两端的字符
    {
        if (s[i] != s[j]) // 如果发现不相等,直接返回0
            return 0;
        i++;
        j--;
    }
    return 1; // 如果循环结束了,说明没有发现不相等的情况
    //************End***********
}

第4关:数字字符串转换成与之相同的整数

任务:编写函数fun(),将一个数字字符串转换成与之相同的整数。例如:如果输入的字符串为“12345”,则函数返回整数12345。要求函数的形参采用指针变量。

#include <stdio.h>
#include <string.h>
void main()
{
    char s[10];
    int n;
    int fun(char *s);
    gets(s);
    n = fun(s);
    printf("%d\n", n);
}
int fun(char *s)
{
    //************Begin***********
    int n = 0;
    int i;
    int len = strlen(s);
    for (i = 0; i < len; i++)
    {
        n = n * 10 + s[i] - '0';
    }
    return n;
    //************End***********
}

第5关:求字符串的长度

任务:编写一个类似库函数strlen()的函数,求字符串的长度,在main()函数中输入一个字符串,调用该函数后输出结果。要求函数的形参采用指针变量。

#include <stdio.h>
void main()
{ 
	char str[30];
	int strlen1(char *);
	gets(str);
	printf("%d\n",strlen1(str));
}

int strlen1(char *p)
{
//************Begin***********
int len=0;
while(p[len]!=0)
{
    len++;
}
return len;
//************End***********
}

第6关:字符串连接

任务:编写一个类似库函数strcat()的函数,实现两个字符串的连接,并在main()函数中验证该自定义函数的功能。

#include <stdio.h>
void main()
{
	char str1[100];
	char str2[100];
	gets(str1);
	gets(str2);
	char * scat(char *s1,char *s2);
	printf("%s\n",scat(str1,str2));
}
char * scat(char *s1,char *s2) //将s2字符串连接到s1串之后
{
	//********Begin*************
    int len1=0;
    int len2=0;
    int i;

    while(s1[len1]!=0)
    {
        len1++;
    }

    while(s2[len2]!=0)
    {
        len2++;
    }

    for(i=0;i<len2;i++)
    {
        s1[len1+i]=s2[i];
    }
    return s1;
   //********End***************
}

第7关:删除字符串中的前导空格

任务:编写函数ltrim,用来删除字符串中的前导空格,中间和尾部的空格不删除。例如:字符串为:" A BC DEF ",删除后的结果是"A BC DEF "。要求函数形参采用指针变量。

#include <stdio.h>
void main()
{  
	void ltrim(char *a);
	char s[100];
	gets(s);   
	ltrim(s);
	puts(s);
}

void ltrim(char *a)
{
	//****************Begin**************
    //找到最前面有几个空格
    int n=0;
    int j=0;
    while(a[n]==' ')
    {
        n++;
    }

    if(n>0)
    {
        while(a[n]!='\0')
        {
            a[j]=a[n];
            n++;
            j++;
        }
    }
    a[j]='\0';
    
   //****************End**************** 
}

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
是的,我了解您的问题。MySQL是一种开源的关系型数据库管理系统,因其易用性和可靠性而备受欢迎。以下是一些关于MySQL数据库管理的常见问题和答案: 1. 如何创建一个MySQL数据库? 答:您可以使用MySQL命令行或者MySQL Workbench来创建一个新的数据库。在命令行中,您可以使用CREATE DATABASE语句来创建一个新的数据库。在MySQL Workbench中,您可以使用“Create a new Schema”向导来创建一个新的数据库。 2. 如何备份和恢复MySQL数据库? 答:您可以使用mysqldump命令来备份MySQL数据库,通过将备份文件导入到新的MySQL服务器中来恢复MySQL数据库。另外,您也可以使用MySQL Workbench的备份和恢复功能来备份和恢复MySQL数据库。 3. 如何优化MySQL数据库的性能? 答:您可以通过使用索引、优化查询、调整服务器参数和升级硬件等方式来优化MySQL数据库的性能。另外,您也可以使用MySQL Workbench的性能分析器来分析查询语句的性能,并查找潜在的性能问题。 4. 如何保护MySQL数据库的安全性? 答:您可以通过使用强密码、限制对MySQL服务器的访问、定期备份数据、更新MySQL服务器和应用程序等方式来保护MySQL数据库的安全性。另外,您也可以使用防火墙和安全软件来保护服务器免受网络攻击。 希望这些回答能够解决您的问题。如果您还有其他问题,请随时提出。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值