1.猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一.个。第二天早上又将剩下的桃子吃掉一半,又多吃了一一个。
以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,发现只剩一一个枕子了,求猴子第一天究竟摘了多少个桃子?
2.现代数学的著名证明之-是Georg Cantor 证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的:
3. 一个正整数如果恰好等于它的因子之和,这个数称为完数",如6=1+2+3.求1000以内所有的完数,每行5个。
4.输入年月日,判断它是该年的第多少天。
5.从键盘输入一一个不超过100个字符的字符串,统计其中有多少个单词。
6.从键盘输入一篇文章(不超过10000个字符),查找是否包含“debug "的子串。
7.从键盘输入N个数,将其按由小到大的顺序排好,再输入一个数,把它插入到原有序列中(不能再排序) ,而且仍然保持有序。
8.输入H个数到数组中,输出所有大于N个数平均值的数。
第一题 猴子吃桃问题
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一.个。第二天早上又将剩下的桃子吃掉一半,又多吃了一一个。
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int num=0,x=1;
for(int i=0;i<9;i++)
x=(x+1)*2;
printf("%d",x);
return 0;
}
第二题 证明有理数可枚举
现代数学的著名证明之-是Georg Cantor 证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的:
#include <stdio.h>
int main()
{
int n,sum=0,k,lin,up,down;
while(scanf("%d",&n)!=EOF)
{
for(int i=1;;i++)
{
sum+=i;
if(sum>=n)//等号注意一下
{
k=i; //用k记录n所在行数
break;//如果忘记加上for循环则没有终止条件
}
}
lin=k-(sum-n);
printf("%d\n%d\n",k,lin);
//判断行数k的奇偶用以确定数据的走向
if(k%2==0)//偶左下
{
down=k+1-lin;
up=k+1-down;
}
else
{
down=lin;
up=k+1-down;
}
sum=0;
printf("%d/%d\n",up,down);
}
return 0;
}
第三题 求完数
一个正整数如果恰好等于它的因子之和,这个数称为完数",如6=1+2+3.求1000以内所有的完数,每行5个。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int i,j,l=0,sum=0,a[500];
for(i=1;i<=1000;i++)
{
for(j=1;j<i;j++)//求i的因数之和,并且判断是否为完数
{
if(i%j==0)
{
sum+=j;
}
}
if(sum==i)
{
a[l++]=i;//存储完数
}
sum=0;
}
//输出完数
for(i=0;i<l;i++)
printf("%d\t",a[i]);
printf("\n");
/*
for(j=0;j<5;j++)
{
for(i=0;i<l;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
return 0;*/
}
第四题 数天数
输入年月日,判断它是该年的第多少天。
#include <stdio.h>
#include <stdlib.h>
int judgeyear(int a)
{
if((a%4==0&&a%100!=0)||a%400==0)
return 1;
else
return 0;
}
int main()
{
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int year,month,day;
printf("Please enter date:\n");
while(scanf("%d%d%d",&year,&month,&day)!=EOF)
{
printf("%d %d %d",year,month,day);
int count=0;
if(judgeyear(year)==0)
{
if(month>0&&month<=12)
{
for(int i=0;i<=month-1;i++)
count+=a[i];
count+=day;
// printf("here1\n");
}
}
else
{
if(month>2&&month<=12)
{
for(int i=0;i<=month-1;i++)
count+=a[i];
count+=day+1;
//printf("here2\n");
}
else if (month>0&&month<=2)
{
for(int i=0;i<=month-1;i++)
count+=a[i];
// printf("here3\n");
count+=day;
}
}
printf("ÌìÊýΪ£º%d\n",count);
}
return 0;
}
第五题 统计单词
从键盘输入一一个不超过100个字符的字符串,统计其中有多少个单词。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//方法一
int main()
{
char s[500];
printf("请输入字符串:\n");
gets(s);
int flag=1,n=0;
for(int i=0;i<strlen(s);i++)
{
if(flag==1)
{
if(s[i]!=' ')
{
n++;
flag=0;
}
}
else
if(s[i]==' ')
{
flag=1;
}
}
printf("单词数目为:%d\n",n);
return 0;
}
//方法二利用数组,将输入存到数组里面
第六题 查找字符串
从键盘输入一篇文章(不超过10000个字符),查找是否包含“debug "的子串。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char s[10000];
int flag1=0;
printf("请输入一篇文章:\n");
gets(s);
for(int i=0;s[i];i++)
{
if(s[i]=='d'&&s[i+1]=='e'&&s[i+2]=='b'&&s[i+3]=='u'&&s[i+4]=='g')
{
printf("包含");
flag1=1;
}
}
if(!flag1)
printf("不包含");
return 0;
}
第七题 插入数
从键盘输入N个数,将其按由小到大的顺序排好,再输入一个数,把它插入到原有序列中(不能再排序) ,而且仍然保持有序。
#include <stdio.h>
#include <algorithm>
using namespace std;
int main()
{
int a[1000],n,x,y,pos;
printf("请输入数字N:\n");
while(scanf("%d",&n)!=EOF)
{
printf("请输入n个数字:\n");
for(int i=0;i<n;i++)
{
scanf("%d",&x);
a[i]=x;
}
a[n]='\0';
sort(a,a+n);
for(int i=0;i<n;i++)
{
printf("%d ",a[i]);
}
printf("请插入一个数:\n");
{
scanf("%d",&y);
for(int i=0;i<n;i++)
{
if(a[i]>=y)
{
pos=i;
}
}
for(int i=n;i>=pos-1;i--)
{
a[i+1]=a[i];
}
a[pos-1]=y;
}
for(int i=0;i<n+1;i++)
{
printf("%d ",a[i]);
}
}
return 0;
}
第八题 输出大于平均值的数
输入H个数到数组中,输出所有大于N个数平均值的数。
#include <iostream>
using namespace std;
int main()
{
int a[1000],n,i,x,sum=0,ave=0;
printf("请输入N 然后输入N个数字:\n");
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
{
scanf("%d",&x);
a[i]=x;
}
a[i]='\0';
for(i=0;i<n;i++)
{
sum+=a[i];
}
ave=sum/n;
// printf("%d ",ave);
for(i=0;i<n;i++)
{
// printf("%d ",a[i]);
if(a[i]>ave)
printf("%d ",a[i]);
}
}
}
感想:经过两天的挣扎,突然发现自己离真正的成功还有很远的距离。
代码有很多生疏的地方,很多基本语法会有遗忘,以及一些基本操作更是忘得一塌糊涂。
还有自己的代码有时候敲的根本不经过大脑,完全没有任何大局观念。!!!!!!!!!!!!!