您的位置:首页 > 编程语言 > C语言/C++

C语言暑期实习 第二天

2012-07-08 11:47 411 查看
今天继续了前第一天的那几道题,然后开始了新的一天的学习。。。。

第二天的题目:

1.输出下列结果

a

ab

abc

abcd

abcde

abcdef

2.求2(1)+2(2)+2(3)+2(4)+......+2(9)之和。(其中2(n)指的是2的n次幂)

3.求满足以下条件的最大n:1+2+3+4+...+n<1000;

4.(斐波拉耶)根据数列:1,1,2,3,5,8,13,21,34,55,89,.........的个规律,输出15个数。

5.对字符串“mypassword131”加密后的输出。

6.海盗问题(约瑟夫问题)。

7.9*9方格问题。

8.一头奶牛从出生后的第四年开始生育一头小奶牛,以后每年生育一头。给你一头小刚出生的小奶牛,13年后共有多少头奶牛?

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

第一题:输出下列结果

a

ab

abc

abcd

abcde

abcdef

程序一:

#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");

}

}

结果:



---------------------------------------------------------------------------------------------------------------------------------------------------------------------------

第二题:求2(1)+2(2)+2(3)+2(4)+......+2(9)之和。(其中2(n)指的是2的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);

}



变形程序二:可以按照要求算出a的n次幂之和。

#include "stdio.h"

int main()

{

int a,n,nResult=1,result_1=1,result;

printf("请分别输入函数的底数(a)和指数(n):");

scanf("%d%d",&a,&n);

for(int i=1;i<n+1;i++)

{

nResult*=a;

}

result_1=a*(nResult-1);

int num=a-1;

result=result_1/num;

printf("%d的%d幂",a,n);

printf("的结果为:%d\n",result);

}

结果:



第三题:求满足以下条件的最大n:1+2+3+4+...+n<1000;

程序:

#include "stdio.h"

int main()

{

int i,sum=0;

printf("i sum\n");

for(i=1;;i++)

{

sum+=i;

if(sum<1000)

{

printf("%d %d\n",i,sum);

}

else

{

printf("大于1000的数值是\n");

printf("%d %d\n",i,sum);

break;

}

}

printf("so the %d is the max number ",i-1);

printf("and the sum is %d\n",sum-i);

}

结果:





第四题:(斐波拉耶)根据数列:1,1,2,3,5,8,13,21,34,55,89,.........的个规律,输出15个数。

程序:

//斐波拉耶

#include "stdio.h"

int main()

{

int arr[15];

for(int nl=0;nl<15;nl++)

{

switch(nl)

{

case 0:

case 1:

arr[nl]=1;break;

default:

arr[nl]=arr[nl-1]+arr[nl-2];break;

}

printf("%d\n",arr[nl]);

}

}

结果:



第五题:对字符串“mypassword131”加密后的输出。

第六题:海盗问题(约瑟夫问题)

代码:

#include "stdafx.h"

struct Person

{

int NumOfCard;

Person *next;

};

Person *head = NULL;

Person *tail = NULL;

void BuildLinks();

void KillPersons();

void ShowLinks();

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

{

BuildLinks();

KillPersons();

ShowLinks();

}

void BuildLinks()

{

while(true)

{

Person *newPerson = new Person();

printf("please input the number of card for new Person:[0 to exit]");

scanf("%d",&newPerson->NumOfCard);

if(0==newPerson->NumOfCard)

{

delete newPerson;

break;

}

else

{

if(NULL==head)

{

head= tail = newPerson;

}

else

{

tail->next = newPerson;

tail = newPerson;

}

}

}

if(NULL!=head)

{

tail->next = head;

}

}

void ShowLinks()

{

Person *temp = head;

while(true)

{

printf("%d",temp->NumOfCard);

temp = temp->next;

if(temp==head)

{

break;

}

}

}

void KillPersons()

{

Person *prevPerson = tail;

Person *curBeKilled =NULL;

while(true)

{

curBeKilled = prevPerson->next;

int numOfCard = curBeKilled->NumOfCard;

prevPerson->next = prevPerson->next->next;

delete curBeKilled;

for(int nTimes=0;nTimes<numOfCard-1;nTimes++)

{

prevPerson = prevPerson->next;

}

if(prevPerson == prevPerson->next)

{

break;

}

}

head = prevPerson;

}

(代码,我没测试出来!)

第七题:9*9方格问题

程序:

#include "stdafx.h"

#include "qq.h"

int grid[9][9];

void initGrid();

void fillDataIntoGrid();

void showDataOfGrid();

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

{

initGrid();

fillDataIntoGrid();

showDataOfGrid();

}

//------------------------------------------------------------------

void initGrid()

{

for(int nRow=0;nRow<9;nRow++)

{

for(int nCol=0;nCol<9;nCol++)

{

grid[nRow][nCol] = 0;

}

}

}

void fillDataIntoGrid()

{

int nRow;

int nCol;

for(int nData=1;nData<=81;nData++)

{

if(1==nData)

{

nRow = 0;

nCol = 4;

}

else

{

if(0==grid[(nRow-1+9) % 9][(nCol-1+9)%9])

{

nRow = (nRow+8) % 9;

nCol = (nCol+8)%9;

}

else

{

nRow = (nRow +1) % 9;

}

}

grid[nRow][nCol] = nData;

}

}

void showDataOfGrid()

{

for(int nRow=0;nRow<9;nRow++)

{

for(int nCol=0;nCol<9;nCol++)

{

printf("%d\t",grid[nRow][nCol]);

}

printf("\n");

}

}

第八题:一头奶牛从出生后的第四年开始生育一头小奶牛,以后每年生育一头。给你一头小刚出生的小奶牛,13年后共有多少头奶牛?

程序:

#include "stdio.h"

int main()

{

int arr[15];

for(int nYear=0;nYear<13;nYear++)

{

switch(nYear)

{

case 0:

case 1:

case 2:

arr[nYear]=1;break;

case 3:

arr[nYear]=2;break;

default:

arr[nYear]=arr[nYear-1]+arr[nYear-3];break;

}

printf("The %dth year is ",nYear+1);

printf("%8d cows\n",arr[nYear]);

}

}

结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: