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、时间有限,有些优化略过。(完)*/
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)