字符串指针赋值给字符串数组_用指针给数组赋值的一个小问题

字符串指针赋值给字符串数组_用指针给数组赋值的一个小问题初学者3.C语言数值数组与字符数组作者留言:本篇文章可以用来给初入C语言的初学者进行参考,也可以用来备考专升本,考研,二级C语言的考试,当作复习资料巩固复习。如有问题之处可与我联系进行修改,编辑不易,请勿放收藏夹吃灰谢谢!思维导图:数值数组与字符数组本课重要知识点:1.知识点:一维数组的定

初学者3.C语言数值数组与字符数组   作者留言:本篇文章可以用来给初入C语言的初学者进行参考,也可以用来备考专升本,考研,二级C语言的考试,当作复习资料巩固复习。如有问题之处可与我联系进行修改,编辑不易,请勿放收藏夹吃灰谢谢!
字符串指针赋值给字符串数组_用指针给数组赋值的一个小问题
字符串指针赋值给字符串数组_用指针给数组赋值的一个小问题思维导图:数值数组与字符数组   本课重要知识点:   1.知识点:一维数组的定义   例1:下列选项中,能正确定义数组的语句是(D)   A)int num[0…2008];   B)int num[];   C)int N=2008;   D)#define N 2008 int num[N]; int num[N];   【解析】数组的长度必须是一个整型常量、整型常量表达式,故A项错误。定义数组时,不能省略数组长度,B项错误。数组的长度不能是变量,C项错误。数组的长度可以是符号常量,D项正确。   例2:若要定义一个具有5个素的整型数组,以下错误的定义语句是(D)   A)int a[5]={0};   B)int b[]={0,0,0,0,0};   C)int c[2+3];   D)int i=5,d[i];   【解析】可以只给数组的前面一部分素设定初值,A项正确。对全部数组素赋初值时,可以不指定数组素的个数,B项正确。数组的长度可以是一个整型常量表达式,C项正确。数组的长度不能是变量,D项错误。   2.知识点:一维数组素的引用   例1:若有定义语句:int m[]={5,4,3,2,1},i=4;则下面对m数组素的引用中错误的是 (C)   A)m[–i] B)m[2*2] C)m[m[0]] D)m[m[i]]   【解析】m数组素的引用的下限为0,上限为4。i=4,–i的值为3,A项正确。B项没有越界,正确。m[0]=5,超过上限,已经越界,故C项错误。m[4]=1,没有越界,故D项正确。   例2:以下程序运行后的输出结果是 13715   main()   { int i,n[5]={0};   for(i=1;i<=4;i++)   { n[i]==n[i-1]*2+1; printf(“%d”,n[i]); }   printf(“\n”);   }   【解析】:n[1]=1,n[2]=1*2+1=3,n[3]=3*2+1=7,n[4]=7*2+1=15   3.知识点:一维数组的初始化   顺序列出数组素的全部初值,例如int a[5]={1,2,3,4,5};只给数组的前面一部分素设定初值,未赋初值的素自动取0值。例如,int a[5]={1,2};对全部数组素赋初值时,可以不指定数组素的个数。例如,int a[]={1,2,3,4,5};   4.知识点:二维数组的初始化   按行分段给二维数组赋初值按行连续赋值对部分素赋初值,未赋初值的素自动取0值若对全部素赋初值,则第一维的长度可以不指定   例1:以下数组定义中错误的是(B)   A) int x[][3]={0};   B) int x[2][3]={{1,2},{3,4},{5,6}};   C) int x[][3]={{1,2,3},{4,5,6}};   D) int x[2][3]={1,2,3,4,5,6};   【解析】若对全部素赋初值,则第一维的长度可以不指定,C项正确。二维数组的初始化可以按行连续赋值,D项正确。C项二维数组的初始化超过第一维度长度,故错误。   5.知识点:二维数组和for语句   例1:有以下程序   #include <stdio.h>   main()   {int i,j,a[][3]={1,2,3,4,5,6,7,8,9};   for(i=0;i<3;i++)   for(j=i;j<3;j++) printf(“%d”,a[i][j]);   printf(“\n”);   }程序运行后的输出结果是 。   6.知识点:字符串   定义:由“”引起来的,由若干个字符所组成的序列。   字符串的结束标志:’\0’   如字符串“china”,在内存中存储形式是china\0   该字符串的长度为5字节,所占的存储空间为6字节。   7.知识点:字符数组的定义及初始化   字符数组名是地址常量,不能赋值给数组名。   例1:以下选项中正确的语句组是(D)   A)char s[];s=”BOOK!”;   B)char *s;s={“BOOK!”};   C)char s[10];s=”BOOK!”;   D)char *s;s=”BOOK!”;   【解析】字符数组名是地址常量,不能赋值给数组名,故A、C项错误,D项指针s是个变量,将字符串常量赋值给s,是正确的。B项中给s赋值时不能用花括号将字符串括起来。   例2:下面是有关C语言字符数组的描述,其中错误的是(D)   A)不可以用赋值语句给字符数组名赋字符串   B)可以用输入语句把字符串整体输入给字符数组   C)字符数组中的内容不一定是字符串   D)字符数组只能存放字符串   8.知识点:字符数组的输入与输出   例1:有以下程序   #include <stdio.h>   main()   {char a[20]=”How are you?”,b[20];   scanf(“%s”,b);printf(“%s %s\n”,a,b);   }程序运行时从键盘输入:How are you?<回车>   则输出结果为How are you? How   【解析】scanf函数输入,以空格作为字符串输入结束的标志,故字符数组b只接收到字符串”How”。   例2:有以下程序   main()   { char a[30],b[30];   scanf(“%s”,a);   gets(b);   printf(“%s\n %s\n”,a,b);   }   程序运行时若输入:how are you? I am fine<回车>则输出结果是(B)   A)how are you?   B)how I am fine are you? I am fine   C)how are you? I am fine   D)row are you?   【解析】:scanf以空格作为字符串输入结束的标志,而gets(s)不会。所以a得到的是“how”,b得到的是剩下的“are you? I am fine”。故选择B。   例3:有以下程序   main()   { char s[]=”012xy\08s34f4w2″;   int i, n=0;   for(i=0;s[i]!=0;i++)   if(s[i]>=’0’&&s[i]<=’9′) n++;   printf(“%d\n”,n);   }   程序运行后的输出结果是 (B)   A)0 B)3 C)7 D)8   【解析】:for循环读取字符数组s中的字符,当读到0时退出循环,注意0和‘0’的区别,字符‘0’的ASCII码为48,‘\0’的ASCII 码才是0,所以读取的字符为“012xy”中的字符,for循环读取到字符后判断是不是数字字符,如果是n自增1,“012xy”中的数字字符只有三个,所以选择B。   9.知识点:字符串处理函数   例1:有以下程序:   #include<stdio.h>   #include<string.h>   main()   { char a[5][10]={“china”,”beijing”,”you”,”tiananmen”,”welcome”};   int i,j; char t[10];   for(i=0;i<4;i++)   for(j=i+1;j<5;j++)   if(strcmp(a[i],a[j])>0)   { strcpy(t,a[i]); strcpy(a[i],a[j]); strcpy(a[i],t);}   puts(a[3]);   }程序运行后的输出结果是 (C)   A.beijing B.china C.welcome D.tiananmen   【解析】双层for循环部分是典型的排序方法,通过strcmp比较两个字符串的大小,然后借助t数组作为中转数组,通过strcpy函数完成a[i]和a[j]两个字符串的交换,使a数组按从小到大排序,即{”beijing” , “china” , ”tiananmen”,”welcome” ,”you” }   例1:有以下程序   #include <stdio.h>   #include <string.h>   main()   {char x[]=”STRING”;   x[0]=0;x[1]=’\0’;x[2]=’0’;   printf(“%d %d\n”,sizeof(x),strlen(x));   }程序运行后的输出结果是(B)   A)6 1 B)7 0 C)6 3 D)7 1   【解析】经过x[0]=0;x[1]=’\0’;x[2]=’0’;后,x[]=”0\00ING”。strlen测字符串的实际长度,不含字符串结束标志’\0’,故strlen(x)为0。sizeof测字符串所占的存储空间,包含字符串结束标志,故sizeof(x)为7。   例2:有以下程序   #include <stdio.h>   #include <string.h>   main()   {char a[20]=”ABCD\0EFG\0”,b[]=”IJK”;   strcat(a,b); printf(“%s\n”,a);   }程序运行后的输出结果是(B)   A)ABCDE\0FG\0IJK   B)ABCDIJK   C)IJK   D)EFGIJK   【解析】把字符数组b中的字符串连接到字符数组a中字符串的后面,并删去字符串a后的第一个字符串结束标志’\0’。故输出结果为ABCDIJK。   例3:下列选项中,能够满足“若字符串s1等于字符串s2,则执行ST”要求的是 (A)   A)if(strcmp(s2,s1)==0)ST; B)if(s1==s2)ST;   C)if(strcpy(s1,s2)==1)ST; D)if(s1-s2==0)ST;   【解析】若字符串s1等于字符串s2,strcmp(s2,s1)==0,故答案是A。 以上资料来源于网上整理,如有侵权请与我联系,文章中出现问题可以在下面评论区指出,后期会做修改。   另外主页还有后续C语言程序设计基础复习题,有需要的同学可以去看看

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/22840.html

(0)
上一篇 2024年 9月 14日
下一篇 2024年 9月 14日

相关推荐

关注微信