BD为什么不对,c语言

作者&投稿:锻广 (若有异议请与网页底部的电邮联系)
C语言BD为什么不对~

数组元素个数为20,而p的长度为7,所以B不对,同样D也不对,指针只到'\0',数组则不是

/****************我是这样实现的**************/

char ch[][10]={"零","一","二","三","四","五","六","七","八","九"};//二维数组和指针数组一样
const char *str = "请输入0-9之间的整数:";
puts(str);

int x;
scanf("%d",&x);

while ( x9 )
{
puts(str);
scanf("%d",&x);
}

printf( "%s
", ch[x] );

/****************程序结束**************/


output:

请输入0-9之间的整数:
10
请输入0-9之间的整数:
9

请按任意键继续. . .

分析错误原因:
char可以用8位ASCII码表示 可以把char理解为short 只有一个字节
而汉字的编码方式通常为unicode或者UTF-8
不管神马编码 都需要使用2-3个字节
这段程序 其实关键的地方就是输出 十个汉字 要求不能乱码
用一下程序实验 可以发现
一个汉字确实是由两个连续的字节存储

char ch[][7]={"零零","一一","二","三","四","五","六","七","八","九"};
for ( int i=0; i<10; i++ )
{
for ( char *j=ch[i]; *j; j++ )
{

printf( "%d
", j );
}
}

output:
2423316
2423317
2423318
2423319
2423323
2423324
2423325
2423326
2423330
2423331
2423337
2423338
2423344
2423345
2423351
2423352
2423358
2423359
2423365
2423366
2423372
2423373
2423379
2423380
请按任意键继续. . .

B后面的看不清,但是我看到了%s后面肯定就不会对了~它不管怎么输出,都是错误的~%s代表字符串,而不是字符。
D的话
一个一个输出\0是什么都不输出的~所以达不到有一个空格的效果~

B是输出字符串(“%s”),不需要for ,putchar是输出一个字符,是单个字符。

'\0'不是空格,'\32'或者' '才是空格


为什么不正确的C语言标识符是D A、ABC B、abc C、a_bc D、ab.c
标识符的命名规则就是只能由字母、下划线和数字组成,开头不能是数字比如 3c 5_fe ,也不能是关键字 比如 for switch if break 。不能有空格

符合C语言语法的赋值表达式
首先,出现了2个等号,那肯定是错的了,因为C语言中1个等号的含义就是把等号右边的数(或表达式)赋值给等号左边的表达式,A、D都不对;然后,C项,最后一个d+9,想让d加上9,应该写成d+=9或d=d+9 所以,B就对了。

关于C语言的一道题目 内部函数 外部函数
因为 C语言编译时要检查语法,所以A不对;C语言没有过程,只有函数,所以B不对;C语言函数内不能定义函数,既不能嵌套定义,所以C不对。排除法也知道是D了。当然由“函数内不能定义函数”也可以推出所有函数都是外部函数。—— 其实这种说法对外部函数的理解也还值得商榷。但其它的是完全不对,也...

ITAT c语言 第六届 求解答~ 为什么不选D?或者说C D有啥区别呢?
宏在程序预处理的时候进行简单替换。 所有的STR都会被替换成 "12345" 。字符串里面的值可以被修改 char a[]=STR;printf("%s\\n", a); \/\/输出12345 a[0]='w';printf("%s\\n",a); \/\/输出w2345 字符串常量中的值却不能被修改 char *b=“123345”;b[0]='w'; \/\/会报错 而且字符串的...

...25,13,10<CR> 正确的输出结果 为 (D) 。 为什么不是A?
因为第一个值是正确的)也就是说 如果 int ret=scanf("%d%d%d",&x,&y,&z);printf("%d",ret);如果输入的是 25,13,10<CR> 则程序会打印1,x的值是输入的第一个数25,但y z却是申请空间时的随机数,所以最后的printf("x+y+z=%d",x+y+z);输出是不确定的 ...

用c语言求同一纬度的两地距离,为什么结果不对呢
include <stdio.h>#include<math.h>#define R 6378.137#define PI 3.14159void main(){double a,b,c,d,e,f,g,h;printf("请输入两个经度和一个纬度(东经为正,西经为负):");scanf("%lf%lf%lf",&a,&b,&c);d=fabs(a-b);if(d>180)d=360-d;e=d*PI\/180;h=R*cos(c*PI...

c语言大神帮我看看,为什么结果输出不对,输入27638496,要求结果64862
你的主函数main 里的输入输出语句的标示符%1d写错了,应该是%ld(小写的LD)而不是%1d(数字1小写D),把main函数中的scanf("%1d",&n);改成scanf("%ld",&n); 把printf("\\nThe result is:%1d\\n",get_even(n));改成printf("\\nThe result is:%ld\\n",get_even(n));就没有问题了.

有关一个C语输入字符串的程序
“这样输入一个字符串型的二维数组为什么不对?”嗯,那个应该是输出吧。以上的解法,buaa_sheng应该是正确的(输出的话)。改成输入就是scanf("%s",id[i]);danily写的是输入……scanf("%s",&id[i][15]);其中15应该为0吧。如果是输出则是printf("%s",&id[i][0]);...

c语言 指针问题
1:char s[5]={'A','B','C','D','E'};这是个字符数组的初始化,没有问题,但它不是以字符串结束符'\\0'结尾的,所以它不是字符串。如果你是想将字符串"ABCDE"赋值给字符数组s,就应该使用char s[6]="ABCDE",字符数组s的大小要定义为6,因为需要一个字符用来存储'\\0',它是一个...

求教C语言题目,第6题为什么B和D不行,请给我解题思路
选项D 是输入字符串的 第五题 选B 该字符串等价于 \\TOP 5" (有转义字符)可以用程序验证 include <stdio.h>#include <string.h>int main(){ char str[]={"""}; int i=0; for(;i<strlen(str);i++) printf("%c\\n",str[i]); return 0;} ...

冷水滩区18485853741: b,c选项为什么不对? -
梁璧心宝: A对 这个没什么特别的.B 解析里面 说的是正确的. 题目说的是字符串. 而字符串 必须有\0结尾.没有\0结尾的 就不能算字符串.如果是 char s[6] = ... 那就ok了. 但这里是s[5] 没有...

冷水滩区18485853741: c=int(a+b)为什么格式不对? -
梁璧心宝: c = int(a + b);c定义了吗?如果定义了,就没有错 而且c是一个int , 也可以写成 c = (int )(a + b)c++中代表 把a + b的值强转为int类型 赋值给c;

冷水滩区18485853741: c语言中a+=b++=1;和a=int(b);这个语句为什么不对 -
梁璧心宝: a+=b++=1 这个是两个赋值 一个是b++=1 一个是a+=b++; 其中b++=1不对, 赋值运算左值 只能是变量 不能是表达式.a=int(b) 这个是要强制转换,不过 强制转换要求类型必须加括号 所以 可以是 a=(int)b; 也可以是a=(int)(b); int外面没括号是不可以的.

冷水滩区18485853741: 以下比较三个数大小的C语言程序为什么不对 -
梁璧心宝: 你好.是这样你的if条件书写格式有问题. if (a > b > c) 中a>b>c 先判断a>b得到true或者false,(1,0)再判断1>b或者0>b,你输入b大于1.所以后面的语句都不执行. 改成if(a>b && b > c)

冷水滩区18485853741: C语言关于switch函数的个题目..答得好有加分啊.. -
梁璧心宝: 就是BD,至少语法上BD没有问题 A必然是错的,switch语句(switch是结构化的语句,更规范的说是控制流语句,不是函数!)对象只能是整型值,不能使浮点型值,函数pow返回的值是double型的,显然不正确,不能通过编译的yideanbiyide

冷水滩区18485853741: c语言,为什么B不对.. 7.若给定条件表达式(M)?(a++): (a -- ),则其中表达式M --
梁璧心宝: 在表达式中,如果M不为0,则返回a++,否则返回a-- 因此,正确应选 C B错误的原因是只考虑了为1的情况,实际上只要不为0的数,均返回逻辑1

冷水滩区18485853741: c语言表达式 -
梁璧心宝: D为什么错: 没有这样赋值的,也说不出含义的 只有 变量1=变量2=变量3=...=表...

冷水滩区18485853741: 关于C语言字符串数组的问题 为什么D不合法呢?答案说等号左边的数组长度小于等号右边的数组长度... -
梁璧心宝: 正确的是AD确实不对 不过不是等号左边的数组长度小于等号右边的数组长度 而是在C语言中 字符串赋值不能用str2=str1的形式 而是要用strcpy(str2,其他的选项需要解释吗, str1)

冷水滩区18485853741: c语言题目 -
梁璧心宝: 个人认为是B.首先A、C可直接排除(均为直接输出回车符'\n').剩下B和D.B本身是标准输入捕捉.它只起到捕捉作用,不会在屏幕输出东西.D是C++里面的输入/输出流的字符串输出,其自带了一个'\n'在末尾(即可以这样:puts("hello world!"); ) 所以选B.

冷水滩区18485853741: c语言 为什么char a[20];a[20]="asdfgh";不对? -
梁璧心宝: 数组只有在初始化的时候才可以直接赋值,其他时候要赋值要逐项赋值,当然字符数组也可以使用strcpy函数,a[20]在程序中代表的是a数组的第21个元素,是不存在的,所以肯定不对.

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