1.数组
回顾一维数组与二维数组的相关知识,练习了几道题目。
1.1三阶矩阵转置
#define N 10
#include <iostream>
using namespace std;
int main()
{
int a[N][N],i,j,t;
for(i = 0;i < 3;i++)
for(j = 0;j < 3;j++)
cin >> a[i][j];
for(i = 0;i < 3;i++)/*注意是i<3而不是i>j*/
for(j = 0;j < i;j++){
t = a[i][j];
a[i][j] = a[j][i];
a[j][i] = t;
}
for(i = 0;i < 3;i++){
for(j = 0;j < 3;j++)
cout << a[i][j] <<" ";
cout << endl;
}
system("pause");
return 0;
}
1.2将一个包含10个整数的数组中的最大最小元素进行交换,并输出交换后的内容。
10个整数为随机产生的0~100之间的数。
(若最大最小元素不唯一,则交换任意两个都算正确,即可以不用特殊考虑不唯一的情况)
#include <iostream>
using namespace std;
#include <ctime>
int main(){
const int N = 10;
srand(time(NULL));
int a[N], i, j, k, min1, max1, min = 100, max = 0;
for(i = 0; i < 10; i++){
a[i] = rand() % 100;
cout << a[i] << " ";
}
cout << endl;
for(j = 0; j < 10; j++){
if(a[j] < min){
min = a[j];
min1 = j;
}
}
for(j = 0; j < 10; j++){
if(a[j] > max){
max = a[j];
max1 = j;
}
}
int t = a[min1];
a[min1] = a[max1];
a[max1] = t;
for(k = 0; k < 10; k++)
cout << a[k] << " ";
return 0;
}
1.3编一个程序,输入一个字符串,将其倒序存放后输出。
例如,假设原数组a的内容为“VISUAL C++PROGRAM”,倒序后数组a中的内容为“MAGORP++C LASUIV”。
要求:不能借助另外一个数组实现倒序存放。
#define N 100
#include <iostream>
using namespace std;
int main()
{
int i = 0;
char a[N];
gets(a);
while(1){
if(a[i] == '\0')
break;
else
i++;
}
for(i = i - 1; i >= 0; i--)
cout << a[i];
return 0;
}
方法二:利用指针实现倒序存放与输出
#define N 100
#include <iostream>
using namespace std;
#include <cstring>
int main ()
{
char s[N];
gets(s);
char *p = s,*q = s + strlen(s) - 1;
while(p < q)
{
char t = *p;
*p = *q;
*q = t;
p++,q--;
}
cout<< s << endl;
return 0;
}
2.指针
2.1编写程序:利用指针变量在存储于一个长度不超过100的字符数组中的字符串里查找汉字,
并将该字符串中的所有汉字删除。(提示:汉字GBK编码中,一个汉字占两个字节,且最高位为(代表符号位为负),即汉字的编码值小于0)
#include <iostream>
using namespace std;
#define N 100
#include <time.h>
int main()
{
char a[N], *p = a, *q;
int i = 0, j = 0;
cout << "请输入字符串" << endl;
gets(a);
while(*(p+i) != '\0')
{
if(*(p+i) < 0)
{
cout << "查找到汉字" << endl;
q = p+i;
j = i;
while(*q++ != '\0'){
a[j] = a[j+2];
j++;
}
}
else
i++;
}
cout << p << endl;
system("pause");
return 0;
}
2.2利用字符指针将输入的一个字符串中的大小写字母相互转换,并输出转换后的字符串的内容。如,假设输入的字符串的内容为“How are you”,则转换后的内容为“hOW ARE YOU”
#include <iostream>
using namespace std;
#define N 100
int main ()
{
char a[N],*p = a;
cout<<"请输入字符串"<<endl;
gets(a);
while(*p) {
if(*p >= 'a' && *p <= 'z')
*p -= 32;
else if (*p >= 'A' && *p <= 'Z')
*p += 32;
p++;
}
cout << a << endl;
system("pause");
return 0;
}
3.总结
虽然已经在学校简要学习过C++,但是回顾起来依旧存在困难。一是存在一定时间间隔,致使知识遗忘,二是学校学习相对注重理论而缺乏实践操作,使得有些问题有些摸不着头脑,三是逻辑不顺,遗漏关键点致使代码反复修改,对一些题型缺乏系统思考。在debug的过程中对耐心是一种考验,尤其是解决这一个bug又出现下一个bug,有时真的会“心态炸了”。不过在痛苦的过程中也可以体会到一次次解决问题的快乐,算是坚持下去的动力吧,希望明天继续加油!
4.明日计划
学习Linux的常见指令