字符数组习题(1)
数组部分练习题_C语言

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 。
二维数组、字符数组习题

21.下列程序的功能是输出一 下列程序的功能是输出一5X5矩阵,使得上三 矩阵, 下列程序的功能是输出一 矩阵 角元素为1,其余元素为0 角元素为 ,其余元素为 main() i>j { int a[5][5],i,j; a[i][j]=1 for(i=0;i<5;i++) for(j=0;j<5;j++) if( ) a[i][j]=0; else ; for(i=0;i<5;i++) { for(j=0;j<5;j++) printf("%2d",a[i][j]); printf("\n"); } }
3.设有数组定义 char array [ ]="China"; 则数组 设有数组定义: 设有数组定义 array所占的空间为 。 C 所占的空间为 A)4个字节 B)5个字节 C)6个字节 ) 个字节 ) 个字节 ) 个字节 D)7个字节 ) 个字节 4.给出以下定义: .给出以下定义: C char x[]=“abcdefg”; ; char y[]={'a','b','c','d','e','f','g'}; , , , , , , ; 则正确的叙述为 。 A)数组 和数组 等价 和数组Y等价 )数组X和数组 B)数组 和数组 的长度相同 和数组Y的长度相同 )数组x和数组 C)数组 的长度大于数组 的长度 的长度大于数组Y的长度 )数组X的长度大于数组 D)数组 的长度小于数组 的长度 的长度小于数组Y的长度 )数组X的长度小于数组
15.下面程序的运行结果为 下面程序的运行结果为 #include <stdio.h> (1,1)=-5 main() { int i,j,row=0,col=0,m; static int a[3][3]={1,-2,0,4,-5,6,2,4}; m=a[0][0]; for(i=0;i<3;i++) for(j=0;j<3;j++) if(a[i][j]<m) {m=a[i][j]; row=i; col=j; } printf("(%d,%d)=%d\n",row,col,m); }
第七章数组习题

第七章数组习题第七章练习(一)一、选择题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个实数和。
字符串及数组应用程序设计习题

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;
c语言字符数组oj例题

(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从键盘上接收一个字符串,并统计其中字符的个数。
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++数组》习题学号姓名一、选择题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 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
字符数组习题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中的字符串。