C程序设计进阶week5(指针2注意)
来源:互联网 发布:尚硅谷java全套视频 编辑:程序博客网 时间:2024/05/16 07:49
数组中的指针
基本知识:
注意b,pb,c,pc,b和pb是地址,c和pc打印出来是内容,因为是字符数组
这段,加上那一段就打印地址了
定义指针后可以直接把字符串赋给pc,但这样就不能用pc指针修改这个字符串
buffer可以赋给pc,因为都是char指针
这里,a+1是下一个int,&a是指向数组的指针,表整个数组的地址
&a+1到了数组尾,跨过整个数组
*(&a)是&a指向的内容,由 *(&a)+1的打印结果可以看出
*(&a)等价于a
&相当于上升一级(指向元素变成指向数组),*相当于下降一级(指向数组变成指向元素)
这个图讲的很清楚了..
编程题#1:计算矩阵边缘元素之和
输入一个整数矩阵,计算位于矩阵边缘的元素之和。所谓矩阵边缘的元素,就是第一行和最后一行的元素以及第一列和最后一列的元素。
输入
第一行为整数k,表示有k组数据。
每组数据有多行组成,表示一个矩阵:
第一行分别为矩阵的行数m和列数n(m < 100,n < 100),两者之间以空格分隔。
接下来输入的m行数据中,每行包含n个整数,整数之间以空格作为间隔。
输出
输出对应矩阵的边缘元素和,一个一行。
#include <iostream>using namespace std;int main() { int k = 0;//定义变量的时候要直接赋个初值 int a[100][100]; cin >> k; for (int i = 0; i < k; i++) {//for里面都这么用比较好 int m=0, n=0, sum = 0; cin >> m >> n; for (int j = 0; j < m; j++) { for (int t = 0; t < n; t++) { int num; cin >> num; if (j == 0 || j == m - 1 || t == 0 || t == n - 1)//这样比较简单,二维数组反而麻烦 sum += num; } } cout << sum << endl; } return 0;}//没有使用指针,这里看起来没必要指针
编程题#2: 二维数组右上左下遍历(查blog的,有难度..)
给定一个row行col列的整数数组array,要求从array[0][0]元素开始,按从左上到右下的对角线顺序遍历整个数组。
输入
输入的第一行上有两个整数,依次为row和col。
余下有row行,每行包含col个整数,构成一个二维整数数组。
(注:输入的row和col保证0 < row < 100, 0 < col < 100)
输出
按遍历顺序输出每个整数。每个整数占一行。
#include <iostream>using namespace std;int main() { int row, col; cin >> row >> col; int array[100][100]; for (int i = 0; i < row; i++) for (int j = 0; j < col; j++) cin >> array[i][j]; int diaNum = col + row - 1;//共有col+row-1条对角线 for (int p = 0; p <= diaNum; ++p) {//对每条对角线 int c = p;//对角线行数起始点为0,每次+1, for (int r = 0; r < row; r++) {//补上三角形后,只要每次输出时候把不在范围内的去掉就行了 if (r >= 0 && r < row&&c < col&&c >= 0) { cout << *(*(array + r) + c) << endl;//打印坐标(c,r)的值 } c--; } } return 0;}//参考http://www.lai18.com/content/8577707.html
这种题得再看几遍,刚下了个csdn app,平时可以翻翻自己的blog..
自己做的时候没考虑到那个补三角形,结果做的非常麻烦.
编程题#3:文字排版(相对简单)
给一段英文短文,单词之间以空格分隔(每个单词包括其前后紧邻的标点符号)。请将短文重新排版,要求如下:
每行不超过80个字符;每个单词居于同一行上;在同一行的单词之间以一个空格分隔;行首和行尾都没有空格。
输入
第一行是一个整数n,表示英文短文中单词的数目. 其后是n个以空格分隔的英文单词(单词包括其前后紧邻的标点符号,且每个单词长度都不大于40个字母)。
输出
排版后的多行文本,每行文本字符数最多80个字符,单词之间以一个空格分隔,每行文本首尾都没有空格。
#include <iostream>#include <cstring>using namespace std;int main() { int n=0,len =0; cin >> n; cin.get(); char a[1000][40];//这里开头写了[200][40]没通过.. for (int i = 0; i < n; i++) cin >> a[i]; cout << a[0];//先输出第一个词 len = strlen(a[0]); for (int j = 1; j < n; j++) { len = len + strlen(a[j]) + 1; if (len > 80) { cout << endl; cout << a[j];//长度超了就输出/n+单词 len = strlen(a[j]); } else { cout << ' ' << a[j];//空格+单词 } } return 0;}
这题真的是很简单了》。
- C程序设计进阶week5(指针2注意)
- C程序设计Week5
- C程序设计进阶week6(指针3)
- 指针与二维数组练习-文字排版(C程序设计进阶 第5周)
- java 进阶week5- casteGame
- 寻找下标(C程序设计进阶第2周)
- 四大湖(C程序设计进阶第2周)
- 票统计(C程序设计进阶第2周)
- Tomorrow never knows?(C程序设计进阶第2周)
- 细菌实验分组(C程序设计进阶第2周)
- 流感传染(C程序设计进阶第2周)
- 寻找下标(C程序设计进阶 第2周)
- 四大湖(C程序设计进阶 第2周)
- 发票统计(C程序设计进阶 第2周)
- 细菌实验分组(C程序设计进阶 第2周)
- C程序设计进阶week2
- C程序设计进阶week3
- C程序设计进阶week4
- Git常用命令
- PAT 甲级 1023. Have Fun with Numbers(大数的两倍运算)
- linux按行切割文件
- Python实战:Python网络爬虫
- 2017.6.15 文本显示
- C程序设计进阶week5(指针2注意)
- Bitmap 的质量压缩
- CSDN-markdown编辑器语法——字体、字号与颜色
- MyBatisGenerator的自动生成代码之Eclipse
- php curl详解
- [Matlab]错误使用 handle.handle/get对象无效或已删除
- 【技巧】CSDN使用过程操作技巧集锦->持续更新中
- 14. 编写递归函数,在第一行打印输出1个1,在第二行输出2个2,。。。,在第n行输出n个n。
- [IOS APP]大唐雷音寺