C++第八周mooc在线测评—第8周 按址操作(2)——指针与数组、字符串、结构体,动态数组
2016-11-06 19:23
1916 查看
//利用指针输出数组中的元素(20分) //题目内容: //编写程序,把从1到n的n个整数赋予某个int型数组,然后用int型指针输出该数组元素的值。, // //输入格式: //输入参数n // //输出格式: //输出是1到n n个数组元素, 注意最后一个元素之后没有空格。 // //输入样例: //9 // //输出样例: //1 2 3 4 5 6 7 8 9 #include<iostream> int main(int argv, char** argc) { int n; std::cin >> n; int data[100]; int *p; p = data; for (int i = 0; i < n; i++) data[i] = i+1; for (int i = 0; i < n; i++) { std::cout << *p; p++; if (i!=n-1) { std::cout << " "; } } system("pause"); return 0; }
//2输出数字的英文名称(20分) //题目内容: //编写一个函数,将表示数字的数值(1 - 12)转换成对应的英文名称(小写)。用户输入阿拉伯数字,程序输出对应数字的英文单词。要求必须使用指针数组完成。 // //输入格式 : //1 - 12的数字 // //输出格式: //输入数字对应的英文单词,均为小写字母 // //输入样例: //1 // //输出样例: //one #include<iostream> int main(int argc, char**argv) { int number; std::cin >> number; char *word[] = { "one", "two", "three" ,"four","five","six","seven","eight","nine","ten","eleven","twelve"}; std::cout << word[number-1]; system("pause"); return 0; }
//3去除字符串首尾多余的空格(20分) //题目内容: //用户输入一个字符串,首尾有多余的空格,编写程序来去除这些多余的空格。要求必须使用指针来完成本题。 // //输入格式 : //一个首尾有多余空格字符串。为了便于标识出尾部的空格,在字符串尾部额外添加了个#号表示字符串结束。字符串内部保证不会出现#号。 // //输出格式: //去除空格后的字符串,同样在在字符串尾部额外添加了个#号表示字符串结束。 // //输入样例: //my score # // //输出样例: //my score# #include<iostream> int main(int argc, char**argv) { char str[300]; char *s = str; std::cin.getline(str,300,'#'); do { if (*s !=' ') { std::cout << *s; } else { if (*(s - 1) != ' '&&*(s + 1) != ' '&&*(s + 1) != '\0') { std::cout << *s; } } s++; } while (*s !='\0'); std::cout << '#'; system("pause"); return 0; }
//4遍历二维数组(20分) //题目内容: //用户首先输入两个整数m和n, 然后输入m*n个元素,建立一个m*n的二维数组。要求使用 行指针 来遍历这个二维数组,输出该数组中所有元素的和。 // //输入格式 : //首先输入两个整数m和n, 然后依次输入m*n个元素 // //输出格式: //二维数组中所有元素的和 // //输入样例: //2 3 //1 3 5 //2 4 6 // //输出样例: //21 #include <iostream> using namespace std; int main() { int **a; //指向指针的指针 int n, m;//n行 m列 int i, j; int sum = 0; cin >> n >> m; //输入行数和列数 //申请空间 a = new int * ; //n个 int 指针 数组 for (i = 0; i<n; i++) //n个大小为m的一维指针数组 { a[i] = new int[m]; //1个大小为m的一维数组,a[i]是int指针 } //输入数据 for (i = 0; i<n; i++) { for (j = 0; j<m; j++) { //cin>>a[i][j];//输入 cin >> *(*(a + i) + j);//同上a相当于行指针 sum = *(*(a + i) + j) + sum; } } cout << sum; //释放申请的空间!!! for (i = 0; i<n; i++) //释放n个大小为m的一维数组 { delete[]a[i]; } delete[]a;//释放int指针数组 system("pause"); return 0; }
//5动态申请大数组(20分) //题目内容: //本题要求编写两个函数并测试。 //第一个函数原型为 int *new_array(int n); 该函数可以根据参数n动态申请n个元素的整型数组,最后将数组指针返回。 //第二个函数原型为 void init_array(int *p, int n, int c); 将指定的n个元素的数组每个元素的值均初始化为c。 // //用户输入数组大小n和待初始化的值c, 调用new_array函数申请空间,再调用init_array初始化,最后输出这个数组的所有元素。 // //输入格式 : //数组大小n和待初始化的值c // //输出格式: //数组的所有元素, 注意最后一个元素后没有空格 // //输入样例: //8 27 // //输出样例: //27 27 27 27 27 27 27 27 #include<iostream> using namespace std; int *p; int* new_array(int n) { p = new int ; return p; } void init_array(int*p, int n, int c) { for (int i = 0; i < n; i++) { p[i] = c; } } int main() { int c, n; cin >> n>> c; int *w = new_array(n); init_array(w, n, c); for (int i = 0; i < n; i++) { cout << *w; w++; if (i != n-1) { cout << " "; } } system("pause"); return 0; }
//6(本题只记1分)矩阵对角线元素之和。(1分)
//题目内容:
//编写函数,求n阶方阵的对角线元素之和。编写主程序,用户输入矩阵的阶数n,动态申请n*n的存储空间,再输入n行、n列的元素,调用函数求矩阵的对角元素之和,在主函数中输出这个和。设元素均为整数。n >= 1。
//
//
//输入格式 :
//一个正整数n,表示矩阵的阶数。
//n行、n列的矩阵元素。数据间用空格隔开。
//
//输出格式:
//一个正整数
//
//输入样例:
//3
//6 1 2
//1 13 6
//62 4 35
//
//输出样例:
//54
#include<iostream>
using namespace std;
int main()
{
int n;
int **a;
int sum = 0;
cin >> n;
a = new int*
;
for (int i = 0; i < n; i++)
{
a[i] = new int
;
for (int j = 0; j < n; j++)
cin >> a[i][j];
}
for (int i = 0; i < n; i++)
{
sum = sum + a[i][i];
}
cout << sum;
system("pause");
return 0;
}
//7(本题只记3分)十进制点分IP转换为32位二进制IP(3分) //题目内容: //编写程序,将十进制点分的IP转换为32位二进制IP地址。程序要能验证输入的十进制点分IP地址的合法性。用户输入的IP不和法时,输出"data error"。 // //请使用模块化程序设计的思想,将功能模块编写成函数。通过指针传递参数,操作数据,返回结果。在主函数中输入IP地址,调用函数进行合法性验证和转换,在主函数中输出32位二进制IP。 // //输入格式 : //十进制点分IP地址(英文句点) // //输出格式: //32位二进制数(二进制字符串) // //输入样例: //202.151.96.33 // //输出样例: //11001010100101110110000000100001 #include<iostream> #include<string.h> using namespace std; bool correct(char *str) { int num = 0; int length = strlen(str); for (int i = 0; i < length; i++) { if (str[i] == '.') { num++; } } return (num == 3 ? true : false); } void two2dec(int dec) { int Remain = 1; int i = 7; char str2[9] = "00000000"; while (dec != 0) { Remain = dec % 2; dec = dec / 2; str2[i] = char(Remain + 48); i--; } cout << str2; } void transfer(char *str) { int length = strlen(str); int digit = 0; int number = 0; for (int i = 0; i <= length;){ if (str[i] != '.' && i != length ) { digit++; i++; } else { for (int j = i - digit; j < i; j++){ number = 10 * number + int(str[j] - 48); } two2dec(number); number = 0; i++; digit = 0; } } } int main() { char str1[100]; cin.getline(str1, 100); if (correct(str1)) { transfer(str1); } else { cout << "data error"; } system("pause"); return 0; }
相关文章推荐
- C++第8周项目 数组和指针 【项目2-用对象数组操作长方柱类】(复习新版)
- C++第13周mooc在线测评—第13周 标准输入输出与文件操作
- C++第七周mooc在线测评—指针、变量和函数
- c++学习笔记2——指向字符串的指针数组?
- C++带有指针数组的结构体转换为C#可用的结构体
- C++复习5.指针数组字符串
- C/C++(字符串处理)字符指针、字符数组用法大总结
- C++语法笔记 – 数组 指针与字符串
- c/c++ 字符数组、字符指针和字符串类型
- C++_读入很多行字符串到字符串指针数组、或者到字符串数组中
- C#调用c++Dll 结构体数组指针的问题
- /C/C++ DLL在其它语言中的调用 结构体/数组 指针
- 实验名称: C++数组、指针、结构体的使用
- 指针概念;数组指针、字符串指针、结构体指针、动态内存申请、指针数组;
- C++指针、数组、字符串结论杂记
- C/C++基础知识总结——数组、指针域、字符串
- C/C++(字符串处理)字符指针、字符数组用法大总结
- C++利用指针数组和快排对输入的字符串进行排序
- 双向循环链表实现字符串或int类型数组的左移或右移操作C++
- c/c++ 字符数组、字符指针和字符串类型总结帖