您的位置:

c语言题目小记,c语言 题目

本文目录一览:

一个简单的C语言题目……求大佬解答

(1)第1行的功能是什么?

求输入10进制整数的位数。

(2)在第2行中,main函数前面为什么有void?

表示该main函数无返回值。

(3)第4行的功能。

定义两个整型变量。

(4)设输入整数356,写出执行该程序的运行结果。

3

C语言经典题目

1.正确的算法:

如果n=3, 过河时间为A+B+C

如果n=2, 好算, 不费口舌了

如果n=4, 这个是重点:

每次优先考虑把最慢两人送过河

把n人中最快两人记为A,B, 最慢两人记为C,D(过河时间ABCD), n人问题实质上转换为4人过河问题, 参考到4人过河时的优化,

记AB过河, A回, CD过河, B回, 为方法X, 实质是利用最快两人进行优化, 耗时A+2B+D

记AD过河, A回, AC过河, A回, 为方法y, 实质是利用最快一人来过河, 耗时2A+C+D

每次比较这两个方法, 如果x快, 使用x方法, 如果y快, 则用y, 并且, 一旦某次使用y方法后, 以后都不用比较了, 全部使用y方法过河

2.算法正确性证明:

为什么每次先让最慢两人过河? 因为他们迟早要过河...早过晚过一样, 而晚过的话, 有可能时间不能被优化, 所以选择最先过

为什么是两人, 不是三人? 因为这船一次只能两人, 三人问题和两人问题的优化一样, 所以一次考虑三人毫无意义, 同理, 三人以上不加考虑

为什么某次用y过河后不用再比较xy了?

先看这个例子:

1 99 100 101

用x方法是99+1+101+99= 300

y方法是 101+1+100+1 = 203

y比x快的原因是2A+C+D A+2B+D, 即 A+C2B

容易想到, 从此以后A+C都会小于2B了(因为C越来越小)

3.补充:

算法分析就到这里了, 至于具体的程序...楼主既然是ACMer, 这个应该不困难

当然, 如果楼主需要的话, 也可以给出程序

C语言小题目!

1,

main()

{char str[13];scanf("%s",str);printf("%s\n",str);}

若输入abcd1234 efgh回车则程序输入结果是abcd1234 为什么?

scanf("%s",str); 遇到空格, 读取截止.所以只读取abcd1234

2,

c[N]中的各项值是1CR2CR34

使用getchar()时会读取回车符的.

如果将for(;iN;c[i]=getchar();i++); 改为

for(;iN;scanf("%c", c[i]),i++); 的话就能输出12345

C语言的小题目

这个程序很简单,用递归是把问题复杂化了,不过实现的方法有很多种,只要能实现就行。以下是我的一种方法,已经过编译调试,可运行

算法核心如下:

while

(

i

loop

)

{

sum

+=

a

*

pow(

10

,

i

)

+

temp;

temp

+=

a

*

pow(

10

,

i

);

i

++;

}

我想你应该能看懂,就不具体解释了哈

程序源代码如下:

#include

"stdio.h"

#include

"math.h"

int

main()

{

int

a;

/*进行计算的数*/

int

loop;

/*循环次数*/

int

i

=

0;

/*循环起始值*/

double

temp

=

0;

/*过程变量,存储上一次的值*/

double

sum

=

0;

/*总和*/

printf(

"Please

input

two

numbers

form

as:

numerA

numberLOOP\n"

);

scanf(

"%d

%d",

a

,

loop

);

while

(

i

loop

)

{

sum

+=

a

*

pow(

10

,

i

)

+

temp;

temp

+=

a

*

pow(

10

,

i

);

i

++;

}

printf(

"\nResult

is:

%.0f\n"

,

sum

);

return

0;

}