基于指针的程序设计(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);}}