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]);
}
}
结果:
第二天的题目:
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]);
}
}
结果:
相关文章推荐
- C语言暑期实习 第一天
- C语言暑期实习 第三天
- C语言暑期实习 第八天
- C语言暑期实习 第七天
- C语言暑期实习 第六天
- C语言暑期实习 第九天
- C语言暑期实习 第五天
- C语言暑期实习 第十天
- C语言暑期实习 第四天
- 2017暑期实习招聘-产品经理-腾讯IMG(2)
- 暑期实习17之计数器
- 大三暑期实习应注意的事项 笔记
- C语言进阶【暑期特别篇】深入解剖(un)signed及溢出(中) 推荐
- 实习第二天
- 2018腾讯音乐暑期实习内推面试(一面)
- 2016网易游戏实习算法题解(今年找暑期实习的时候参加的)
- 触宝笔试面试回忆版(不完整)-16暑期实习
- 第二天实习
- 暑期大作战 第二天
- [2016.4][京东暑期实习笔试]三子棋