C++预学习
来源:互联网 发布:在淘宝上开网店程序 编辑:程序博客网 时间:2024/05/01 07:52
学习任务:
初步掌握visual studio 2013 中控制台c程序的建立。
结合课本讲解指针概念;指针上机练习。
讲解动态分配和释放。 malloc/free.
一维指针动态分配和释放练习。
二维指针概念讲解。二维指针动态分配和释放练习。
作业:矩阵乘法
用户输入矩阵1行数、列数,然后提示用户输入各元素;
用户输入矩阵2行数、列数,然后提示用户输入各元素;
输入后计算相乘结果矩阵。
/********************************************二维指针概念讲解。二维指针动态分配和释放练习。作业:矩阵乘法用户输入矩阵1行数、列数,然后提示用户输入各元素;用户输入矩阵2行数、列数,然后提示用户输入各元素;输入后计算相乘结果矩阵*********************************************/#include<stdio.h>#include<stdlib.h>void showhelp( int* row , int* column );void matrix_input( int** a , int row , int column );void matrix_mulp( int** a , int** b , int row1 , int column1 , int row2 , int column2 );int main( ){ int **A = NULL , **B = NULL; //指针初始化 int row1 , column1 , row2 , column2; showhelp( &row1 , &column1 ); A = ( int** ) malloc( sizeof( int* ) * row1 ); A[0] = ( int* ) malloc( sizeof( int ) * row1 * column1 ); matrix_input( A , row1 , column1 ); showhelp( &row2 , &column2 ); B = ( int** ) malloc( sizeof( int* ) * row2 ); B[0] = ( int* ) malloc( sizeof( int ) * row2 * column2 ); matrix_input( B , row2 , column2 ); matrix_mulp( A , B , row1 , column1 , row2 , column2 ); free( A[0] ); free( A ); free( B[0] ); free( B );}/***********************************************函数名称:showhelp函数参数:两个整型指针分别代表矩阵的行和列调用函数:无返回参数:无************************************************/void showhelp( int* row , int* column ){ printf( "please input the row and column of the matrix:\n" ); printf( "row= " ); scanf_s( "%d" , row ); printf( "column= " ); scanf_s( "%d" , column );}/***********************************************函数名称:matrix_input函数参数:存储矩阵的首地址,矩阵的行数、列数调用函数:无返回参数:无************************************************/void matrix_input( int** a , int row , int column ){ int i , j; int** p; for( i = 1; i < row; i++ ) //内存分配 { a[i] = a[i - 1] + column; } for( i = 0; i < row; i++ ) { for( j = 0; j < column; j++ ) { scanf_s( "%d" , ( a[i] + j ) ); //没有完全当成数组用,也可以写成&a[i][j] } } printf( "The matrix you input is as followed:\n" ); for( i = 0; i < row; i++ ) { for( j = 0; j < column; j++ ) { printf( "%d " , *( a[i] + j ) ); //和上面一样,也可以写成a[i][j] } printf( "\n" ); }}/***********************************************函数名称:matrix_mulp函数参数:两相乘矩阵的首地址,两矩阵的行数、列数调用函数:无返回参数:无函数功能:计算两已知矩阵的积并显示在屏幕上************************************************/void matrix_mulp( int** a , int** b , int row1 , int column1 , int row2 , int column2 ){ int s , arow , acolumn , brow , bcolumn; printf( "The result is as follows:\n" ); for( arow = 0; arow < row1; arow++ ) { for( bcolumn = 0; bcolumn < column2; bcolumn++ ) { s = 0; acolumn = 0; for( brow = 0; brow <row2; ) { s = s + ( *( a[arow] + acolumn ) ) * ( *( b[brow] + bcolumn ) ); acolumn++; brow++; } printf( "%d " , s ); } printf( "\n" ); }}
现在来看,第一个作业是写得比较糟糕的,内存的释放有问题,内存申请的时候也不明晰,总之,有待改进的地方,不过是第一次,总归慢慢来。
千里之行始于足下!
0 0
- C学习
- C++学习
- c ++ 学习
- 学习C
- c学习
- 学习C#!
- 学习C
- c学习
- c学习
- 学习C
- 学习C
- 学习C++
- C学习
- c学习
- 【C/C++】学习导论
- C/C++____vector___学习
- C++C 学习
- C++/C学习笔记
- 王学岗WebView(一)
- HDU#1049:Climbing Worm
- web移动端事件总结
- HY项目中问题总结(tableview 的细节处理以及基类的使用)
- 设计模式(一) 基本概念
- C++预学习
- 一个由CountDownLatch引发的Bug
- C# 求解数学里的组合
- Linux使用操作命令
- LCS最长公共子序列(最优线性时间O(n))
- 做前端的能不能不学习 JavaScript 而直接学习 jQuery ?
- Android Touch时间传递机制
- 文章标题
- Hygieia环境配置