PAT|中国大学MOOC-翁恺-C语言程序设计习题集21-24
2015-02-05 19:58
411 查看
06-1. 简单计算器(20)
模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,4种运算符的优先级相同,按从左到右的顺序计算。
输入格式:
输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明输入结束。
输出格式:
在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“ERROR”。
输入样例:
1+2*10-10/2=
输出样例:
10
06-2. 字符串字母大小写转换(10)
输入一个以#结束的字符串,本题要求将小写字母全部转换成大写字母,把大写字母全部转换成小写字母,其它字符不变。
输入格式:
输入在一行中给出一个长度不超过40的、以#结束的非空字符串。
输出格式:
在一行中按照要求输出转换后的字符串。
输入样例:
Hello World! 123#
输出样例:
hELLO wORLD! 123
06-3. 单词长度(15)
你的程序要读入一行文本,其中以空格分隔为若干个单词,以‘.’结束。你要输出每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如“it’s”算一个单词,长度为4。注意,行中可能出现连续的空格;最后的‘.’不计算在内。
输入格式:
输入在一行中给出一行文本,以‘.’结束。
提示:用scanf(“%c”,…);来读入一个字符,直到读到‘.’为止。
输出格式:
在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔开,行末没有最后的空格。
输入样例:
It’s great to see you here.
输出样例:
4 5 2 3 3 4
07-0. 写出这个数 (20)
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,4种运算符的优先级相同,按从左到右的顺序计算。
输入格式:
输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明输入结束。
输出格式:
在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“ERROR”。
输入样例:
1+2*10-10/2=
输出样例:
10
#include <stdio.h> #include <string.h> #include <math.h> int main() { int len, i, j, a, sum, n,begin,flag; char sign[200]; float num[200]; char str[400]; gets(str); len=strlen(str); n = 0; begin = 0; flag = 0; for (i = 0; i < len; i++) { if (str[i] >= 48 && str[i] <= 57 || str[i] == '+' || str[i] == '-' || str[i] == '*' || str[i] == '/' || str[i] == '=')//如果字符是‘0’-‘9’‘+’‘-’‘*’‘/’‘=’则合法 { if (str[i] == '+' || str[i] == '-' || str[i] == '*' || str[i] == '/' || str[i] == '=')//当遇到加减乘除的时候,计算出每一位的数字 { sum = 0; for (j = begin; j < i; j++) { a = (str[j] - '0')*pow(10.0, i - 1 -j); sum = sum + a; } num = sum;//记录数字 sign = str[i];//记录符号 begin = i + 1; n++; } } else//否则不合法,提示出错 { printf("ERROR"); flag = 1; break; } } if (flag == 0)//当全部字符合法,则进行计算 { for (i = 0; i <= n-1 ; i++)//将所有数字提出来计算,将计算好的数字放在下一位,方便后来的计算,最后一位则为结果 { if (sign[i] == '+') { num[i + 1] = num[i] + num[i + 1]; } else if (sign[i] == '-') { num[i + 1] = num[i] - num[i + 1]; } else if (sign[i] == '*') { num[i + 1] = num[i] * num[i + 1]; } else if (sign[i] == '/') { if (num[i + 1] == 0)//当被除数为0,提示错误 { printf("ERROR"); break; } num[i + 1] = num[i] / num[i + 1]; } else if (sign[i] == '=')//当看到‘=’算出结果 { printf("%.0f", num[i]); } } } return 0; }
06-2. 字符串字母大小写转换(10)
输入一个以#结束的字符串,本题要求将小写字母全部转换成大写字母,把大写字母全部转换成小写字母,其它字符不变。
输入格式:
输入在一行中给出一个长度不超过40的、以#结束的非空字符串。
输出格式:
在一行中按照要求输出转换后的字符串。
输入样例:
Hello World! 123#
输出样例:
hELLO wORLD! 123
#include <stdio.h> #include <string.h> int main() { char str[1000]; int len, i; gets(str); len = strlen(str); for (i = 0; i <= len - 2; i++) { if (str[i] >= 65 && str[i] <= 90) { str[i] = str[i] + 32; } else if (str[i]>=97&& str[i]<=122) { str[i] = str[i] - 32; } } for (i = 0; i <= len - 2; i++) { printf("%c", str[i]); } return 0; }
06-3. 单词长度(15)
你的程序要读入一行文本,其中以空格分隔为若干个单词,以‘.’结束。你要输出每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如“it’s”算一个单词,长度为4。注意,行中可能出现连续的空格;最后的‘.’不计算在内。
输入格式:
输入在一行中给出一行文本,以‘.’结束。
提示:用scanf(“%c”,…);来读入一个字符,直到读到‘.’为止。
输出格式:
在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔开,行末没有最后的空格。
输入样例:
It’s great to see you here.
输出样例:
4 5 2 3 3 4
#include <stdio.h> #include <string.h> int main() { char str[100]; int count, i,len,n,m; int num[100]; int num1[100]; n = 0; count = 0; m = 0; gets(str); len=strlen(str); for (i = 0; i <= len - 1; i++) { if (str[i] == ' ' || str[i] == '.') { num = count; count = 0; n++; } else { count++; } } for (i = 0; i <= n - 1; i++) { if (num[i] != 0) { num1[m] = num[i]; m++; } } for (i = 0; i <= m - 1; i++) { if (i < m - 1) { printf("%d ", num1[i]); } else { printf("%d", num1[i]); } } return 0; }
07-0. 写出这个数 (20)
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
#include <stdio.h> #include <string.h> #include <math.h> int readnumber(int x); int main() { char str[1000000]; int num,len,sum,i; sum = 0; gets(str); len = strlen(str); for (i = 0; i <= len - 1; i++) { num= str[i] - 48; sum = sum + num; } readnumber(sum); } int readnumber(int x) { int n, num, len, i, j, a, b; int m[10]; num = x; n = 1; if (num > 0) { for (i = 0; i <= 9; i++) { if (num >= pow(10.0, i) && num <= pow(10.0, i + 1) - 1) { len = i + 1; break; } } m[0] = num / pow(10.0, len - 1); for (i = len - 1; i >= 1; i--) { a = num % (int)pow(10.0, i) / (int)pow(10.0, i - 1); m = a; n++; } for (j = 0; j <= n - 1; j++) { b = m[j]; if (j < n - 1) { switch (b) { case 0:printf("ling "); break; case 1:printf("yi "); break; case 2:printf("er "); break; case 3:printf("san "); break; case 4:printf("si "); break; case 5:printf("wu "); break; case 6:printf("liu "); break; case 7:printf("qi "); break; case 8:printf("ba "); break; case 9:printf("jiu "); break; } } else { switch (b) { case 0:printf("ling"); break; case 1:printf("yi"); break; case 2:printf("er"); break; case 3:printf("san"); break; case 4:printf("si"); break; case 5:printf("wu"); break; case 6:printf("liu"); break; case 7:printf("qi"); break; case 8:printf("ba"); break; case 9:printf("jiu"); break; } } } } else if (num == 0) { printf("ling"); } else { num = -num; for (i = 0; i <= 9; i++) { if (num >= pow(10.0, i) && num <= pow(10.0, i + 1) - 1) { len = i + 1; break; } } m[0] = num / pow(10.0, len - 1); for (i = len - 1; i >= 1; i--) { a = num % (int)pow(10.0, i) / (int)pow(10.0, i - 1); m = a; n++; } printf("fu "); for (j = 0; j <= n - 1; j++) { b = m[j]; if (j < n - 1) { switch (b) { case 0:printf("ling "); break; case 1:printf("yi "); break; case 2:printf("er "); break; case 3:printf("san "); break; case 4:printf("si "); break; case 5:printf("wu "); break; case 6:printf("liu "); break; case 7:printf("qi "); break; case 8:printf("ba "); break; case 9:printf("jiu "); break; } } else { switch (b) { case 0:printf("ling"); break; case 1:printf("yi"); break; case 2:printf("er"); break; case 3:printf("san"); break; case 4:printf("si"); break; case 5:printf("wu"); break; case 6:printf("liu"); break; case 7:printf("qi"); break; case 8:printf("ba"); break; case 9:printf("jiu"); break; } } } } return 0; }
相关文章推荐
- PAT|中国大学MOOC-翁恺-C语言程序设计习题集25-28
- PAT|中国大学MOOC-翁恺-C语言程序设计习题集29-32
- PAT|中国大学MOOC-翁恺-C语言程序设计习题集33-36
- PAT|中国大学MOOC-翁恺-C语言程序设计习题集37-38
- PAT|中国大学MOOC-翁恺-C语言程序设计习题集01-04
- PAT|中国大学MOOC-翁恺-C语言程序设计习题集05-08
- PAT|中国大学MOOC-翁恺-C语言程序设计习题集09-12
- PAT|中国大学MOOC-翁恺-C语言程序设计习题集13-16
- PAT|中国大学MOOC-翁恺-C语言程序设计习题集17-20
- 中国大学MOOC-翁恺-C语言程序设计习题集 05-0 到 06-3
- 中国大学MOOC-翁恺-C语言程序设计习题集 07-0 到 08-1
- 中国大学MOOC-翁恺-C语言程序设计习题集
- 中国大学MOOC-翁恺-C语言程序设计习题集 10-3 到 11-1
- 中国大学MOOC-翁恺-C语言程序设计习题集(学习笔记)
- 中国大学MOOC-翁恺-C语言程序设计习题集 08-2 到 10-2
- 中国大学MOOC-翁恺-C语言程序设计习题集-解答汇总
- 中国大学MOOC-翁恺-C语言程序设计习题集 题目号02-3 Source code
- 中国大学MOOC-翁恺-C语言程序设计习题集 题目号02-4 Source code
- 中国大学MOOC-翁恺-C语言程序设计习题集 题目号03-0 Source code
- 中国大学MOOC-翁恺-C语言程序设计习题集 题目号03-1 Source code