PTA C语言作业
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
下面是代码实现:
#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
#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?
#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;
}
PTA C语言作业的更多相关文章
- 第一次c语言作业。
第一次c语言作业 作业1 2.1 你对软件工程专业或者计算机科学与技术专业了解是怎样? 我认为计算机科学与技术是研究信息过程.用以表达此过程的信息结构和规则及其在信息处理系统中实现的学科.这门学科是为 ...
- C语言作业7
问题 答案 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://i.cnblogs.com/EditPosts.aspx?opt=1 我在这个课程的目标是 在学好C语言编程的 ...
- 我的第三次C语言作业
我的第三次C语言作业 这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/SE2020-2 这个作业要求在哪里 https://edu.cnblogs.co ...
- C语言作业评价标准
C语言作业评价标准 作业内容: 每周作业分为基础作业.挑战作业和预习作业: 基础作业为本周所学内容的巩固: 挑战作业包括但不仅限于所学知识的综合运用: 预习作业为下周所学内容的任务单,要求必须在课前完 ...
- 第一周C语言作业
一.PTA实验作业 题目1.温度转换 1.实验代码 int main() { int fahr = 150,celsius; celsius = 5 * (fahr - 32) / 9; printf ...
- C语言作业--函数
一.PTA实验作业 题目1: 400-499 中4出现的次数 1. 本题PTA提交列表 2. 设计思路 一.main函数 1.函数声明int fun(int x) 2.定义变量i,k,i表示输入的值, ...
- C语言作业(三)
一.完成PTA上四题作业 二.具体解题 (一).A乘以B 1.实验代码 #include <stdio.h> int main() { int A,B,C; scanf("%d ...
- c语言作业01-分支、顺序结构
1.本章思考总结 1.1思维导图 1.2本章学习体会及代码量学习体会 1.2.1学习体会 这一个星期算是我学习c语言的起点,因为暑假没有提前自学c语言,所以一上课时会觉得比较吃力也难以跟上其他大部分同 ...
- C语言作业03-函数
1.本章学习总结 1.1 思维导图 1.2本章学习体会,代码量学习体会 1.2.1学习体会 通过这几周的函数学习,让我明白了函数的重要性,在很多时候运用函数,会使得代码分工明确,逻辑严密,不繁琐.函数 ...
随机推荐
- 论文解读(USIB)《Towards Explanation for Unsupervised Graph-Level Representation Learning》
论文信息 论文标题:Towards Explanation for Unsupervised Graph-Level Representation Learning论文作者:Qinghua Zheng ...
- javascript写淡入淡出效果的轮播图
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- java程序使用ssl证书连接mysql
1. 在mysql服务器上生成证书 openssl genrsa 2048 > ca-key.pem openssl req -new -x509 -nodes -days 3600 -key ...
- 如果一个promise永不resolve,会内存泄漏吗
答:跟内存泄漏没有直接关系gc的策略不会改变,如果该promise没有被人引用,就会被gc掉.如果仍被引用,就不会被gc掉.即使一个promise,resolve或者reject了,但是它还被人引用, ...
- PTA(BasicLevel)-1023 组个最小数
一. 问题定义 给定数字 0-9 各若干个.你可以以任意顺序排列这些数字,但必须全部使用.目标是使得最后得到的数尽可能小(注意 0 不能做首位). 例如:给定两个 0,两个 1,三个 5,一个 8,我 ...
- Issues in multiparty dialogues(科普性质)
多人对话过程中存在的问题: 1)对于双方对话:存在明显的Speaker和Listener/addressee.但对于多人会话:就存在很多种情况.Clark[6]给出了对listener的分类
- go-zero微服务实战系列(十、分布式事务如何实现)
在分布式应用场景中,分布式事务问题是不可回避的,在目前流行的微服务场景下更是如此.比如在我们的商城系统中,下单操作涉及创建订单和库存扣减操作两个操作,而订单服务和商品服务是两个独立的微服务,因为每个微 ...
- Thread类的常用方法_获取线程名称的方法和设置线程名称的方法
Thread类的常用方法 获取线程的名称: 1.使用Thread类中的方法getName() String getName() 返回该线程的名称 2.可以先获取到当前正在执行的线程,使用线程中的方法g ...
- 【跟着大佬学JavaScript】之lodash防抖节流合并
前言 前面已经对防抖和节流有了介绍,这篇主要看lodash是如何将防抖和节流合并成一个函数的. 初衷是深入lodash,学习它内部的好代码并应用,同时也加深节流防抖的理解.这里会先从防抖开始一步步往后 ...
- Ubuntu安装python各版本
编译安装的话,之前遇到过很多小问题,感觉还是通过添加这个ppa方式装的比较稳,缺点是可能安装的比较慢,可配合proxychain4 sudo apt install software-properti ...