字符串及数组应用程序设计习题

合集下载

C语言练习--数组与字符串编程

C语言练习--数组与字符串编程

1、编写一个程序,处理某班3门课程的成绩,它们是语文、数学和英语。

先输入学生人数(最多为50个人),然后按编号从小到大的顺序依次输入学生成绩,最后统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩。

2、编写一个程序,从键盘输入10个学生的成绩,统计最高分、最低分和平均分。

3、编写一个程序,将用户输入的十进制整数转换成任意进制的数。

4、编写一个程序,将一个子字符串s2插入到主字符串s1中,其起始插入位置为n.5、有一行文字,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n 的字符),要求该行文字和待删的字符均由终端输入。

6、编写一个程序,将字符串“computer“赋给一个字符数组,然后从第一个字母开始间隔地输出该字符串。

7、有一个数列,它的第一项为0,第二项为1,以后每一项都是它的前两项之和,试产生出此数列的前20项,并按逆序显示出来。

8、从键盘上输入一个字符串,假定该字符串的长度不超过30,试统计出该串中所有十进制数字字符的个数。

9、首相从键盘输入一个4行4列的一个实数矩阵到一个二维数组中,然后求出主对角线上元素之乘积。

10、已知一个数值矩阵为,求出该矩阵的转置矩阵并输出,其中转置矩阵中的[i][j]位置上的元素等于原矩阵中的[j][i]位置上的元素。

11、已知一个数值矩阵A为,另一个矩阵B为,求出A与B的乘积矩阵c[3][4]并输出,其中c 中的每个元素c[i][j]等于∑A[i][k]*B[k][j]。

12、首先让计算机随机产生出10个两位正整数,然后按照从小到大的次序显示出来。

13、从键盘上输出一个字符串,假定字符串的长度小于80,试分别统计出每一种英文字14、有n个数,已按从小到大的顺序排列好,要求输入一个数,把它插入到原有的数列中,而且仍保持有序,同时输出新数列。

15、将螺旋方阵存放到维数为n的二维数组中,并把它们打印输出。

要求由程序自动生成下图所示的螺旋方阵16、将一个字符数组a中下标为单号的元素赋给另一个字符数组b, 并将其转换成大写字母,然后输出字符数组a和b.17、应用一维数组,实现从键盘输入10个整数,输出其中的最小数。

C++字符数组练习题及解答

C++字符数组练习题及解答

第1题:编写程序,比较两个字符串的大小,不允许使用strcmp函数。

输入分2行,每一行均为字符串(不包含空格)。

如果第一个字符串大于第二个字符串,则输出1;如果两个字符串大小相等,则输出0;如果第一个字符串小于第二个字符串,则输出-1。

样例输入:ChinaChina样例输出:0#include<iostream.h>int main(){char a[100],b[100];int t=0,i;cin>>a;cin>>b;for(i=0;a[i]!=0||b[i]!=0;i++){if(a[i]>b[i]){t=1;break;}if(a[i]<b[i]){t=-1;break;}}cout<<t;return 0;}第2题:编写程序,将一个字符串首尾互换,并与原字符串连接后输出。

输入字符串(不包含空格),输出处理后的结果。

样例输入:china样例输出:chinaanihc#include<iostream.h>#include<string.h>int main(){char str1[100],i;int n;cin>>str1;n=strlen(str1);for(i=0;i<n;i++){str1[n+i]=str1[n-i-1];}for(i=0;i<n*2;i++)cout<<str1[i];return 0;}第3题:编写程序,输入由数字字符构成的字符串,分别统计该字符串中数字字符对应的数字中奇数和偶数的个数。

样例输入:7843028503样例输出:4 6#include <string.h>#include <iostream.h>int main(){int a[100],i,n,o,j;char str[100];o=0;j=0;cin>>str;n=strlen(str);for(i=0;i<n;i++){a[i]=str[i];}for(i=0;i<n;i++){a[i]=a[i]-48;if(a[i]%2==0){o=o+1;}else{j=j+1;}}cout<<j<<" "<<o;return 0;}第4题:编写程序,输入字符串(不包含空格),删除字符串中ASCII码值能被3整除的字符,将剩余字符按从小到大排序后输出。

C程序设计(数组)习题与答案

C程序设计(数组)习题与答案

C程序设计(数组)习题与答案C程序设计(数组)习题与答案数组是C语言中常用的数据结构之一,它可以存储多个相同类型的元素。

掌握数组的使用对于C程序设计至关重要,下面将为大家介绍一些关于C数组的习题及其答案。

1. 习题一:计算数组元素的和题目描述:编写一个程序,计算给定数组中所有元素的和,并输出结果。

解题思路:```c#include <stdio.h>int main() {int arr[5] = {1, 2, 3, 4, 5}; // 定义一个包含5个元素的整型数组int sum = 0; // 用于存储和的变量// 遍历数组,累加每个元素的值for (int i = 0; i < 5; i++) {sum += arr[i];}printf("数组元素的和为:%d\n", sum);return 0;}```2. 习题二:查找数组中的最大值题目描述:编写一个程序,找出给定整型数组中的最大值,并输出结果。

解题思路:```c#include <stdio.h>int main() {int arr[7] = {4, 7, 2, 9, 1, 5, 8}; // 定义一个包含7个元素的整型数组int max = arr[0]; // 假设第一个元素为最大值// 遍历数组,比较每个元素的值与当前最大值的关系for (int i = 1; i < 7; i++) {if (arr[i] > max) {max = arr[i];}}printf("数组中的最大值为:%d\n", max);return 0;}```3. 习题三:查找数组中的特定元素题目描述:编写一个程序,在给定整型数组中查找是否存在指定元素,并输出结果。

解题思路:```c#include <stdio.h>int main() {int arr[6] = {3, 6, 9, 2, 5, 8}; // 定义一个包含6个元素的整型数组 int target = 2; // 指定要查找的元素int found = 0; // 用于标记是否找到目标元素的变量// 遍历数组,比较每个元素的值与目标值的关系for (int i = 0; i < 6; i++) {if (arr[i] == target) {found = 1;break;}}if (found) {printf("数组中存在目标元素:%d\n", target);} else {printf("数组中不存在目标元素:%d\n", target);}return 0;}```4. 习题四:数组元素逆序排列题目描述:编写一个程序,将给定整型数组的元素逆序排列,并输出结果。

课后习题 第六章 数组与字符串

课后习题 第六章 数组与字符串
3. 写统计输入的正文中有多少单词的程序,这里的单词指的是用空白符分隔开的字符串。 #include <stdio.h> void main() { int c,n; bool inword; n = 0; inword = false; while((c = getchar()) != EOF) if(c == ' '||c == '\t'||c == '\n') inword = false; else if(inword == false) { inword = true; n ++;
cout பைடு நூலகம்< "输入的矩阵为:" << endl; for(i=0; i<3; i++) {
for (j=0; j<3; j++) cout << data[i][j] << " "; cout << endl;
} move(data); cout << "转置后的矩阵为:" << endl; for(i=0; i<3; i++) {
一:选择题 1. 要声明一个有 10 个 int 型元素的数组,正确的语句是____。 a. int a[10];
b. int a[2,5];
c. int a[]; d. int *a[10]; 2. 合法的数组初始化语句是____。 a. char a = "string";
b. int a[5] = {0,1,2,3,4,5};
5.编程实现对分查找。当数组很大时,循环查找很费时。如果程序已对数组进行升序和降序排序,就可用对分查找。 对分查找是每一次查找操作都把要检查的数值个数对半分。对查找不到的数,输出-1。

串与数组的练习题

串与数组的练习题

串与数组的练习题一、填空题 1. 称为空白串。

2. 设S=“A;/document/Mary.doc”,则的字符定位的位置为4. 子串的定位运算称为串的模式匹配;称为模式。

5. 设目标T=”abccdcdccbaa”,模式P=“cdcc”,则第6. 若n为主串长,m为子串长,则串的古典匹配算法最坏的情况下需要比较字符的总次数为。

7. 假设有二维数组A6×8,每个元素用相邻的6个字节存储,存储器按字节编址。

已知A的起始存储位置为1000,则数组A的体积为8B;末尾元素A57的第一个字节地址为;若按行存储时,元素A14的第一个字节地址为×6+1000=107;若按列存储时,元素A47的第一个字节地址为×6+1000)=127 。

8. 设数组a[1?60, 1?70]的基地址为2048,每个元素占2个存储单元,若以列序为主序顺序存储,则元素a[32,58]的存储地址为答:不考虑0行0列,利用列优先公式:LOC=LOC+[*+i-c1)]*L 得:LOC=2048+[*+32-1]]*2=89509. 三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素的行下标、列下标和元素值。

10.求下列广义表操作的结果:GetHead===;//头元素不必加括号GetHead】=== ; GetHead】】===b; GetTail】】===;二、单选题1. 串是一种特殊的线性表,其特殊性体现在:A.可以顺序存储B.数据元素是一个字符C.可以链式存储D.数据元素可以是多个字符2. 设有两个串p和q,求q在p中首次出现的位置的运算称作:A.连接B.模式匹配C.求子串D.求串长3. 设串s1=’ABCDEFG’,s2=’PQRST’,函数con返回x和y串的连接串,subs返回串s的从序号i开始的j个字符组成的子串,len返回串s的长度,则con), subs,))的结果串是:A.BCDEF B.BCDEFG C.BCPQRST D.BCDEFEF解:con返回x和y串的连接串,即con=‘ABCDEFGPQRST’; subs返回串s的从序号i开始的j个字符组成的子串,则subs)=subs=’ BCDEF’; subs,)=subs=’ EF’;所以con), subs,))=con之连接,即BCDEFEF4.假设有60行70列的二维数组a[1?60, 1?70]以列序为主序顺序存储,其基地址为10000,每个元素占2个存储单元,那么第32行第58列的元素a[32,58]的存储地址为。

数据结构串和数组的习题答案

数据结构串和数组的习题答案
Βιβλιοθήκη 12.D 13.A 14.B
补充习题:
15.两维数组是一种非线性结构。( A)正确 B)不正确 )
16.数组A三维的长度分别为b3,b2,b1;每个数组元素占一个 存储单元;LOC[0,0,0]为基址。若以行序为主序,则元素 A[i][j][k]的地址为( )(其中0<=i<b3,0<=j<b2,0<=k<b1) A)LOC[0,0,0]+i*b2*b1+j*b1+k
B)任意个字母的序列 D)有限个字符的序列
C)串中所含字符的个数,且大于0
D)串中所含字符的个数
1.C 2.D 3.D
补充习题:
4.设有两个串p和q,求q在p中首次出现的位置的运算( A)连接 C)求子串 B)模式匹配 D)求串长 )存储方式最为节 ).
5.若某串的长度小于一个常数,则采用( 省空间。 A)链式 A)正确 A)正确 B)堆结构 B)不正确 C)顺序
(3,1,5),(3,2,-1),(4,5,4),(5,1,-3),则其转置矩阵的三元 组表中第3个三元组为( )。
A) (2,1,3)
C) (3,2,-1)
B) (3,1,5)
D) (2,3,-1)
14.若采用三元组压缩技术存储稀疏矩阵,只要把每个元素 的行下标和列下标互换,就完成了对该矩阵的转置运算,这 种观点( ) A)正确 B)不正确
A)表达变得简单 B)减少不必要的存储空间的开销 C)去掉矩阵中的多余元素 D)对矩阵元素的存取变得简单
8.B 9.D 10.B 11.B
补充习题:
12.三元组表不包括( A) 行数 B) 列数 )。 C) 元素值 D) 元素总数
13.设已知一个稀疏矩阵的三元组如下:(1,2,3),(1,6,1),

3字符数组及字符串练习题

3字符数组及字符串练习题

1.输入一串字符,个数不超过100个,且以"."结束。

判断它们是否构成回文。

(所谓回文,是指一串字符从左往右与从右往左读,结果是一致的)。

2.随机输入n个国家的英文名称,每个国家的名称单独占一行,按字母顺序排序后输出,输出时仍然要求每个国家的名称单独占一行。

3.随机输入一些国家的英文名字(输入的数据共占一行且不超过255个字符,以一个空格为分隔符),按字母顺序排序后输出。

比较大小(bj.pas)输入正整数a,b(<=10250),比较a和b的大小。

【输入文件】bj.in。

第一行:a,第二行:b 。

【输出文件】bj.out。

如果a>b,输出1;如果a=b,输出0;如果a<b,输出-1 。

【样例输入】:12345【样例输出】:1字符串编辑(edit.pas)对一个长度<=40个字符的字符串, 进行如下编辑:①D:删除一个字符,命令的方式为:D a 其中a为被删除的字符例如:D s 表示删除字符‘s’,若字符串中有多个‘s’,则删除第一次出现的,如原串:‘This is a book.’,删除的结果为:‘Thi is a book.’②I:插入一个字符,命令的格式为:I a1 a2 其中a1表示插入到指定字符前面,a2表示将要插入的字符例如: I s d 表示在指定字符‘s’的前面插入字符‘d’,若原串中有多个‘s’,则插入在最后一个字符的前面,如原串:‘This is a book.’ 插入后:‘This idsa book.’③R:替换一个字符,命令格式为:R a1 a2 其中a1为被替换的字符,a2为替换的字符,若在原串中有多个a1,则应全部替换,如原串:‘This is a book.’,输入命令: R o e,替换后:‘This is a bee k.’在编辑过程中,若出现被指定的字符不存在时,则给出提示信息‘no t exist’。

【输入文件】edit.in两行,第一行为字符串,第二行为命令。

字符数组练习题

字符数组练习题

字符数组练习题字符数组是C语言中常用的数据类型之一,用于存储一系列字符。

在本文中,我们将探讨一些字符数组的练习题,以帮助提升对字符数组的理解和运用。

1. 字符串拷贝题目描述:给定两个字符数组str1和str2,请编写一个函数,将str2的内容拷贝到str1中。

要求:不使用标准库函数strcpy(),而是自己编写实现。

解题思路:遍历str2,将每个字符逐个拷贝到str1的对应位置。

代码示例:```cvoid stringCopy(char str1[], char str2[]) {int i = 0;while (str2[i] != '\0') {str1[i] = str2[i];i++;}str1[i] = '\0'; // 添加字符串结束符}2. 字符串连接题目描述:给定两个字符数组str1和str2,请编写一个函数,将str2的内容连接到str1的末尾。

要求:不使用标准库函数strcat(),而是自己编写实现。

解题思路:先找到str1的末尾位置,然后从该位置开始,逐个拷贝str2的字符到str1。

代码示例:```cvoid stringConcat(char str1[], char str2[]) {int i = 0;while (str1[i] != '\0') {i++;}int j = 0;while (str2[j] != '\0') {str1[i] = str2[j];i++;j++;str1[i] = '\0'; // 添加字符串结束符}```3. 字符串长度题目描述:给定一个字符数组,请编写一个函数,计算该字符数组表示的字符串的长度。

要求:不使用标准库函数strlen(),而是自己编写实现。

解题思路:遍历字符数组,直到遇到字符串结束符'\0'时停止,并记录经过的字符个数。

字符数组习题(1)

字符数组习题(1)

字符数组习题(1)字符数组习题1.s12和s2已正确定义并分别指向两个字符串。

若要求:当s1所指串⼤于s2所指串时,执⾏语句S;则以下选项中正确的是_____A)if(s1>s2)S; B)if(strcmp(s1,s2))S;C)if(strcmp(s2,s1)>0)S; D)if(strcmp(s1,s2)>0)S;2.以下定义语句中,错误的是________。

A) int a[]={1,2}; B) char a[]={"test"};C) char s[10]={"test"}; D) int n=5,a[n];3、当接受⽤户输⼊的含有空格的字符串时,应使⽤______函数。

A) gets( ) B) getchar( ) C) scanf( ) D) printf( )4、设有数组定义:char array[]="China";则strlen(array)的值为______ 。

A) 4 B) 5 C) 6 D) 75、设有数组定义:char array[]="China";则数组array所占的存储空间为________。

A) 4个字节B) 5个字节C) 6个字节D) 7个字节6、设有数组定义:char array[10]= "China";则数组array所占的存储空间为__ _____。

A) 4个字节B) 5个字节C) 6个字节D) 10个字节7.有如下程序main(){ char ch[80];int j;long s=0;printf("Enter a numeral string\n"); gets(ch);for(j=0;ch[j]>'\0';j++)s=10*s+ch[j]-'0';printf("%ld\n",s);}如果运⾏时,从键盘上输⼊由数字组成的字符串,该程序的功能是______。

数据结构习题精编:串和数组

数据结构习题精编:串和数组

数据结构习题精编:串和数组一、选择题1.下面关于串的的叙述中,不正确的是A.串是字符的有限序列B.空串是由空格构成的串C.模式匹配是串的一种重要运算D.串既可以采用顺序存储,也可以采用链式存储2.下面关于串的的叙述中,正确的是A.空串就是空白串B.串相等指的是串的长度相等C.串的长度必须大于零D.串是一种特殊的线性表3.字符串是一种特殊的线性表,它与一般线性表的区别是A.字符串是一种线性结构B.字符串可以进行复制操作C.字符串可以顺序存储也可以链式存储D.字符串由字符构成并且通常作为整体参与操作4.串s="Data Structure"中长度为3的子串的数目是A.9B.11C.12D.145.若串S="software",则S的子串的数目是A.8 B.35 C.36 D.376.已知串S= "string",T="this",执行运算StrLength(StrCopy(S,T))的结果是A.2 B.4 C.6 D.107.若串S="SCIENCESTUDY",则调用函数StrCopy(P,SubString(S,1,7))后得到A.P="STUDY" B.P="SCIENCE" C.S="STUDY" D.S="SCIENCE" 8.若字符串采用链式存储,每个字符占用一个字节,每个指针在占用四个字节,则该字符串的存储密度为A.20%B.25%C.50%D.75%9.为查找某一特定单词在文本中出现的位置,可应用的串运算是A.串联接B.求子串C.串比较D.子串定位10.当目标串的长度为n,模式串的长度为m时,朴素的模式匹配算法最好情况下字符的比较次数A.m B.n C.n-m D.n+m11.当目标串的长度为n,模式串的长度为m时,朴素的模式匹配算法最坏情况下字符的比较次数A.m B.n C.(n-m+1)*m D.n*m12.已知串S="aaab",其Next数组的元素值依次为A.0、1、2、3 B.1、1、2、3 C.1、2、1、1 D.1、2、3、1 13.串"ababaaababaa" 的next数组为A.011234223456 B.012121111212 C.0123012322345 D.012345678999 14.字符串"ababaabab" 的nextval 为A.(0,1,0,1,0,0,0,1,1) B.(0,1,0,1,0,1,0,1,1)C.(0,1,0,1,0,2,1,0,1) D.(0,1,0,1,0,4,1,0,1)15.二维数组A[10][20]采用按行为主序的存储方式,每个元素占4个存储单元,若A[0][0]的存储地址为300,则A[8][10]的地址为A.660 B.732 C.980 D.113216.二维数组A[5][6]采用按列为主序的存储方式,每个元素占3个存储单元,若A[0][0]的存储地址是100,则A[4][3]的存储地址是A.157 B.166 C.169 D.18117.二维数组A按行优先顺序存储,其中每个元素占1个存储单元。

《C语言程序设计基础》习题集(含答案)

《C语言程序设计基础》习题集(含答案)

《C语言程序设计基础》习题集(含答案)《C语言程序设计基础》习题集(含答案)C语言是一门广泛应用于计算机科学领域的高级编程语言。

对于初学者而言,通过习题集的形式来学习C语言程序设计基础是一种有效的方法。

本文将为大家介绍一份包含答案的C语言程序设计习题集,通过解答这些习题,读者能够提升自己的C语言编程能力。

1. 数据类型与变量(1) 编写一个程序,要求输入一个字符,然后输出其ASCII码和对应的字符。

```c#include <stdio.h>int main() {char ch;printf("请输入一个字符:");scanf("%c", &ch);printf("字符 %c 的ASCII码是:%d\n", ch, ch);return 0;}```(2) 编写一个程序,输入长方形的长度和宽度,计算并输出长方形的面积和周长。

```c#include <stdio.h>int main() {int length, width;printf("请输入长方形的长度:");scanf("%d", &length);printf("请输入长方形的宽度:");scanf("%d", &width);int area = length * width;int perimeter = 2 * (length + width);printf("长方形的面积为:%d\n", area);printf("长方形的周长为:%d\n", perimeter);return 0;}```2. 控制结构(1) 编写一个程序,判断输入的一个整数是否为奇数。

```c#include <stdio.h>int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (num % 2 == 0) {printf("%d 是偶数。

第4章串与数组习题解析(答)

第4章串与数组习题解析(答)

第4章串与数组习题解析(答)习题四串与数组一、选择题1、设有两个串p和q,求q和p中首次出现的位置的运算称作。

A、连接B、求子串C、模式匹配D、求串长2、若串S=’good student’,其子串的数目是。

A、12B、79C、78D、133、串是一种特殊的线性表,其特殊性体现在。

A、可以顺序存储B、数据元素是一个字符C、可以链接存储D、数据元素可以是多个字符4、串是任意有限个。

A、符号构成的集合B、符号构成的序列C、字符构成的集合D、字符构成的序列5、已知模式串T=’abcdabcd’,则其next数组值为。

A、00123412B、01111234C、01232412D、112134126、数组SZ[-3..50,0..10]含有元素数目为。

A、88B、99C、80D、907、稀疏矩阵一般的压缩存储方法有两种。

A、二维数组和三维数组B、三元组和散列表C、三元组和十字链表D、散列表和十字链表8、一个nⅹn的对称矩阵,如果以行或列为主序放入内存,则其容量为。

A、nⅹnB、nⅹn/2C、(n+1)ⅹ n/2D、(n+1)ⅹ(n+1)/29、对数组经常进行的两种基本操作是。

A、建立与删除B、索引与修改C、查找与修改D、查找与索引10、二维数组A[10..20,5..10]采用行序为主序方式存储,每个数据元素占4个存储单元,且A[10,5]的存储地址是1000,则A[18,9]的地址是。

A、1208B、1212C、1368D、1364二、填空题1、两个字符串相等的充分必要条件是长度相等且对应位置上字符相同。

2、字符在串中的位置,即是字符在该序列中的序号。

3、串是指含n个字符的有限序列且n>=0 。

4、设有串S1=’I an a student’,S2=’st’,其index(S1,S2)= 8 。

5、含零个字符的串称为空串,用Φ表示;其他串称为非空串。

任何串中所含的字符的个数称为该串的长度。

6、一个串中任意个连续字符组成的子序列称为该串的子串,该串称为它的所有子串的主串。

c语言程序设计实验指导参考答案

c语言程序设计实验指导参考答案

c语言程序设计实验指导参考答案C语言程序设计实验指导参考答案在学习C语言程序设计的过程中,实验是不可或缺的一部分。

通过实验,我们可以巩固所学的知识,提高编程能力。

然而,有时候我们可能会遇到一些难题,不知道如何下手。

本文将为大家提供一些C语言程序设计实验的参考答案,希望能够帮助大家更好地完成实验任务。

1. 实验一:C语言基础实验一主要涉及C语言的基础知识,包括变量、运算符、控制语句等。

以下是一些常见的题目及参考答案:题目一:编写一个程序,实现两个整数的交换。

```c#include <stdio.h>void swap(int *a, int *b) {int temp = *a;*a = *b;*b = temp;}int main() {int a, b;printf("请输入两个整数:");scanf("%d %d", &a, &b);swap(&a, &b);printf("交换后的结果为:%d %d\n", a, b); return 0;}```题目二:编写一个程序,求1到n的和。

```c#include <stdio.h>int sum(int n) {if (n == 1) {return 1;} else {return n + sum(n - 1);}}int main() {int n;printf("请输入一个正整数:");scanf("%d", &n);printf("1到%d的和为:%d\n", n, sum(n)); return 0;}```2. 实验二:数组和字符串实验二主要涉及数组和字符串的应用。

以下是一些常见的题目及参考答案:题目一:编写一个程序,找出数组中的最大值。

```c#include <stdio.h>int findMax(int arr[], int n) {int max = arr[0];for (int i = 1; i < n; i++) {if (arr[i] > max) {max = arr[i];}}return max;}int main() {int arr[] = {1, 2, 3, 4, 5};int n = sizeof(arr) / sizeof(arr[0]);printf("数组中的最大值为:%d\n", findMax(arr, n));return 0;}```题目二:编写一个程序,判断一个字符串是否为回文字符串。

c语言必背的典型程序设计题目-数组、函数-------答案

c语言必背的典型程序设计题目-数组、函数-------答案

数组局部必须会编写的程序〔参考答案〕1、使用选择法、冒泡法对10个数进展排序,并输出排序前后的数列。

//选择法#include<stdio.h>void main(){int a[10]={12,45,7,8,96,4,10,48,2,46},n=10,i,j,t,temp;printf("Before sort:");for(i=0;i<10;i++){printf("%4d",a[i]);}printf("\n");//排序for(i=0;i<9;i++){t=i;for(j=i+1;j<10;j++){if(a[t]>a[j]){t=j;}}if(t!=i){temp=a[i];a[i]=a[t];a[t]=temp;}}printf("Aftere sorted:");for(i=0;i<10;i++){printf("%4d",a[i]);}printf("\n");}//冒泡法#include<stdio.h>voidmain(){int a[10]={12,45,7,8,96,4,10,48,2,46},n=10,I,j,t;printf(“Before sort:〞);for(i=0;i<10;i++){printf("%4d",a[i]);}prtintf(“\n〞);//排序for(i=0;i<=n-1;i++){for(j=0;j<i;j++)if(a[j]>a[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;}}printf(“Aftere sorted:〞);for(i=0;i<10;i++){printf("%4d",a[i]);}prtintf(“\n〞);}2、数组a中的元素已按由小到大顺序排列,以下程序的功能是将输入的一个数插入数组a中,插入后,数组a中的元素仍然由小到大顺序排列。

c语言字符数组、字符串习题

c语言字符数组、字符串习题

班级学号姓名分数
实验九字符数组、字符串
实验目的:
1、掌握字符数组的定义及数组元素的引用方法。

2、掌握字符数组的赋值、输入输出方法。

3、掌握字符串数据的处理方法。

4、掌握与字符数组有关的基本算法的程序设计。

5、能够应用字符数组进行综合程序设计。

实验内容:
1、输入一行字符,统计其中有多少个单词,单词之间用空格分开。

P165
2、统计出一行字符串中各元音字母的个数(大小写不区分)。

提示:首先从键盘接收一行字符串存放在字符数组中,然后逐个字符判断是否是元音字母,如果是,则数量加1。

3、有一篇文章,共有3行文字,每行有80个字符。

要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。

提示:可以定义二维字符数组str,大小为3×80,每行存放一个字符串,可以把str[0]、str[1]、str[2]看作3个一维字符组,用gets函数分别读入3个字符串,赋给3个一维字符数组。

然后逐个字符判断是哪一类,相应数量值加1。

友情提示:部分文档来自网络整理,供您参考!文档可复制、编制,期待您的好评与关注!。

C语言程序设计题目及解答-08

C语言程序设计题目及解答-08

C语言程序设计题目及解答-08一、判断题 (12分)1. 字符串只能存放在字符型数组中。

2分2. 字符数组中字符串可以整体输入输出。

2分3. char c[]="V ery Good"; 是一个合法的为字符串数组赋值的语句。

2分4. 字符常数和字符串常数的存储是相同的,都是以字符的ASCII 码值进行存放。

2分5. 用gets函数可以接收一个含有空格的字符串。

2分6. 用printf函数输出一个字符串时,格式字符为%S,输出项可以是此字符串或存放此字符串的数组的数组名。

2分二、选择题 (12分)1.下述对C语言字符数组的描述中错误的是( )。

[C] 2分A. 字符数组的下标从0开始B. 字符数组中的字符串可以进行整体输入/输出C. 可以在赋值语句中通过赋值运算符"="对字符数组整体赋值D. 字符数组可以存放字符串2.下列对字符数组的初始化不正确的是() [C] 2分A. char s[5]="abc";B. char s[5]={'a','b','c','d','e'};C. char s[5]="abcde";D. char s[]="abcde";3.有数组定义语句“char a[20];”,则正确的输入语句为() [D] 2分A. scanf("%s", &a);B. scanf("%s", a[]);C. gets(a[20]);D. gets(a);4.有数组定义语句“char a[20];”,则正确的输入语句为()。

[D] 2分A. scanf("%s",&a);B. scanf("%s",a[]);C. gets(a[20]);D. gets(a);5.C语言中,每个字符串的末尾都有一个字符串的结束符,表示字符串的终止。

01-数组运用程序设计练习与题解

01-数组运用程序设计练习与题解
数组运用程序设计习题与参考
1. 输入任意一字符串,统计其中字母的个数
2. 用冒泡法对 10 个整数从大到小排序
3.用数组求 Fibonacci 数列的前 20 个数,一行输出 5 个数。
F1 = 1 F2 = 1 Fn = Fn-1 + Fn-2
(n ≥2)
4. 统计 3 名学生的每门课课程平均分(提示:使用二维数组)
for(j=0;j<4;j++) scanf("%f",&a[i][j]); for(j=1;j<4;j++) { for(i=0;i<3;i++)
s=s+a[i][j]; s=s/3; a[i][j]=s; s=0.0; } printf("=================================\n"); printf("平均分\t"); for(j=1;j<4;j++) printf("%.0f\t",a[3][j]); printf("\n"); return 0; }
t[i] = s[i]; for (i=0; i<n; i++)//将 s 数组中的字符串逆序追加至 t 数组中 t[n+i] = s[n-i-1];
t[2*n]= '\0';//增补新字符串的结束标志 printf("The result is: %s\n", t); return 0; }
} printf("\n"); printf("\n===============排序后=====================\n"); for(k=8;k>=0;k--)//冒泡排序

第6章数组和字符串练习题

第6章数组和字符串练习题

第6章数组和字符串练习题一、选择题1.下面正确的初始化语句是___A. char str[]="hello";B. char str[100]="hello";C. char str[]={'h','e','l','l','o'};D. char str[]={'hello'};2.定义了一维int型数组a[10]后,下面错误的引用是___A. a[0]=1;B. a[10]=2;C. a[0]=5*2;D. a[1]=a[2]*a[0];3.下面的二维数组初始化语句中,正确的是____A. float b[2][2]={0.1,0.2,0.3,0.4};B. int a[][]={{1,2},{3,4}};C. int a[2][]= {{1,2},{3,4}};D. float a[2][2]={0};4.引用数组元素时,数组下标可以是____A. 整型常量B. 整型变量C. 整型表达式D. 以上均可5.定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数组元素个数为____A. 24B. 25C. 18D. 176.下列初始化字符数组的语句中,正确的是____A. char str[5]="hello";B. char str[]={'h','e','l','l','o','\0'};C. char str[5]={"hi"};D. char str[100]="";7.给出下列代码,则数组初始化中哪项是不正确的?byte[] array1,array2[];byte array3[][];byte [][] array4;A.array2 = array1 B.array2=array3C.array2=array4 D.array3=array48.下面程序的运行结果是____main(){int x=30;int[] numbers=new int[x];x=60;System.out.println(numbers.length);}A. 60B. 20C. 30D. 509.下面不是创建数组的正确语句A.float f[][]=new float[6][6];B.float f[]=new float[6];C.float f[][]=new float[][6];D.float[][]f=new float[6][];10.下列关于Java语言的数组描述中,错误的是()。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
int i,j,a[20][20],n,k=0;
cin>>n;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
if (i>=j)
a[i][j]= ++ k;
else
a[i][j]=0;
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
cout<<a[i][j]<<" ";
字符串及数组应用程序设计习题
1、【字符替换问题】
题目描述:在使用Word 进行文档编辑的过程中,我们都有过使用替换操作的经历,现在就请你运用字符串操作函数来实现一个简化的替换操作!
题目要求:用户输入三行字符串:第一行为原始文本串(长度为100以内);第二行为被替换子串;第三行为新的替换子串,注意替换操作可能不止进行一次。
3、【归并操作问题】
题目描述:在计算机内部排序方案中,有一种重要的排序思想叫归并排序。归并排序的主要操作是递归分解、回归合并。回归合并操作就是将两个原本有序的序列,合并为一个有序序列。例如:A序列为{12、14、32};B序列为{13、15、40、99};则新序列C为{12、13、14、15、32、40、99}。
一维、二维数组及应用程序设计习题参考答案
1、字符统计问题
#include <iostream.h>
void main()
{
int i,a[26];
char c;
cin>>c;
for (i=0;i<26;i++) a[i]=0;
while ((c>='A'&&c<='Z')||(c>='a'&&c<='z'))
题目要求:编程实现用户输入的两个有序子序列的合并操作,合并长度不长过100个元素。
输入数据:如上A、B子序列;输出结果:如上C序列。
4、【矩阵初始化问题】
题目描述:在计算机算法习题设计中,我们常常需要运用矩阵来记录当前问题的子问题的最优解,进而导出当前问题的最优解,并最终得到全局最优解,因此矩阵的下标运算是学习这类问题的重要基础之一。如下图所示方阵中的A矩阵称为螺旋矩阵、B矩阵称为蛇形矩阵。
题目要求:用户输入方阵的维大小,编程完成该方阵的这类初始化(分别实现)。
A4×4=B4×4=
输入数据:4 输出结果:螺旋矩阵如上图中的A矩阵、蛇形矩阵如上图中的B矩阵。
5、【高精度运算问题】
题目描述:计算机软件功能其实就是扩展硬件功能。比如:计算机中硬件所能表示的最大整数long int型数为-231到231,要想表示更大的整型数据或其运算就只能依赖整型数组来完成!
题目要求:键盘输入一段被压缩的字符信息,其中仅含大小写字母、数字、‘-’字符,并假定其中连续的字符(超过2个字符)已压缩为“起始字符-终止字符”的形式,请编程实现解压缩操作(解压后长度不超过200字符)!
输入数据:a-eio1-49X-Z 输出数据:abcdeio12349XYZ
思考:试试编写压缩操作(仅供同学们讨论实现,较难)。
for (i=0;i<2;i++)
for (j=0;j<3;j++)
b[j][i]=a[i][j];
for (i=0;i<3;i++)
{
for (j=0;j<2;j++)
cout<<b[i][j]<<" ";
cout<<endl;
}
}
4、矩阵初始化问题
#include <iostream.h>
void main()
{
if (c>='a'&&c<='z')
a[c-'a']++;
else
a[c-'A']++;
cin>>c;
}
for (i=0;i<26;i++)
{
cout<<char(i+'A')<<"("<<a[i]<<")"<<" ";
if ((i+1)%10==0)
cout<<endl;
}
}
2、约瑟夫问题
#include <iostream.h>
题目要求:用户输入两个充分大的整数(C++基本类型是装不下了哟!),请输出它们的和。
输入数据(两行):15464315464465465
482321654151
输出数据: 和为 15464797786119616
思考:求积(仅供同学们讨论实现,较难),上述数据积为 7458774215133872939813395215。
cin>>n;
for (i=0;i<n;i++) //填数
{
a[i][0]=1;a[i][i]=1;
for (j=1;j<i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
for (i=0;i<n;i++) //输出
{
for (k=n-i;k>0;k--)
cout<<" ";
for (k=n-i;k>0;k--) //输出前导空格
cout<<" ";
for (j=0;j<=i;j++) //输出每行系数表
cout<<a[j]<<" ";
cout<<endl;
}
}
5-2、杨辉三角问题(二维数组)
#include <iostream.h>
void main()
{
int i,j,n,k,a[20][20];
j=0;//点数从新开始
k++; //出局的猴数增1
t=i; //记录出局的编号,每次覆盖
}
i++; //考查下一点
if(i==m) i=0;
}
cout<<t+1<<endl;
}
3、行列互换问题
#include <iostream.h>
void main()
{
int i,j,a[2][3]={{1,2,3},{4,5,6}},b[3][2];
输入数据:What’s the meat
输出数据:What’s the meaning of that?
2、【简单字符串解压(压缩)问题】
题目描述:在计算机世界里,数据量总是庞大无比,因此压缩的概念无处不大:比如,音、视频信息压缩就产生了MP3、MP4等;网络数据包压缩更是减少了网络传输量,加快了数据传输出速度等,今天,我们也来试试一点简单的字符串解压(压缩)操作!
cout<<endl;
}
}
5、杨辉三角问题(一维数组)
#include <iostream.h>
void main()
{
int i,j,n,k,a[20];
cin>>n;
for (i=0;i<n;i++) //控制行数
{
a[i]=1;
for (j=i-1;j>0;j--)
a[j]=a[j]+a[j-1];
for (j=0;j<=i;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
}
void main()
{
int i,j,k,m,n,a[1000],t=0;
cin>>m>>n;
for (i=0;i<m;i++)
a[i]=1;
i=0;k=0;j=0;
while(k<m)//k记录已出局的猴数
{
if(a[i]) j++; //点数
if(j==n) //符合出局条件
{
a[i]=0; //出局
相关文档
最新文档