13求解一道简单的C语言编程题

13求解一道简单的C语言编程题,第1张

稍微解释一下,希望能说清楚

void txt_r_and_w(int ii) //对文件读写

ii=0时,把加密.txt读入abc[300]

ii=1时,把原文.txt读入abc[300]

ii=2时,把abc[300]写入解密.txt

ii=3时,把abc[300]写入加密.txt

void to_a(int i) //加密方法a,i=1加密 i=2解密

逢3位全部前移到最前面,把3,6,9...位与0,1,2...位互换

如原文abcdefg,密文dgcaefb

解密是其反过程

void to_b(int i) //加密方法b

所有奇数位ASCII加13

如原文abcd,密文aick b+13=i

解密就是技术位ASCII-13

void to_c(int i) //加密方法c

用一个数列的值对数组进行交叉换位

定义一个新数列sun[110]:1,2,3,5,9,14...sun[i]=sun[i-1]+i

这个加密过程有点复杂,简单得说就是

当sun[i]的值小于300且i<100时

abc[300]的1位和3位换,3和5换,5和9换,9和14换...

其实就是把第3位移到第1位,第5位移到第3位,第9位移到第5位...

当sun[i]的值大于300且i<100时

把sun[i]的值对300取余,重复上一过程.

流程

输入密码(1234)

错误返回

正确->加密请按1,解密请按0

1->把原文.txt读入->用3种方法加密->写入加密.txt

0->把加密.txt读入->用3种方法解密->写入解密.txt

不过程序好像还有些问题.但他想达到的效果应该是这样

15. 以下程序的输出结果是(D)。 main( ) { int a, bfor(a=1,b=1a<=100a++) { if(b>=10) breakif(b%3==1) { b+=3continue} } printf(“%dn”,a)}

A. 101

B. 6

C. 5

D. 4

16. 若整型变量a,b,c,d的值依次为:1,4,3,2,则条件表达式aq.Type = "1"q.ObjectID[q.ObjectID.length] = "rdo_899f1843-0f05-47d1-a3fd-45c325b7d297_Response" q.Response[q.Response.length] = "Response"q.Answer[q.Answer.length] = ""

A. 1

B. 2//没有看懂呵呵

C. 3

D. 4

17. 已知int x=23;则printf(x++*1/3)的输出结果是( D)。

A. 8

B. 7.66

C. 7.33

D. 7

//后置++是先做*1在/3后++,两个整形相除还是整形,并且是相当于求商

18. 有变量说明语句int a,b,c;,顺序执行下面语句: a=b=c=1++a||++b&&++c那么,变量b的值应是( B)。

A. 2

B. 1//++a已经满足条件下面就被短路了

C. 0

D. 3

19. 下述语句执行后,变量k的值是(B )。 int k=1; while(k++〈10〉;

////////////////后置++是先比较和自加1.

A. 10

B. 11

C. 9

D. 为无限循环,值不定

20. 以下叙述错误的是( A)。

A. 用户定义的标识符允许使用关键字

B. 用户定义的标识符应尽量做到“见名知意”

C. 用户定义的标识符必须以字母或下划线开头

D. 在用户定义的标识符中,大、小写字母代表不同标识

21. 当把以下四个表达式用做if语句的控制表达式时,有一个选项与其他三个选项含义不同,这个选项是( D)。

A. k%2

B. k%2= =1

C. (k%2)!=0

D. !k%2= =1 //其他三个判断都是被二除余1

22. C语言提供的合法关键字是( C)。

A. default

B. Char

C. while

D. Switch

23. 设有说明:char aint bfloat c则表达式a+b-c值的数据类型为(C )。

A. char

B. int

C. float//整形与浮点型运算后变成浮点型

D. double

24. putchar函数可以向终端输出一个( C)。

A. 整数

B. 实数

C. 字符

D. 字符串

25. 若x的初值为10,则表达式(x>10?x+100 : x-10)的值是( b)。

A. 10

B. 0//x>10的话执行x+100,否则x-10

C. 100

D. 1

注:全部经过程序验证的

//最佳答案呀呵呵

/**测试功能函数:

*1.有一分数序列2/1,3/2,5/3,8/5,13/8,21/13……编写程序求出这个数列的前20项之和。

*2.编写一个程序,对于一个大于或等于3的正整数,判断他是不是一个素数

*3.编写程序,实现对于输入的一行字符,统计其中字母,数字字符,其他字符的个数。

*4.编写程序,C=1+1/X^1+1/X^2+1/X^3+……(X>1)直到某一项A<=0.000001时为止,

*输出最后C的值。

*作者:pengs

*

*/

#include <iostream>

#include <cmath>

using namespace std

/*实现第一个功能函数*/

double mark_calc(int n)

{

double a(1.0), b(2.0), sum(0),temp

while (n >0)

{

sum += b / a

temp = b /*先将b保存后,再更改b的值,然后赋值给a*/

b += a

a = temp

--n

}

return sum

}

/*判断一个整数是否为素数,如果是,返回true*/

bool isPrime(const int n)

{

int num = n

int tmp = (int)sqrt(n) /*只需测试到sqrt(n)即可*/

if (num == 1 || num == 2)

return true

for (int i = 2i <= tmp++i)

if ( num % i == 0)

return false

return true

}

/*实现第三个功能函数*/

double intSer(int x)

{

double sum = 0

double tmp = 1.0 / x

while (tmp >0.00001)

{

sum +=tmp

tmp /=x

}

return sum

}

/*统计字符串函数*/

void print_n(const char *ch)

{

int digit = 0

int letter = 0

int space_n = 0

int other = 0

cout <<"原字符串:" <<ch <<endl

while (*ch != '\0')

{

if ((*ch >= 'a' &&*ch <= 'z') || (*ch >= 'A' &&*ch <= 'Z'))

++letter

else if (*ch == ' ')

++space_n

else if (*ch >= '0' &&*ch <= '9')

++digit

else

++other

++ch

}

cout <<"字母(a~z or A~Z)的个数有: " <<letter <<"个" <<endl

cout <<"数字(0~9)的个数有:" <<digit <<"个" <<endl

cout <<"空格的个数有: " <<space_n <<"个" <<endl

cout <<"其他字符的个数有: " <<other <<"个" <<endl

}

int main(int argc, char *argv[])

{

/*输入一行测试字符*/

char *ch = new char[100]

cout <<"统计字符函数测试:请输入一行字符: " <<endl

gets(ch)

print_n(ch)

delete []ch

ch = NULL

int num1(20)

cout <<"请输入项数:n = "

cin >>num1

cout <<"2/1+3/2+5/3+…+前20项之和为:" <<mark_calc(num1) <<endl

int num2(10)

cout <<"请输入x的值:x = "

cin >>num2

cout <<"1/x + 1/x*x + +(1/x^n <= 0.00001)和为:" <<intSer(num2) <<endl

int num3

cout <<"请输入一个正整数:n = "

cin >>num3

if (isPrime(num3))

cout <<num3 <<" 是素数!" <<endl

else

cout <<num3 <<" 不是素数!" <<endl

return 0

}

/*建议:

1、应该加入一些输入异常或错误处理;

2、对循环中的出现的终止条件应该使用字符表示,便于修改;

3、时间有限,有些优化略过。(完)*/


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11256606.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存