基于指针的程序设计(3)

第1关:字符排序

任务要求 设计程序,实现读入一个字符串,将该字符串中的所有字符按ASCII码升序排序后输出。

输入要求 输入一个字符串str(1<=len(str)<=1e5)

输出要求 输出所有字符按ASCII码升序排序后的字符串。

//根据题目要求完成程序设计
#include<stdio.h>
#include<string.h>
int cmp(void* p1,void* p2)
{
    return *(char*)p1-*(char*)p2;
}
int main()
{
    char arr[100000]={0};
    gets(arr);
    int len =strlen(arr);
    qsort(arr,len,sizeof(arr[0]),cmp);
    puts(arr);
}

字母转换 I

任务要求 ,实现将一个字符串中的小写字母转换成大写字母,其它字符不变。
//根据题目要求完成程序设计
#include<stdio.h>
/**********FOUND**********/
char fun(char* c)
{
    if(*c<='z'&&*c>='a') 
        *c-=32;
/**********FOUND**********/

}
int main()
{
/**********FOUND**********/
    char s[100000];
    char* p;
    gets(s);
    p=s;
    while(*p)
    {
        //printf("%c\n",fun(p));
        fun(p);
/**********FOUND**********/
        putchar(*p);
        p++;
    }
    putchar('\n');
}

第3关:字母转换 II

任务要求 设计程序,利用函数lowerString将字符串中的大写字母变成小写字母,并利用返回指针的函数实现返回改变后的字符串。 函数原型:char * lowerString(char *str)

输入要求 输入一个字符串str(1<=len(str)<=1e5)

输出要求 输出转换后的字符串。

//根据题目要求完成程序设计
#include <stdio.h>

/*
    函数名称:lowerString
    函数功能:将字符串中的大写字母变成小写字母
    函数参数:字符串
    函数返回值:指针函数
*/

//设计函数swap
/*=====Begin=====*/
void fun(char* c)
{
    if(*c<='Z'&&*c>='A') 
        *c+=32;
    /**********FOUND**********/

}

/*======End======*/


/*
    函数名称:solve
    函数功能:程序入口,实现相应功能
    函数返回值:void
*/

//设计函数solve
/*=====Begin=====*/
int solve()
{
    /**********FOUND**********/
    char s[100000],* p;
    p = s;
    gets(s);
    while (*p)
    {
        fun(p);
        /**********FOUND**********/
        putchar(*p);
        p++;
    }
}





/*======End======*/

第4关:简易计算器

任务要求 设计程序,实现每次调用函数process时完成不同的功能。针对a和b两个正整数,可以调用函数process计算a的b次幂、a和b之差以及a和b之积。

输入要求 输入两个正整数a,b(1<=a<=10,1<=b<=8)

输出要求 第一行输出结果为a的b次幂。 第二行输出结果为a和b之差。 第三行输出结果为a和b之积。

//根据题目要求完成程序设计
#include<stdio.h>
#include<math.h>
void process(int a,int b,int n)
{
    switch(n)
    {
      case 1:
      {
        int c = pow(a,b);
        printf("%d\n",c);
        break;
      }
      
      case 2:
      printf("%d\n",a-b);
      break;
      case 3:
      printf("%d\n",a*b);  
    }
    
}
int main()
{
    int a,b;
    scanf("%d%d",&a,&b);
    for(int i = 1; i<4; i++)
    {
        process(a,b,i);
    }
    
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值