首先,感谢实验室还能上网。现附上实习的题目:(如下)
1.写一个函数factorial(n),求整数n的阶乘。
2.求1-3+5-7+9-11+13-......+65之和。
3.求水仙花数
水仙花数:一个三位数,百、十、个位上的数字立方之和等于该数。
4.输出下列结果
a
ab
abc
abcd
abcde
abcdef
5.编写抽火柴的游戏:共有火柴21根,玩家和电脑轮流取火柴,每次限取1--4根。胜负判定规则:取最后一根火柴者输!
6.求2(1)+2(2)+2(3)+2(4)+......+2(9)之和。(其中2(n)指的是2的n次幂)
7.【扩展】Access文件的密码破译。
老师说他是个什么公司的什么经理,反正不记得了。
第一天C语言实习,基本上忘得差不多了,忽然来的实习做题,搞得什么都不会,第一道题写个求阶乘的算法,汗!!!
老师的程序,在变量使用上颇有讲究,按照他说的,主要是变量要有一定的意义。限于我也在编程,不能跟上老师的换题速度,只附上我的代码,那些标准的代码规范什么的,还是去看标准的吧,我先把功能实现了。。。。
第一题:
#include "stdio.h"
void factorial()
{
int num;
int result=1;
printf("Input the number:");
scanf("%d",&num);
for(int i=1;i<num+1;i++)
{
result=result*i;
}
printf("%d的阶乘是:%d\n",num,result);
}
void main()
{
factorial();
}
结果:
第二题
程序:
#include "stdio.h"
void main()
{
int sum=0;
bool flag=false;
for(int num=1;num<=65;num+=2)
{
if(flag=!flag)
{
sum+=num;
}
else
{
sum-=num;
}
}
printf("%d\n",sum);
}
结果:
第三题
程序:
#include "stdio.h"
void main()
{
for(int sum=100;sum<1000;sum++)
{
int na=sum/100;
int nb=sum/10%10;
int nc=sum%10;
if(na*na*na+nb*nb*nb+nc*nc*nc==sum)
printf("the number is:%d\n",sum);
}
}
结果:
第四题
#include"stdio.h"
void main()
{
for(int nRow=0;nRow<6;nRow++)
{
for(int nCol=0;nCol<=nRow;nCol++)
{
printf("%c",'a'+nCol);
}
printf("\n");
}
}
结果:
第六题
#include "stdio.h"
int main()
{
int n,nResult=1,result=1;
printf("请输入函数的(底数为2)指数(n):");
scanf("%d",&n);
for(int i=1;i<n+1;i++)
{
nResult*=2;
}
result=2*(nResult-1);
printf("2的%d幂的结果为:%d\n",n,result);
}
结果:
第七题
提示:分别建一个有密码的和没有密码的mdb文件。然后用ACCESS打开,找到16进制代码中,不一样的地方,就是密码的所在地,然后根据不一样的反推出密码,然后就,,,,,你还是自己来吧,这个我真心头晕!!!
附下代码:
#include "stdio.h"
void main()
{
char *p = "d:\\db1.mdb";
char chPwd;
char arr[] = {0x0F,0xEC,0xD4,0x9c,0x4f,0x28,0x9a};
FILE *fp = fopen(p,"r");
if(fp==NULL)
{
return;
}
fseek(fp,0x42,0);
for(int nIndex=0;nIndex<7;nIndex++)
{
fscanf(fp,"%c",&chPwd);
if(chPwd==arr[nIndex])
{
break;
}
else
{
printf("%c",chPwd ^ arr[nIndex]);
fseek(fp,1,SEEK_CUR);
}
}
fclose(fp);
}
祝你好运,我是没有试过的!!!
《有些代码限于当时时间有限,未能及时做出来,后期才开始慢慢完成,如果有人完成,可以留言,你的学习经验体会,大家共享么,呵呵。。。。。。》