第6讲 单元作业

发布时间 2023-12-28 09:36:10作者: YANTARES

1. 输入一个小于10的正整数n,显示具有如下形式的n行杨辉三角形。图中n=6。

‏提示:解该题有两个关键:

① 形成满足杨辉三角形各项值的数组。首先定义二维数组a[10][10],杨辉三角形的形成特点是第1列(下标为0)和主对角线均为1,其余各项有如下关系:

   a[i][j]= a[i-1][j-1]+ a[i-1][j]    i=2,3…,n-1    j=1,2…,i-1

‏②在输出每一行元素前,利用如下语句确定每行的起始位:

cout<<setw((n-i)*3)<<' ';    

 

yzy's version:

 1 #include <iostream>
 2 #include <iomanip>
 3 using namespace std;
 4 int main()
 5 {
 6     int a[10][10], i, j,n;
 7     cout << "想要几行杨辉三角形?最多10行";
 8     cin >> n;
 9     for (i = 0; i < n; i++)
10         a[i][0] = a[i][i] = 1;
11     for (i = 2; i < n; i++)
12         for (j = 1; j < i; j++)
13             a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
14 
15     for (i = 0; i < n; i++)
16     {
17         cout << setw((n - i) * 3) << ' ';
18         for (j = 0; j <= i; j++)
19             cout<<a[i][j]<<' '<<' '<<' '<<' '<<' ';
20         cout << endl;
21     }
22     system("pause");
23     return 0;
24 }
View Code

 

2. 

编写程序,将某一指定字符从一个已知的字符串中删除。假设已知字符串为“aaaasdfga”,将其中出现的'a'字母删除,删除后的字符串为“sdfg”。

yzy's version:
 
 1 #include <iostream>
 2 #include <stdio.h>
 3 #define N 100
 4 using namespace std;
 5 int main()
 6 {
 7     char s[N], t;
 8     int i, j;
 9     cout << "输入一个字符串!";
10     gets_s(s);
11     cout << "想从中删除什么字母呢?";
12     cin.get(t);
13     i = 0;
14     for (int i = 0; s[i] != '\0';)
15     {
16         if (s[i] == t)
17         {
18             for (int j = i + 1; j < N + 1; j++)
19             {
20                 s[j - 1] = s[j];
21 
22             }
23 
24         }
25         else
26             i++;
27 
28     }
29     puts(s);
30     system("pause");
31     return 0;
32 }
View Code

 

3. 

编一个程序,输入一个字符串,将其倒序存放后输出。例如,假设原数组a的内容为“VISUAL C++PROGRAM”,倒序后数组a中的内容为“MAGORP++C LASUIV”。

‍要求:不能借助另外一个数组实现倒序存放。

 

yzy's version:

 1 #include <iostream>
 2 #include <stdio.h>
 3 #define N 100
 4 using namespace std;
 5 int main()
 6 {
 7     char s[N], t;
 8     int i, j,k;
 9     cout << "输入一个字符串!";
10     gets_s(s);
11     k = strlen(s);
12     for (int i = 0; i<(k+1)/2; i++)
13     {
14         t = s[i];
15         s[i] = s[k - i-1];
16         s[k - i - 1] = t;
17     }
18     puts(s);
19     system("pause");
20     return 0;
21 }
View Code

 

4. 

输入一字符串,将该字符串中的大小写字母相互转换。如,假设原字符串的内容为“How are you”,则转换后的内容为“hOW ARE YOU”

 yzy's version:
 1 #include <iostream>
 2 #include <stdio.h>
 3 #define N 100
 4 using namespace std;
 5 int main()
 6 {
 7     char s[N];
 8     int i;
 9     gets_s(s);
10     for (i = 0; s[i] != '\0'; i++)
11     {
12         if (s[i] >= 'a' && s[i] <= 'z')
13             s[i] = s[i] - 'a' + 'A';
14         else if(s[i] >= 'A' && s[i] <= 'Z')
15             s[i] = s[i] - 'A' + 'a';
16     }
17     puts(s);
18     system("pause");
19     return 0;
20 }
View Code

 

5. 

编写程序,将两个已知字符串中第二个字符串连接到第一个字符串的后面,并将连接后的第一个字符串的内容输出。

  yzy's version:
 1 #include <iostream>
 2 #include <stdio.h>
 3 #define N 100
 4 using namespace std;
 5 int main()
 6 {
 7     char s[N] = { "I wrote this program on my birthday!" }, t[N] = {"wish myself and you good luck!"};
 8     puts(s);
 9     puts(t);
10     strcat_s(s, t);
11     puts(s);
12     system("pause");
13     return 0;
14 }
View Code