计算导论与C语言基础week10_1
来源:互联网 发布:达观数据 陈运文 编辑:程序博客网 时间:2024/05/16 09:06
1.输入元音字母的个数
描述
在一个字符串中找出元音字母a,e,i,o,u出现的次数。
输入
输入一行字符串(字符串中可能有空格,请用cin.getline(s,counts)方法把一行字符串输入到字符数组s中,其中counts是s的最大长度,这道题里面可以直接写80。),字符串长度小于80个字符。
输出
输出一行,依次输出a,e,i,o,u在输入字符串中出现的次数,整数之间用空格分隔。
#include <iostream>using namespace std;int main() { char s[80], counts = 80; cin.getline(s, counts);//cin.getline可以接受空白符并输出 int a[5] = { 0 };//开始没给赋0,出错 for (int i = 0; i < counts; i++) { switch (s[i]) { case 'a':a[0]++; break; case 'e':a[1]++; break; case 'i':a[2]++; break; case 'o':a[3]++; break; case 'u':a[4]++; break; default:;//这里开始忘了打个; 其实default可以不要的 } } cout << a[0] << ' ' << a[1] << ' ' << a[2] << ' ' << a[3] << ' ' << a[4] << endl; return 0;}
2.忽略大小写比较字符串大小
描述
一般我们用strcmp可比较两个字符串的大小,比较方法为对两个字符串从前往后逐个字符相比较(按ASCII码值大小比较),直到出现不同的字符或遇到’\0’为止。如果全部字符都相同,则认为相同;如果出现不相同的字符,则以第一个不相同的字符的比较结果为准。但在有些时候,我们比较字符串的大小时,希望忽略字母的大小,例如”Hello”和”hello”在忽略字母大小写时是相等的。请写一个程序,实现对两个字符串进行忽略字母大小写的大小比较。
输入
输入为两行,每行一个字符串,共两个字符串。(请用cin.getline(s,80)录入每行字符串)(每个字符串长度都小于80)
输出
如果第一个字符串比第二个字符串小,输出一个字符”<”
如果第一个字符串比第二个字符串大,输出一个字符”>”
如果两个字符串相等,输出一个字符”=”
#include <iostream>using namespace std;#include <string.h> //strcmp()在这个里面int main() { char s1[80],s2[80],s3[80],s4[80];//s3,s4存两个字符串化成全小写后的新字符串 cin.getline(s1, 80); cin.getline(s2, 80); for (int i = 0; i < 80; i++) { if(s1[i] >= 'A'&&s1[i] <= 'Z') s3[i]=s1[i]+32; else s3[i] = s1[i]; if(s2[i] >= 'A'&&s2[i] <= 'Z') s4[i]=s2[i]+32; else s4[i] = s2[i]; } int signal = strcmp(s3, s4); if (signal > 0)cout << '>' << endl; else if (signal < 0)cout << '<' << endl; else cout << '=' << endl; return 0;}
3.最长单词2(自己出了几次错最后参考blog)
问题描述
一个以’.’结尾的简单英文句子,单词之间用空格分隔,没有缩写形式和其它特殊形式
输入
一个以’.’结尾的简单英文句子(长度不超过500),单词之间用空格分隔,没有缩写形式和其它特殊形式
输出
该句子中最长的单词。如果多于一个,则输出第一个
#include <iostream>using namespace std;int main() { char s0[500] = { 0 }, word[50] = { 0 }; cin.getline(s0, 500); int i = 0, j = 0, sizeWord = 0; while (i < 500 && s0[i] != '.') { if (s0[i] == ' ') { if (j > sizeWord) { sizeWord = j;//sizeWord存最大长度,出现更大长度时更新word[] for (int k = 0; k < j; k++) { word[k] = s0[i - j + k];//i-j是改单词的起始位置 } } j = 0; } else { j++; } i++; } if (s0[i] == '.') { if (j > sizeWord) { for (int k = 0; k < j; k++) { word[k] = s0[i - j + k]; } } } cout << word << endl; return 0;}
自己这里开始打算用二维数组,再设个len[500]存每个单词长度,但实现的时候出了问题,后来参考http://blog.csdn.net/nnnnnnnnnnnny/article/details/49049785
注意避免逻辑错最好开始就先画一下伪代码
4.矩阵交换行
描述
在main函数中, 生成一个5*5的矩阵,输入矩阵数据,并输入n,m的值。判断n,m是否在数组范围内,如果不在,则输出error;如果在范围内,则将n行和m行交换,输出交换n,m后的新矩阵。
输入
5*5矩阵的数据,以及n和m的值。
输出
如果不可交换,则输出error
如果可交换,则输出新矩阵
#include <iostream>using namespace std;#include <iomanip>//setw()要用这个头文件,注意这个容易拼写错..int main() { int i,j; char s[5][5]; for (i = 0; i < 5; i++) for (j = 0; j < 5; j++) cin >> s[i][j]; int n, m,temp_n; cin >> n >> m; if (n >= 0 && n < 5 && m >= 0 && m < 5) { for (i = 0; i < 5; i++) { //交换两行 temp_n = s[n][i]; s[n][i] = s[m][i]; s[m][i] = temp_n; } for (i = 0; i < 5; i++) { for (j = 0; j < 5; j++) { cout << setw(4) << s[i][j];//setw()给后面的s[i][j]规定最小长度,这里右对齐最少占4个位 } cout << "\n"; } } else cout << "error" << endl; return 0;}
- 计算导论与C语言基础week10_1
- 计算导论与C语言基础week6
- 计算导论与C语言基础week7
- 计算导论与C语言基础week8
- 计算导论与C语言基础week10_2
- 计算导论与C语言基础(专项课程之一)
- [Coursera 计算导论与C语言基础] 第六周作业
- [Coursera 计算导论与C语言基础] 第七周作业
- [Coursera 计算导论与C语言基础] 第八周作业
- [Coursera 计算导论与C语言基础] 期末编程测试
- 计算导论与C语言基础week12期末题
- coursera《计算导论与C语言基础》第七周
- coursera《计算导论与C语言基础》第八周
- coursera《计算导论与C语言基础》第十周
- [Coursera 计算导论与C语言基础] 第十周作业(上)
- [Coursera 计算导论与C语言基础] 第十周作业(下)
- 《计算导论与C语言基础》第4周编程作业: 感性接触计算机程序
- 算法导论C语言实现: 算法基础
- java.sql.SQLException: null, message from server: "Host 'xxx' is not allowed to connect
- Step8:菜单按钮的设计
- VS检测内存泄漏,定位泄漏代码位置方法
- 对话系统ChatScript入门(Linux版本)——制作简单的中文对话系统
- MySQL字符编码设置方法
- 计算导论与C语言基础week10_1
- 1.linux驱动开发前准备工作
- mui HTML5plus 批量上传文件
- 玩玩i++
- 使用QQ互联报空指针异常
- 端午任务
- JDBC概念原理和连接数据库以及工具类的书写
- java 线程常用的方法
- 文章功能