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