字符数组习题(1)
- 格式:doc
- 大小:72.50 KB
- 文档页数:8
1. 下面程序段的运行结果是 FK 。
(5分) main(){char w[][10]={“ABCD”,”EFGH”,”IJKL”,”MNOP”}; for(int k=1;k<3;k++)printf(“%c\n”,w[k][k]);}2. 下面程序段的运行结果是 6 。
(8分) main(){char ch[7]={“65ab21”};int i,s=0;for(i=0;ch[i]>=’0’&&ch[i]<=’9’;i+=2)s=10*s+ch[i]-‘0’;printf(“%d\n”,s);}3. 下面程序段的运行结果是 Hello 。
(5分) main(){char b[]=”Hello,you”;b[5]=0;printf(“%s\n”,b);}4.若有一维数组初始化语句float b[20]={1.8,3.2,4.3,5.7,8.2,9.5};且数组的起始地址为8050H,则8058H是数组元素 4.3 的起始地址。
(5分)5.设已包含头文件<string.h>,下面程序段的运行结果是 h 。
(6分) char s1[10]="ChangChun" ;char s2[6]="JiNan";strcpy(s1,s2);printf("%c",s1[6]);6.若字符数组a[20]中存放着一个字符串,且a[10]=‘\0’(第一次出现的),则该字符串的长度是 11 。
(5分)7.下面的程序段运行后, 输出结果是 16 。
(8分)int i, j, x=0;static int a[9][9];for (i=0; i<4; i++)for (j=0;j<4;j++) a[i][j]=2*(j+1)-1;for (i=0; i<9; i++)for (j=0; j<9; j++)if (i==j) x+=a[i][j];printf("%d", x);8.下面程序段运行后,输出结果是 11 。
第七章数组习题第七章练习(一)一、选择题1、下列程序的输出结果是()main(){int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;while(i++<7)if(p[i]%2) j+=p[i];printf(“%d\n”,j);}A)42 B)45 C)56 D) 602、下列程序的输出结果是()main(){char a[7]=”a0\0a0\0”;int i,j;i=sizeof(a);j=strlen(a);printf(“%d %d\n”,i,j);}A)2 2 B) 7 6 C) 7 2 D)6 23、下列能正确定义一维数组的选项是()A) int a[5]={0,1,2,3,4,5};B) char a[]={0,1,2,3,4,5};C)char a={…A?,?B?,?C?};D) int a[5]=”0123”;4、已有定义:char a[]=”xyz”,b[]={…x?,?y?,?z?};,下列叙述中正确的是()A)数组a和b的长度相同B)a数组长度小于b数组长度C) a数组长度大于b数组长度。
D)上述说法都不对。
5、有下列程序:main(){char s[]=”abcde”;s+=2;printf(“%d\n”,s[0]);}执行后的结果是()A)输出字符a的ASCII码B)输出字符c的ASCII码C)输出字符c D)程序出错6、有下列程序:main(){int x[3][2]={0},i;for(i=0;i<3;i++) scanf(“%d”,x[i]);printf(“%3d%3d%3d\n”,x[0][0],x[0][1],x[1][0]); }若运行时输入:2 4 6,则输出结果为()A)2 0 0 B)2 0 4C)2 4 0 D)2 4 67、下列能正确定义字符串的语句()A)char str[]={…\64?}; B)char str=”kx43”;C)char str=??; D)char str[]=”\0”;8、有下列程序:main(){inta[4][4]={{1,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}}; int i,j,k,t; for(i=0;i<4;i++)for(j=0;j<3;j++)for(k=j+1;k<4;k++)if(a[j][i]>[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}/*按列排序*/for(i=0;i<4;i++) printf(“%d,”,a[i][j]);}A)1,6,5,7, B)8,7,3,1, C)4,7,5,2, D)1,6,2,1,9、有下列程序:main(){inta[4][4]={{1,4,3,2},{8,6,5,7},{3.7.2.5},{4,8,6,1}}; Int i,k,t;for(i=0;i<3;i++)for(k=i+1;k<4;k++)if(a[i][i]<a[k][k])< bdsfid="132" p=""></a[k][k])<>{t=[i][i];a[i][i]=a[k][k];a[k][k]=t;}for(i=0;i<4;i++) printf(“%d,”,a[0][i]);}程序运行结果是()A)6,2,1,1, B)6,4,3,2,C)1,1,2,6, D)2,3,4,6,10、#includemain(){char p[20]={…a?,?b?,?c?,?d?},q[]=”abc”,r[]=”abcde”; strcpy(p+strlen(q),r); strcat(p,q);printf(“%d %d\n”,sizeof(p),strlen(p));}A)20 9 B)9 9 C)20 11D)11 1111、有下列程序:#includemain(){ char p[20]={…a?,?b?,?c?,?d?},q[]=”abc”,r[]=”abcde”; strcat(p,r); strcpy(p+strlen(q),q);printf(“%d\n”,strlen(p));}程序运行后的输出结果是()A)9 B)6C)11 D)712、若要求定义10个int型元素的一维数组a,则下列定义语句中错误的是()A)#define N 10 B)#define n 5int a[N]; int a[2*n];C)int a[5+5]; D)int n=10,a[n];13、有下列程序:main(){intnum[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14 ,15,16}},i,j;for(i=0;i<4;i++){for(j=0;j<i;j++)< bdsfid="164" p=""></i;j++)<>Printf(“%4c”,??);for(j= ;j<4;j++)printf(“%4d”,num[i][j]);printf(“\n”);}}若要按下列形式输出数组右上半三角。
1、下列数组定义语句中,正确的是A、char x[1]='a';B、char x[1]={0};C、char c[1]=”x”;D、char c[];2、定义一个名为"s"的字符型数组,并且赋初值为字符串"123"的错误语句是A、char s[]={‘1','2','3','\0 '};B、char s[]={"123"};C、char s[]={"123\n"};D、char s[4]={'1','2','3'};3、设有下列数据定义语句,则数组元素x[i]的值是__________________。
int i=3,x[4]={ 1,2,3};4、设有下列数据定义语句,则cout<<s[0][0]的输出结果是__________;cout<<s[1]输出结果是_____________。
char s[4][5]={{'2','\0'},{"23"},"345","4\0"};5、设有下列数据定义语句:char a[4][10]={"11","22","33","44"};则cout<<strcat(a[1],a[3])的输出结果是________________;cout<<strcpy(a[0],a[2])的输出结果是________________。
6、设有下列数据定义语句:char str[2][10]={"abc","ABC"};cout<<strcmp(str[1],str[0])的输出结果是__________;7、下列程序的功能是读取10个实数,然后依次输出前1个实数和、前2个实数和……前9个实数和、前10个实数和。
(1)从键盘上接收一个字符串,保存到一个字符数组中。
(2)然后从后面往前倒序输出这个字符串。
例如:接收字符串为:“Jone”,则输出结果为“enoJ”。
#include <stdio.h>#include <string.h>#include <stdlib.h>int main() {char a[10];int i;int len = strlen(a);memset(a, '\0', 10);printf("输入的字符串为:\n");//强制刷新fflush(stdout);//从键盘上接收一个字符串gets(a);for (i = len-1; i >= 0; i--) {printf("%c",a[i]);return EXIT_SUCCESS;}2分别使用char数组和string类对象实现下面任务:编写一个程序,首先要求用户输入姓,然后输入名,然后使用一个逗号和空格将姓和名组合在一起,并存储和显示组合好的结果和结果的长度。
下面是程序运行时的情形:Enter your first name: LiEnter your last name: MingThe name is: Li, MingThe length of name: 8#include <stdio.h>#include <string.h>#include <stdlib.h>int main() {//定义数组char first[10];char last[10];//提前输出提示printf("Enter your first name:");//强制刷新fflush(stdout);gets(first);printf("\n");printf("Enter your last name:");//强制刷新fflush(stdout);gets(last);printf("\n");//连接逗号strcat(first, ", ");printf("The name is :%s\n", strcat(first, last));printf("The length of name :%d\n", strlen(first)); //求长度return EXIT_SUCCESS;}3从键盘上接收一个字符串,并统计其中字符的个数。
第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++数组》习题学号姓名一、选择题1、下列对字符数组进行初始化的语句正确的是 AA.char a[]= "Hello";B.char a[][]= {'H','e','l','l','o'};C.char a[5]="Hello";D.char a[2][5]= {"Hello","World"};2、以下一维数组a的正确定义是 DA.int a(10) ; B.int n=10,a[n];C.int n; D.#define size 10cin>>n; int a[size];int a[n];3、以下对二维数组a进行不正确初始化的是 CA.int a[2][3]={0};B.int a[][3]={{1,2},{0}};C.int a[2][3]={{1,2},{3,4},{5,6}};D.int a[][3]={1,2,3,4,5,6);4、执行以下程序后,s的值为 Aint a[]={5,3,7,2,1,5,4,lO);int s=0,k;for(k=0;k<8;k+=2)s+=*(a+k);A.17 B.27 C.13 D.无定值5、为了判断两个字符串sl和s2是否相等,应当使用 DA.if (s1==s2)B.if (s1=s2)C.if(strcpy(S1,s2))D.if(strcmp(s1,s2)==O)6、有定义int a[2][5];,若a[0][1]的地址为x,则a[0][O]、a[1][3]地址分别为(假设一个整型数据占用两个字节的内存空间): A A.x-2,x+14 B.x-1,x+7C.x+1,x+7 D.x-1,x+147、若有定义float a[m][n];,且a[1][1]的地址为x,每个float元素占用4个字节,则a[il[j]的地址为 AA.x+4*(i-1)*n+4*(j-1) B.x+(i-1)*n+(j-1)C.x+4*(i-1)*j+(j-1) D.x+4*i*j+4*j二、填空题1、char st[20] = "SEU\0\t\\";cout<<sizeof(st)<<strlen(st)<<endl;则输出的内容是 203 ,如将st数组定义中的20去掉,则输出的内容是 73 。
第四章数组4.1 选择题1. 以下关于数组的描述正确的是( )。
A. 数组的大小是固定的,但可以有不同的类型的数组元素B. 数组的大小是可变的,但所有数组元素的类型必须相同C. 数组的大小是固定的,所有数组元素的类型必须相同D. 数组的大小是可变的,可以有不同的类型的数组元素2. 以下对一维整型数组a的正确说明是( )。
A.int a(10);B. int n=10,a[n];C.int n;D. #define SIZE 10 scanf("%d",&n); int a[SIZE];int a[n];3. 在C语言中,引用数组元素时,其数组下标的数据类型允许是( )。
A. 整型常量B. 整型表达式C. 整型常量或整型表达式D. 任何类型的表达式4. 以下对一维数组m进行正确初始化的是( )。
A. int m[10]=(0,0,0,0) ;B. int m[10]={ };C. int m[ ]={0};D. int m[10]={10*2};5. 若有定义:int bb[ 8];。
则以下表达式中不能代表数组元bb[1]的地址的是( )。
A. &bb[0]+1B. &bb[1]C. &bb[0]++D. bb+16. 假定int类型变量占用两个字节,其有定义:intx[10]={0,2,4};,则数组x在内存中所占字节数是( )。
A. 3B. 6C. 10D.207. 若有以下说明:int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};char c='a',d,g;则数值为4的表达式是( )A. a[g-c]B. a[4]C. a['d'-'c']D. a['d'-c]8. 以下程序段给数组所有的元素输入数据,请选择正确答案填入( )。
#include<stdio.h>main(){int a[10],i=0;while(i<10) scanf("%d",________ );┇}A. a+(i++)B. &a[i+1]C. a+iD. &a[++i]9. 执行下面的程序段后,变量k中的值为( )。
第7 章数组习题A 卷1. 单项选择题(1) int a[4]={5,3,8,9}淇中a[3]的值为(D )。
D A. 5 B. 3 C. 8 D. 9(2) 以下4个字符串函数中,(A)所在的头文件与其他3个不同。
AA. getsB. strcpyC. strlenD. strcmp(3) 以下4个数组定义中,(D)是错误的。
DA. int a[7];B. #define N 5 long b[N];C. char c[5];D. int n,d[n];(4) 对字符数组进行初始化,(B )形式是错误。
A. char c1[ ]={'1', '2', '3'};B. char c2[ ]=123;C. char c3[ ]={ '1', '2', '3', '\0'};D. char c4[ ]="123";(5) 在数组中,数组名表示(A )。
A.数组第1个元素的首地址B.数组第2个元素的首地址C.数组所有元素的首地址D.数组最后1个元素的首地址(6) 若有以下数组说明,则数值最小的和最大的元素下标分别是(B )Bint a[12] ={1,2,3,4,5,6,7,8,9,10,11,12};A. 1,12B. 0,11C. 1,11D. 0,12(7) 若有以下说明,则数值为4 的表达式是(D )。
int a[12] ={1,2,3,4,5,6,7,8,9,10,11,12};char c= 'a', d, g ;A. a[g-c]B. a[4]C. a['d'-'c']D. a['d'-c](8) 设有定义:char s[12] = "string" ;则printf( "%d\n",strlen(s)); 的输出是( A)。
字符数组习题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);}如果运行时,从键盘上输入由数字组成的字符串,该程序的功能是______。
A) 测字符数组ch的长度B) 将数字字符串ch转换成十进制数C) 将字符数组中的小写字母转换成大写D) 将字符数组中的大写字母转换成小写8.以下程序的输出结果是______。
main(){ char a[10]={'1','2','3',0,'5','6','7','8','9','\0'};printf("%s\n",a);}A) 123 B) 1230 C) 123056789 D) 12305678909.若有定义语句:char s[100],d[100]; int j=0,i=0; ,且s中已赋字符串,请在划线处填______以实现将字符串s中的内容拷贝到字符串d中。
(注意:不得使用逗号表达式)while(s[i]) { d[j]=__ _______; j++; }d[j]=0;A) s[i] B) s[++i] C) s[i++] D) s[j]10.当执行下面的程序时,如果输入ABC,则输出结果是A)ABC6789 B)ABC67 C)12345ABC6 D)ABC456789#include “stdio.h”#include “string.h”main(){ char ss[10]=“1,2,3,4,5”;gets(ss); strcat(ss, “6789”); printf(“%s\n”,ss);}11.下列程序执行后的输出结果是A)you&ne B)you C)me D)errmai(){ char arr[2][4];strcpy(arr,"you"); strcpy(arr[1],"me");arr[0][3]='&';printf("%s \n",arr);}12.执行下列程序时输入:123<空格>456<空格>789<回车>,输出结果是A)123,456,789 B)1,456,789 C)1,23,456,789 D)1,23,456 main(){ char s[100]; int c, i;scanf("%c",&c); scanf("%d",&i); scanf("%s",s);printf("%c,%d,%s \n",c,i,s);}13.下列描述中不正确的是A)字符型数组中可以存放字符串B)可以对字符型数组进行整体输入、输出C)可以对整型数组进行整体输入、输出D)不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值14. 不能把字符串:Hello!赋给数组b的语句是A)char b[10]={'H','e','l','l','o','!'}; B)char b[10];b="Hello!";C)char b[10];strcpy(b,"Hello!"); D)char b[10]="Hello!";15.函数调用:strcat(strcpy(str1,str2),str3)的功能是A)将串str1复制到串str2中后再连接到串str3之后B)将串str1连接到串str2之后再复制到串str3之后C)将串str2复制到串str1中后再将串str3连接到串str1之后D)将串str2连接到串str1之后再将串str1复制到串str3中二、程序分析题1、分析程序运行的结果main(){ char ch[80]="123abcdEFG*&";int j;long s=0;puts(ch);for(j=0;ch[j]>'\0';j++)if(ch[j]>='a'&&ch[j]<='z') ch[j]=ch[j]-'b'+'B';puts(ch); }2、main(){ char s[ ]="father";int i,j=0;for(i=1;i<6;i++)if(s[j]>s[i]) j=i;printf("%c,%d\n",s[j],j+1); }3、main(){ char a[]="clanguage",t;int i,j,k; k=strlen(a);for(i=0;i<=k-1;j+=1)for(j=i+1;j<k;i+=1)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}puts(a);printf("\n");}4、main( ){ char ch[2][5]={"6937","8254"};int i,j;long s=0;for(i=0;i<2;i++)for(j=0;ch[i][j]>'\0';j++)s=10*s+ch[i][j]-'0';printf("%ld\n",s);}5、#include <stdio.h>main( ){ char str[ ]="1a2b3c"; int i;for(i=0;str[i]!='\0';i++)if(str[i]<'0' || str[i]>'9') printf("%c",str[i]);printf("\n"); }6、main(){ char ch[7]={65a2b321"};int i,s=0for(i=0;ch[i]>='0' && ch[i]<='9';i+=2)s=10*s+ch[i]-'0';printf("%d\n",s);}7、以下程序输出的结果是#include#includemain(){ char w[][10]={"ABCD","EFGH","IJKL","MNOP"};int k;for (k=1;k<3;k++)printf("%s\n",&w[k][k]);}8、main(){ char a[]="12134211";int v[5]={0},k;for(k=0;s[k];k++)switch(s[k]){ default:v [s[k]] ++;case '1': v [s[k]]++;case '3': v [s[k]]++;case '2': v [s[k]]++; }printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v[1],v[2],v[3],v[4]);}9、下列程序中字符串中各单词之间有一个空格,则程序的输出结果是【31】。
#include “string.h”main(){ char strl[]="How do you do",*p1=strl;strcpy(strl+strlen(strl)/2,"es she");printf("%s \n",pl);}三、程序填空题1、以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串yes!,否则函数返回字符串:no!,并在主函数中输出.所谓回文即正向与反向的拼写都一样,例如:adgda.请填空.#include "string.h"char *huiwen(char *str){char *p1,*p2; int i,t=0;p1=str; p2=for(i=0;i<=strlen(str)/2;i++)if(*p1++!=*p2--){ t=1; break; }if()return ("yes!");else return ("no!");}main(){char str[50];printf("Input:"); scanf("%s",str);printf("%s\n", );}2、以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。