C语言字符数组一题

作者&投稿:俟阳 (若有异议请与网页底部的电邮联系)
C语言一道字符数组题。~

char a[ ]=”ABCDEF”;这种方式是利用一个字符串去初始化一个字符数组, 字符串的默认结束符是'\0', 这是系统为每个字符串自动加上的,所以虽然字符串“ABCDEF"的长度是6(strlen(“ABCDEF”) = 6),但是他实际占的内存空间大小确是7,因为最后还有个‘\0‘结束符,所以这种赋值方式下 char a[ ]=”ABCDEF” , 数组a的实际长度是7(6 + 1)。。。
char b[ ]={‘A’,’B’,’C’,’D’,’E’,’F’};这种方式就是一个一个的给b数组中的元素赋值了,所以长度是6
答案就是D了
char a[ ]=”ABCDEF”其实这种方式等同于下面这种方式:
char a[ ]={‘A’,’B’,’C’,’D’,’E’,’F’,’\0’};多出来最后一个'\0'

char s[10];
s="12345678";
这样是不行的,因为数组只有在定义的时候,才可以全部初始化定义,否则就必须一个一个定义,像这样
char s[10]={"12345678"};
或者
char s[10];
s[0]='1';
s[1]='2';
s[2]='3';
s[3]='4';
s[4]='5';
s[5]='6';
s[6]='7';
s[7]='8';
s[8]='\0';
...................................

程序运行结果是 D。
语句:char ch[7]={"65ab21"}是定义一个字符数组同时给它赋值。这种用法在C语言中是允许的。C语言给字符数组赋值的方法常用的有三种,见下面讲解。这个赋值语句赋值结果如下:
ch[0] = '6'; //ASCII码值为54
ch[1] = '5';
ch[2] = 'a';
.....
ch[5] = '1';
ch[6] = '\0';
程序运行结果是这样的到的:
i=0时,ch[0]='6',s=10*0+(54-48) =6;
i=2时,ch[2]='a',ch[i]>='0'&&ch[i]<='9'为假,不执行 s=10*s+ch[i]-'0';
i=4时,ch[4]='2',s=10*6+(50-48) =62;
i=6时,ch[6]='\0',注意这个是C中字符串结束符,与ch[6]='0'不同,所以也不执行s=10*s+ch[i]-'0',故最后s=62。
附:C语言给字符数组赋值的方法
一般常用的有三种:
1、定义的时候直接用字符串赋值
char a[10]="hello";
注意:不能先定义再给它赋值,如char a[10]; a[10]="hello";这样是错误的!
2、对数组中字符逐个赋值
char a[10]={'h','e','l','l','o'};
3、利用strcpy
char a[10]; strcpy(a, "hello");

易错情况:
1、char a[10]; a[10]="hello";//一个字符怎么能容纳一个字符串?况且a[10]也是不存在的!
2、char a[10]; a="hello";//这种情况容易出现,a虽然是指针,但是它已经指向在堆栈中分配的10个字符空间,现在这个情况a又指向数据区中的hello常量,这里的指针a出现混乱,不允许!

答案c.6

因为是字符数组,那么"65ab21"这里的每个符号都是一个字符,因此这里是6个字符,在字符数组赋值时,编译器会自动在字符数组后面加个结束符\0,因此在ch数组里的字符就是
'6''5''a''b''2''1''\0'
for循环里是判断ch数组里下标是偶数时存放的字符是否是数字字符也即是否是0到9这10个数,如果是,就将数字参与计算,不是循环结束,输出计算后的结果。

因此这个程序首先是将6进行计算,但到第二个偶数下标2的位置时,里面存的不是数字字符,那么循环结束,s结果是6.

答案:C.6
for循环中,i=0是ch[i]='6',字符'0','9'的ASCII值为48,57,'6'的ASCII值为54,显然'0'<='6'<='9',s=10*s+ch[i]-'0'=10*0+'6'-'0'=54-48=6,i自加2,ch[i]='a',字符'a'的ASCII值为97,显然不满足'0'<=ch[i]<='9',循环结束,最后s=6,输出s=6.

这个是对ch数组直接赋值,存的是一个字符串,“65ab21”
ch[0] = '6';
ch[1] = '5';
ch[2] = 'a';
.....
ch[5] = '1';
ch[6] = '\0';

相当于char ch[7]={'6', '5', .., '1', '\0';}


c语言问题 高手帮忙 字符数组 问题空字符'\\0' 是空格吗
空格字符 ' ' 用 %d 形式输出,是一个数值32。'\\0' 是字符串结束标记,strlen(c) 长度计算,只计算到 '\\0' 以前那个字符。'\\0' 是字符串结束标记,%s输出 只输出到 '\\0' 以前那个字符。=== '\\0', ' ' 的不同,我们用下面输出方法可以看出。include<stdio.h> int main(){ char c[...

用C语言编写:输入20个字符,存放在一个字符数组中,然后分别统计其中数 ...
include<stdio.h>int main(){char str[100];int i=0;int num=0,ch=0,blank=0,other=0;gets(str);while(str[i]!='\\0'){if((str[i]>='A' && str[i]<='Z') || (str[i]>='a' && str[i]<='z'))ch++;\/\/字母else if(str[i]>='0' && str[i]<='9')num++;\/\/...

用C语言实现输出一个字符串
一、题目大意为输出一个已知的字符串。解题思路:定义一个字符数组,并用“初始化列表”对其赋以初值 用循环逐个输出此字符数组中的字符 include <stdio.h> int main(){ char c[15]={'r',' ','i','g',' ','g',' ','h','t','u',};int i;for(i=0;i<15;i++)printf("A=%...

C语言字符数组问题
void mystrcpy(char str1[81],char str2[81],int m,int n){ int i=0; for(;i<n;i++) { str2[i]=str1[m-1+i]; } str2[i]='\\0' ; \/\/这里加上字符串结束符 printf("%s",str2); \/\/没有结束符时,程序有可能会输出乱码,因为%s是以\\0结束输出的。...

c语言问题,在一个字符数组中查找一个指定字符,若数组中含有该字符,输出...
include <stdio.h>int findch(char *s, char c){ int i; for(i = 0; s[i]; i++) if(s[i] == c) break; if(s[i] == c) return i; return -1;}int main(){ char s[100]; char c; scanf("%s",s); getchar(); c=getchar(); ...

c语言数组问题
=NULL) printf("digital数组中的数字字符为:%s\\n",digital); return 0;}char *getNum(char *str){ int len=strlen(str),n=0,i; char *digital=NULL,strSave[50]; for(i=0;i<len;i++) if(str[i]>='0' && str[i]<='9') { strSave[n]=str[i]; ...

C语言问题,如何将中文放进字符数组
char *s[4]={"李四","张三","黄生","二小"},*p;[4]把p[i]指向s[i],即:for(i=0;i<4;i++)p[i]=s[i];也可以直接char *p[4]={"李四","张三","黄生","二小"};这里数字4只是表示指针数组中指针的个数,而不是字符长度。

C语言解题(字符串数组)
用字符串分割函数 按英文字母或数字分割 分出的个数就是结果 这里需要用到正则表达式的知识可以百度 就不给你写本体代码了 自己阅读下正则表达式相关的 在看看下面的strtok函数用法 基本上这题你就能自己解决了 strtok 语法:include <string.h> char *strtok( char *str1, const char *str2 ...

c语言 字符数组的问题
超过5个不超过8个不会崩溃的原因是:在编译器中内存保持以四字节对齐的方式,当发生踩内存事故时,未超过4个字节的编译器不会报错,但是实际上已经时踩内存了,这对我们程序员来说时大忌,不要以为不报错就可以用,这是万万不可的。再举个例子,你申请一个变量a[9];如果你输入12个字节长度的字符...

C语言选择题 这种题应该用什么思路解题 还望大家指教?
正确答案:D。这个题综合考察了字符数组、字符串的概念以及strcat、strcpy、strlen三个函数的应用。没有特别的解题技巧,除了掌握上述知识外,要训练阅读代码的能力。从第一行开始,一行行读,根据数据流向,记录数据状态。p[]:EFGH‘\\0’……'\\0'q[]:EFGH‘\\0’r[]:EFGHI‘\\0’strcat(p,r...

相山区17538709735: C语言字符数组一题 -
德柏甘糖: 答案:C.6 for循环中,i=0是ch[i]='6',字符'0','9'的ASCII值为48,57,'6'的ASCII值为54,显然'0'

相山区17538709735: c语言字符数组编程题求解 -
德柏甘糖: 编写这个函数时2113,需要扫描整个字符串,当没有遇到回车符5261的时候进行循环,然后内部再包4102含两个需循环,当没有遇到字母的时候循环,然后再当没有遇到空格的1653时候循环,这样就是得到了版一个单词,等到整个循环结束的时权候,就得到了单词的总数

相山区17538709735: C语言一道字符数组题. -
德柏甘糖: char a[ ]=”ABCDEF”;这种方式是利用一个字符串去初始化一个字符数组, 字符串的默认结束符是'\0', 这是系统为每个字符串自动加上的,所以虽然字符串“ABCDEF"的长度是6(strlen(“ABCDEF”) = 6),但是他实际占的内存空间大小确...

相山区17538709735: C语言关于字符数组的一道题目
德柏甘糖: #include<stdio.h> main() { char a[80]; int i=0,n; printf("enter 字符串= ==?\n"); while ((a[i]=getchar())!='\n') { if('$'==a[i]) a[i]='S'; printf("%c",a[i]); i++; } }

相山区17538709735: C语言字符数组的一道题求解!!!
德柏甘糖: 因为q是字符串,字符串常量比字符常量结尾多了“\0”(表面隐藏了),由编意器自动加入.p【3】处开始覆盖,\0也会跟着q赋给了数组p.而测字符长度的strlen()只计算到\0处,且只返回\0前面的字符个数.\0后面所有字符全忽略.这样说你明白了吗?

相山区17538709735: c语言的字符数组例题,求解答,谢谢 -
德柏甘糖: 您好,代码如下,请采纳~#include #define N 105 main() { int a,b,c,d,i; char s[4][N],t[N]; a=b=c=d=0; scanf("%s",t); for(i=0;t[i];i++) if(t[i]>='A'&&t[i] s[0][a++]=t[i]; else if(t[i]>='a'&&t[i] s[1][b++]=t[i]; else if(t[i]>='0'&&t[i] s[2][c++]=t[i]; elses[3][d++]=t[i]; ...

相山区17538709735: C语言 关于字符串数组 简单题 -
德柏甘糖: #include "string.h"//第一个for中, scanf后 if(strcmp("$$$$$",s[i])==0) { break; }//第二个for中 for(i=0;i{ if(strcmp("$$$$$",s[i])!=0) { printf(......); } }

相山区17538709735: c语言问题任务1:定义一个字符数组name, 并赋初值为你名字的汉语拼音.再定义一个字符指针,指向数组name.然后,通过循环语句用指针遍历name... -
德柏甘糖:[答案] 可花了好久才弄出来的,满意吧.任务1#includefun(int x,int y){ static int m=0,i=2; i+=m+1; m=i+x+y; return m;}int main(void){ int j=1,m=1,k; system("color f9"); k=fun(j,m); printf("%d",k); k=fun(j,m)...

相山区17538709735: C语言字符数组问题 -
德柏甘糖: #include<stdio.h> main() { char s1[6],s2[6],s3[6],s4[6]; scanf("%s%s",s1,s2); gets(s3);//这一句的s3不是没有值,而是一个回车,输入aaa bbb(回车)时,实际上s3读到的是回车,(*^__^*) 嘻嘻…… gets(s4);printf("s1=%s\n",s1);printf(...

相山区17538709735: C语言字符数组 -
德柏甘糖: C语言中没有字符串的数据类型,而字符串的处理又非常频繁,为便于字符串的操作,C语言引入字符数组,用于存储字符串内容. 举例: main() {char ch[20];int i;printf("Input:");for(i=0;i<20;i++)scanf("%c",&ch[i]); \\用循环一个个字符...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网