c语言编程问题

2025-04-29 02:59:50
推荐回答(1个)
回答1:

编程发现的最长的单词在字符串中的一个已知的,它假定该字符串只包含字母和空格,空格用来分隔不同的话!

方法:

/ / VC + + 6.0编译器

包括
无效的主要() BR /> {
字符STR [] =“世界你好我的名字是曹寻医!”;
的char * p = STR,* P1;
MAX = 0,计数= 0,我
而(* P)
{
计数= 0;
而(* p =='')P + +;
(* P!='' && * p)
{/ /我们必须注意的判断* P! = 0来判断,或到最后一个字,它已被添加到背面直到满足空间,所以将超级部门。
P + +;
计数+ +;
}
(MAX <计数)
{
最大计数;
P1 =对数;
}
}
printf的(“人数最多的是:%d条\ n”);,最大
printf的(“最大的一句话是:”);
(* P1 ='' && * P1)/ /这里要判断* P1! ='\ 0',因为结尾的字符串中最长的单词,如果你不判断* P1! ='\ 0',也界。
{
的putchar(* P1);
P1 + +;
}
的putchar('\ n');
}
BR /> / *
在字符串中寻找最长的单词。注:A B.如果在一个循环中循环,以确保不仅在环路B,数组但是行业。
而且里面的数组A,但也是扇区,以确保循环。像上面的例子。现在提供一个更容易理解的例子。
而(* P)
{
而(* P!='' && * p)
{
P + +;
}
}
外循环和内循环的循环条件没有必然的,但对于一个指针数组(如果变量标
访问数组下标减法还要注意),加法和减法应该引起人们的注意,必须确保不流溢。
* /

方法:

/ / VC + + 6.0编译通过。

#包括
包括中
无效的主要()
{
字符STR [] =“我我的学生“;
的char * p = str中,数组[10] [20] = {0};
INT I = 0,J = 0,最大值= 0;
而( * P)
{
而(* p =='')* p + +;
(* P && * p!='')
{
>阵列[I] [J + +] = * p;
P + +;
}
i + +; J = 0;
}
= 0;
最大= strlen的(阵列[I]);
P =阵列[I];
(strlen的(阵列[I]))
{
(最大的strlen(阵列[I]))
{
最大值= strlen的(ARRAY [I]);
P =阵列[I];
}
}
printf的(“%e\ n%s的\ n”,最大,P);
}

/ *
>寻求中最长的单词的字符串(不区分词与词之间包含非字母数字字符),法官的二维数组的形式。
定义了一个两维数组,每个元素都用于存储一个字符串(每个分离的字)。
然后判断的时间最长。

比较第一种方法,这种方法更清楚地了解?一些。但缺点是,你要分配一个二维数组来存储分离
字,占用存储空间。
* /

实现任何十进制将R十六进制数2-16(R)

转换为二进制:
/ / VC + + 6.0编译通过

#包括
包括
无效的主要()
{ />诠释A,B [30],我
scanf的(“%d”,&A);
(i = 0;了!= 0;我+ +)
{
B?[我] = 2%;
= A / 2;
}
( - I I> = 0;我 - )
{
printf的(“%d”,B [I]);
}
的putchar('\ n');
}

/ /二进制的转换,也可以使用位移运算符。一定的数量,如1相的二进制
系统的最低位按位“与”,得到的位移,然后得到的二进制最低位,等等。

转换为八进制:

/ VC + + 6.0编译器。

#包括
#,包括
无效的主要()
{
整数A,B [20]我
scanf的(“%d”,&A);
为(i = 0;了!= 0; i + +)
{
B [我] = 8%;
= A / 8;
}
( - I I> = 0; I - )
{
printf的(“% D“,B [I]);
}
的putchar('\ n');
}

/ *
8转换到那里没有十六进制这么大的麻烦,它并不需要定义一个用于存储
所有的基数十六进制的字符数组,但可以直接输出。同时保存他和十六进制基数。从0到F
* /

转换为16进制:

/ / VC + + 6.0编译通过

stdio.h中>
#,包括
无效的主要()
{
整数A,B [20],我基础= 16;
字符X [16] = {'0','1','2','3','4','5','6','7','8','9','A' ,'B','C','D','E','F'};
scanf的(“%d”,&A);
(i = 0;了! 0; i + +)
{
B [我] =%的基础;
= A /基地;
}
( - ; = 0; I - )/ /开始 - 我
{
诠释J = B [我];
printf的(“%c”的,X [J]); BR />}
printf的(“\ n”);
}

/ *
一般其他十六进制数转换为十进制数更容易,准备乘法公式,我们使用。
十进制数转换为十六进制数,则要使用除法。的想法?这个问题是明确的,应该是
典型的算法来解决这些问题。

它的十进制数转换成二进制数,在除了使用部门,但还带着几分算术。

主要的问题是值得理解这两个词:

B [我] =%的基础;
= A /基地;
我们一般采用两种循环使用,得到一个整数的数字,这也恰好说明我们得到了
整数位的方法,它是一个十进制数转换为十进制数的算法
,是,我们得到一个小数位数字的过程,实际上是寻找他的过程中,转换为十进制
数字(虽然本身无需转换本身的时候,就已经是一个十进制数)。事实可以预计相同
十进制数转换成十六进制数的过程中,这是类似的。

然后在第一个输出的结果,取余数的结果,年底的数字,在低位。

* /

解决方案:

#包括
包括的
>无效的主要()
{
诠释一个[10] = {0,1,2,9,10,5,12,7,8,15};
(INT I = 9;我= 0; I - )
{
(A [I]> = 10)
开关([I])
{
10:printf的(“%c”的,'A');突破;
案例11:printf的(“C”,“B”);
情况下,12:printf(“请%C “,'C');休息;
案例13:printf的(”C“,”D“);
情况下,14:printf的(”%c“的,'E');打破;
情况下,15:printf的(“%c”时,'F');休息;
}
其他
printf的(“%d”的,一个[i]);
}
}

/ *
事实上,二进制的转换算法,我们知道的是,我们希望将其转换成16进制数(如果十六进制) />取余数,剩下的结果存储在一个数组里面四舍五入重新分配给他的,那就是扔掉的其余部分,
相当于外商前面的步骤,然后采取余数,再取整。如此循环,直到0为止。

事实上,上述算法,它提醒我们一个十进制数转换成二进制数计算,是不难理解的,
是相通的。

现在的关键是,如果这些东西都是好的,那就是,其余的被放置在一个数组中,现在要做的,
阵列反向输出就OK了。二进制或八进制,只要它的直接输出,但如果
十六进制,不能的情况下,也就是说,如果一个元素的数组里面是14的话,我不能作为输出/>,则必须输出E,因为E是十六进制内底,但也有相应的十进制数14。
一个二进制或八进制,可以直接输出,因为阵列的数量是0,1(二进制)

(0 .... 8),这些数字的二进制和八进制基地。

所面临的问题在这里是输出一个整数,这个整数满足一定的条件下,输出字
突破,例如:如果该整数等于14'E'字符的输出。

当然,我们可以使用.. else语句,以确定特殊字符的十六进制数,它是唯一的A,B,C,D,E,F 6
以确定是否...否则太麻烦了。当然,我们也可以使用开关来确定这更有组织。代码
更清晰。

当然,这是一个十六进制数,我们可以判断,但如果在现实生活中遇到的问题,这一点
条件或交换机上太麻烦了类似的信件,代码是不直观,但也容易出错。

在这个时候,我们可以定义一个字符数组,分别把字符,我们要输出的对应关系如下:

10 A
11 B BR /> 12?
13e
14 -
15 F
16?
17 H
18我
19 J
>
该数组,把数字,里面的字符数组b数组,一个里面的数字是10,当输入
'A',而不是输出10,等等(见上面的对应)课程我上面的对应关系是连续的,其实
的数字和字符的顺序可能不乱,当然,这取决于实际遇到的问题是什么。
以上,如果...否则以确定它是否会过于繁琐。因此,我们定义了一个字符数组来存储
字符。因此,如何接触数字和字符,如何让一个[i],价值10时,但14失去
'E'输出'A',我们可以定义b数组:
/>字符B [30] = {0};
B [10] ='A';
B [11] ='B';
B [12] ='C'
B [13] ='D';
B [14] ='E';
...
B [19] ='J';

因此,这意味着,当该元素的值一个[i] 10:00输出[10] 11输出[11];这和数字对应
。我们可以使用:

诠释吨= [];
printf的(“%c”时,B [T]),[i]的值,我们输出B [多少]

对于上面的例子中,它可以是:

如果(一个[i]> = 10 &&一个[i] <= 19)/ /对应关系是连续的,可以判断
{
诠释吨= [];
printf的(“%c”时,B [T]);
}
其他
{
printf的(“%d”,一个[i]);/ /如果你不属于特殊字符的定义相应的输出。

}

当然,上面是相应的连续十进制和二进制,八进制,十六进制的转换,是连续的。
相应的连续,即如何做到这一点:

20'A'
25'B'
30'D'
50'G' /> 53“H”
58的'C'
100'Z'
200'W'

以上,没有规律性,和数目,这些去定义一个数组的200个元素,
有点划不来。因此,如果是上面这种情况下,有没有更好的办法。只有在判断语句,当然,如果有超过20
字符的对应关系来确定语句是不恰当的,那么有没有更好的办法。同时进一步探讨......

* /

这是我的测试计算机等级考试主题碰到哦,算法相当,一些书,一些扩展。还是自己严重的哦。 。 。

由于太多的文字提出的第三个问题不上来,哦。 。抱歉。 。 。