6-1 使用函数输出一个整数的逆序数 (20 分)

本题要求实现一个求整数的逆序数的简单函数。

函数接口定义:

int reverse( int number ); 

其中函数reverse须返回用户传入的整型number的逆序数。

裁判测试程序样例:

#include <stdio.h>

int reverse( int number );

int main()
{
int n; scanf("%d", &n);
printf("%d\n", reverse(n)); return 0;
} /* 你的代码将被嵌在这里 */

输入样例:

-12340
 
结尾无空行

输出样例:

-4321
 
结尾无空行
 
解题思路: 循环取余获得 余数 + temp值,temp变量用来保存x变量的值,number/10 一直到0循环即结束

下面是代码实现:

#include <stdio.h>

int reverse( int number );

int main()
{
int n; scanf("%d", &n);
printf("%d\n", reverse(n)); return 0;
} /* 你的代码将被嵌在这里 */
int reverse( int number )
{
int temp, x, i;
temp = 0;
do{
x = (temp * 10) + (number % 10);
temp = x;
number /= 10;
}while(number != 0);
return x;
}

7-1 逆序的三位数 (10 分)

 

程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。

输入格式:

每个测试是一个3位的正整数。

输出格式:

输出按位逆序的数。

输入样例:

123
 
结尾无空行

输出样例:

321
 
结尾无空行

解题思路:这题和上一题一样,不过多了一个输入正数的条件,对输入值n添加判断即可

    scanf("%d", &n);
if(n < 0)
{
return 0;
}

7-2 查询水果价格 (15 分)

 

给定四种水果,分别是苹果(apple)、梨(pear)、桔子(orange)、葡萄(grape),单价分别对应为3.00元/公斤、2.50元/公斤、4.10元/公斤、10.20元/公斤。

首先在屏幕上显示以下菜单:

[1] apple
[2] pear
[3] orange
[4] grape
[0] exit
 

用户可以输入编号1~4查询对应水果的单价。当连续查询次数超过5次时,程序应自动退出查询;不到5次而用户输入0即退出;输入其他编号,显示价格为0。

输入格式:

输入在一行中给出用户连续输入的若干个编号。

输出格式:

首先在屏幕上显示菜单。然后对应用户的每个输入,在一行中按格式“price = 价格”输出查询结果,其中价格保留两位小数。当用户连续查询次数超过5次、或主动输入0时,程序结束。

输入样例1:

3 -1 0 2
 
结尾无空行

输出样例1:

[1] apple
[2] pear
[3] orange
[4] grape
[0] exit
price = 4.10
price = 0.00
 
结尾无空行

输入样例2:

1 2 3 3 4 4 5 6 7 8
 

输出样例2:

[1] apple
[2] pear
[3] orange
[4] grape
[0] exit
price = 3.00
price = 2.50
price = 4.10
price = 4.10
price = 10.20

解题思路:根据题目要求用float数组存放水果价格,再通过for循环进行数值判断输出水果价格,需要注意 price[v[i]] 这句是先获取v下标对应的水果序号,然后再通过该序号获取price的价格

#include <stdio.h>

void show_info();
void show_price(float price[], int v[]); int main()
{
show_info(); float price[5] = {0.00, 3.00, 2.50, 4.10, 10.20};
int v[5]; for(int i=0; i<5; i++)
{
scanf("%d", &v[i]);
if(getchar() == '\n')
{
break;
} }
show_price(price, v); return 0;
} void show_price(float price[], int v[])
{
for(int i=0; i<5; i++)
{
if(v[i] >= 1 && v[i] <= 4)
{
printf("price = %.2f\n", price[v[i]]);
continue;
}
else if(v[i] == 0)
{
break;
}
printf("price = %.2f\n", price[0]); }
} void show_info()
{
printf("[1] apple\n[2] pear\n[3] orange\n[4] grape\n[0] exit\n");
}

7-3 简单计算器 (20 分)

 

模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。

输入格式:

输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明输入结束。

输出格式:

在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“ERROR”。

输入样例:

1+2*10-10/2=
 
结尾无空行

输出样例:

10
 
结尾无空行
解题思路:字符串存放计算内容,先判断一组数字,遇到运算符结束并返回下标,再通过循环里switch分支计算数值
#include <stdio.h>
#include <stdlib.h>
#include <string.h> int func(char *n)
{
int i; for(i=0; *(n+i)!='='; i++)
{
if( !((n[i] >= '0' && n[i] <= '9') || n[i] == '.') )
{
break;
}
} return i;
} int calulator(char *n)
{
char temp[20];
int x = 0;
int y = 0; x = func(n);
y = atoi(strncpy(temp, n, x)); do{
n += ++x;
char temp[20] = "";
switch((n-1)[0])
{
case '+':
x = func(n);
y += atoi(strncpy(temp, n, x));
break;
case '-':
x = func(n);
y -= atoi(strncpy(temp, n, x));
break;
case '*':
x = func(n);
y *= atoi(strncpy(temp, n, x));
break;
case '/':
if(n[0] == '0')
{
printf("ERROR\n");
exit(0);
}
x = func(n);
y /= atoi(strncpy(temp, n, x));
break;
case '=':
return y;
break;
default:
printf("ERROR\n");
exit(0);
}
}while(1);
} int main()
{
char s[100];
gets(s);
fflush(stdin); printf("%d\n", calulator(s)); return 0;
}
 

7-4 英文字母替换加密(大小写转换+后移1位) (15 分)

 

本题要求编写程序,将英文字母替换加密。为了防止信息被别人轻易窃取,需要把电码明文通过加密方式变换成为密文。变换规则是:将明文中的所有英文字母替换为字母表中的后一个字母,同时将小写字母转换为大写字母,大写字母转换为小写字母。例如,字母a->B、b->C、…、z->A、A->b、B->c、…、Z->a。输入一行字符,将其中的英文字母按照以上规则转换后输出,其他字符按原样输出。

输入格式:

输入一行字符,以回车符 '\n'作为 结束符。

输出格式:

将输入的一行字符中的所有英文字母替换为字母表中的后一个字母,同时将小写字母转换为大写字母,大写字母转换为小写字母后输出,其他字符按原样输出。

输入样例:

在这里给出一组输入。例如:

Reold  Z123?
 

输出样例:

在这里给出相应的输出。例如:

sFPME  a123?
 
结尾无空行
解题思路:据题意将明文中的所有英文字母替换为字母表中的后一个字母,同时将小写字母转换为大写字母,大写字母转换为小写字母。
     根据ASCII表循环替换 大转小写+33,小转大写-31,注意‘z’ -57 而 ‘Z’+7
#include <stdio.h>
#include <string.h> int main()
{
char s[100];
gets(s);
fflush(stdin); for(int i=0; i<strlen(s); i++)
{
if(s[i] >= 'a' && s[i] <= 'y')
{
s[i] -= 31;
}
else if(s[i] == 'z')
{
s[i] -= 57;
}
else if(s[i] >= 'A' && s[i] <= 'Y')
{
s[i] += 33;
}
else if(s[i] == 'Z')
{
s[i] += 7;
}
}
printf("%s", s); return 0;
}

7-5 单词首字母大写 (15 分)

 

本题目要求编写程序,输入一行字符,将每个单词的首字母改为大写后输出。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。

输入格式:

输入给出一行字符。

输出格式:

在一行中输出已输入的字符,其中所有单词的首字母已改为大写。

输入样例:

How are you?
 
结尾无空行

输出样例:

How Are You?
 
结尾无空行

解题思路:据题意设置标记变量,循环判断首字母大写状态

#include <stdio.h>
#include <string.h> int main()
{
char s[100];
int flag = 1;
gets(s);
fflush(stdin); for(int i=0; i<strlen(s); i++)
{
if(s[i] >= 'a' && s[i] <= 'z' && flag)
{
s[i] -= 32;
flag = 0;
}
if(s[i] >= 'A' && s[i] <= 'Z' && flag)
{
flag = 0;
}
else if(s[i] == ' ')
{
flag = 1;
}
}
printf("%s", s); return 0;
}

最新文章

  1. python中的collections
  2. Oracle DB 存储增强
  3. Winform TreeView 查找下一个节点
  4. C++学习30 重载++和--(自增自减运算符)
  5. WCF+EntityFramework+mysql总结
  6. JqueryUI
  7. socket通信技术介绍
  8. [css 揭秘]:CSS揭秘 技巧(三):背景定位
  9. 【Beta阶段】第一次scrum meeting
  10. pax3 quick start guide
  11. Windows Dll Injection、Process Injection、API Hook、DLL后门/恶意程序入侵技术
  12. python购物车作业
  13. oracle 监听报错the information provided for this listener is currently in use by other software on this computer
  14. 记一次MySQL安装出现的坑爹问题。。。
  15. Atitit 图像处理之编程之类库调用的接口api cli gui ws rest &#160;attilax大总结.docx
  16. [BZOJ 5252][LOJ 2478][九省联考2018] 林克卡特树
  17. Python subprocess shell 编程规范
  18. underscore.js常用方法整理(慢慢完善)
  19. Python时间calender模块介绍
  20. web_03Java ee实现定时跳转,使用C3P0,DBUtils类重构数据库操作

热门文章

  1. 监听 Markdown 文件并热更新 Next.js 页面
  2. WPF开发随笔收录-获取软件当前目录的坑
  3. 机械硬盘和ssd固态硬盘的原理对比分析
  4. NC13328 倒水
  5. Codeforces Round #783 (Div. 2)
  6. C#《原CSharp》第三回 万文疑谋生思绪 璃月港口见清玉
  7. zookeeper和spring cloud版本冲突
  8. NewApiDay03_File类
  9. Linux下IPC之共享内存的使用方法
  10. 如何做出一个好的c++游戏