哈尔滨工程大学
《程序设计基础》实验报告
基础实践一
姓 名: 麦豆 班 级:
学 号:
实验时间: 2018 年 5 月 3 日
成绩
哈尔滨工程大学计算机基础课程教学中心
实验题目1:写一个函数,Sn=a+aa+aaa+···+aa···a
求多项式的前n项和,其中a是一个数字。n由键盘输入。
设计思想:声明函数sum,利用循环求得sum最终值并返回sum值
实验代码及注释:
#include
int sum(int a,int n);//sum函数声明
int main()
{
int n;
int a;
printf(" 请输入a,n:\n");
scanf("%d%d",&a,&n);
printf("前%d项和为%d\n",n,sum(a,n));//调用函数sum
return 0;
}
int sum(int a,int n)
{
int sum=0;
int i;
int count;
count=0;
for(i=1;i<=n;i++)
{
count=count*10+a;//每次乘10加a
sum=sum+count;
}
return sum;
}
验证与结论:
总结与心得体会:声明函数时后面一定要有分号,但写函数时不需要。
实验题目2:编程实现求10000以内的回文数。其中,函数实现判断任一正整数是否为回文数。所谓回文数就是将一个数从左向右读与从右向左读是一样的,例如121和1331都是回文数。
设计思想:声明judje函数,判断number是否为回文数。在函数内部先判断数字number位数,由于回文数为对称结构,故通过位数来确定判断次数,每次判断数字首位与个位然后去掉首位与个位再次判断直至循环结束。另外需要对个位数另行判断,个位数一定为回文数。如果为回文数返回1,否则返回0。
实验代码及注释:
#include
#include
int judje(int number);//声明judje函数
int main()
{
int i;
for(i=0;i<10000;i++)
{
if(judje(i)==1)//judje为1的数输出
printf("%d\t",i);
}
return 0;
}
int judje(int number)//判断number是否为回文数
{
int judje,i=0,middle_number,parity,j;//回文数判断变量,数字位数,数字位数中间变量,数字位数奇偶
int middle_number2;//取掉首位个位剩余数
int shouwei,gewei;//首位,个位
middle_number2=number;//全部赋初值
middle_number=number;
do //判断数字位数
{ i++;
middle_number=middle_number/10;//对数字除以10直到为0
}
while (middle_number!=0);
parity=i/2;//运算次数
for (j=1;j<=parity;j++)
{
shouwei=middle_number2/pow(10.0,(double)(i-2*j+1));//首位数字
gewei=middle_number2%10;//个位数字
middle_number2=(middle_number2-shouwei*pow(10.0,(double)(i-2*j+1)))/10;//将首位与个位去除后剩余的数
if((shouwei==gewei) && j==parity)//个位与首位相等且都已比较完成
{
judje=1;//1为真
}
else if(shouwei!=gewei)
{
judje=0;
break;