课程设计论文

1.
对于成绩的分段,分为五个等级。
此题相对简单,就是对于多组数据的不同情况讨论。
唯一要注意的地方是注意要多组数据输入而不是单个数据。
#include<stdio.h>
int main()
{
int t;
while(scanf("%d",&t)!=EOF)
{
if(t>=90&&t<=100)
{
printf("A");
printf("\n");
}
if(t>=80&&t<90)
{
printf("B");
printf("\n");
}
if(t>=70&&t<80)
{
printf("C");
printf("\n");
}
if(t>=60&&t<70)
{
printf("D");
printf("\n");
}
if(t>=0&&t<60)
{
printf("E");
printf("\n");
}
if(t<0||t>100)
{
printf("Score is error!");
printf("\n");
}
}
return 0;
}
2.
计算水仙花数,即一个三位数,其各位数字的立方和等于其本身。
此题应当先分别分出三个数,然后分别立方后相加,与原数比较。
应当注意格式,此题要求为在两数之间有空格而其他地方无空格,故应当分两种情况讨论。
#include<stdio.h>
int main()
{
int m,n,a,b,c,i,j=0;
while(scanf("%d %d",&m,&n)!=EOF)
{
for(i=m;i<=n;i++)
{
a=i/100;
b=i%100/10;
c=i%10;
if(a*a*a+b*b*b+c*c*c==i)
{
j++;
if(j==1)
{printf("%d",i);}
else
{printf(" %d",i);}
}
}
if(j==0)
{printf("no");}
j=0;
printf("\n");
}
return 0;
}
3.
求n个整数中所有奇数的乘积。
此题为在一组数据中找出数据并相乘,应当分条件讨论。
注意输入数据为多组。
#include<stdio.h>
int main()
{
int n,x,i,j=1;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
{
scanf("%d",&x);
if(x%2==1)
{
j=j*x;
}
}
printf("%d\n",j);
j=1;
}
return 0;
}
4.
对于(x,y)范围内的整数n取n^2+n+41,判定该表达式的值是否都为素数。
对于每个n,求出它的对应值,然后讨论是否为复数。
注意n不止一个。
#include<stdio.h>
int main()
{
int n,x,i,j=1;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
{
scanf("%d",&x);
if(x%2==1)
{
j=j*x;
}
}
printf("%d\n",j);
j=1;
}
return 0;
}
5.
1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + ...求该多项式的前n项的和。
对于n中奇数与偶数分情况讨论,然后相加。
注意对于结果,一定确定其定义为float或者double,绝对不能定义为int。
#include<stdio.h>
int main()
{
int m,n,i,j;
float a=0.0;
while(scanf("%d",&m)!=EOF)
{
for(i=1;i<=m;i++)
{
scanf("%d",&n);
for(j=1;j<=n;j++)
{
if(j%2==1)
{
a=1*1.0/j+a;
}
else
{
a=-1*1.0/j+a;
}
}
printf("%.2lf\n",a);
a=0;
}
}
return 0;
}
6.
有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。
先列出数列,然后在给定的区域内选值。
注意最后一组数据可能不足m个,应该分情况讨论。
#include<stdio.h>
int main()
{
int n,m,i,j=0,a=0,b=0,c=0,d=0;
while(scanf("%d %d",&n,&m)!=EOF)
{
for(i=2;i<=2*n;i=i+2)
{
j++;
a=a+i;
d++;
if(j==m&&d==m)
{
b=a/m;
printf("%d",b);
c++;
a=0;
j=0;
}
if(j==m&&d>m)
{
b=a/m;
printf(" %d",b);
c++;
a=0;
j=0;
}
if(n%m>0&&c==n/m)
{
b=2*n-n%m+1;
printf(" %d",b);
a=0;
j=0;
break;
}
}
c=0;
d=0;
printf("\n");
}
return 0;
}
7.
对于一组分数,去掉一个最高分和一个最低分求平均值。
比较出最大值和最小值,然后用总分加去最多最小值然后再除即可。
注意保留两位小数而且每个数一行。
#include<stdio.h>
int main()
{
int n,i,x;
double a=0,b=100,c=0,d=0;
while(scanf("%d",&n)!=EOF)
{
for(i=1;i<=n;i++)
{
scanf("%d",&x);
c=c+x;
if(a<x)
{
a=x;
}
if(b>x)
{
b=x;
}
}
d=(c-a-b)/(n-2);
printf("%.2lf\n",d);
c=0;
a=0;
b=100;
}
return 0;
}
8.
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。求n年时的母牛数。
这道题主要是要找规律,前四年先单独算,然后注意到n-3年的母牛总数就是第n年时的四岁母牛数,即第n年新生母牛数,然后加上n-1年母牛总数即可。
注意分情况讨论前四年。
#include<stdio.h>
#include<math.h>
int a[60];
int main()
{
    int n;
    a[1] = 1;
    a[2] = 2;
    a[3] = 3;
    a[4] = 4;
    for(int i=5;i <= 60;i++)
        a[i] = a[i-1] + a[i-3];
    while(scanf("%d",&n) && n != 0){
        printf("%d\n",a[n]);
    }
    return 0;
}
9.
输入n(n<=100)个整数,按照绝对值从大到小排序后输出。
这道题应当将数据都变为绝对值或者用数据平分后的值进行运算。
注意与后面的数比较时,应再设一个循环。
#include<stdio.h>
#include<math.h>
int a[101];
int main()
{
    int n,i,j,t;
    while(scanf("%d",&n)!=EOF)
    {
        if(n==0)
        {
            break;
        }
        for(i=1;i<=n;i++)
        {
            scanf("%d",&a[i]);
        }
        for(i=1;i<=n;i++)
        {
            for(j=i+1;j<=n;j++)
            {if(a[i]*a[i]<a[j]*a[j])
            {
                t=a[i];
                a[i]=a[j];
                a[j]=t;
            }}
        }
        for(i=1;i<=n;i++)
        {if(i==1)
        {printf("%d",a[i]);}
        if(i>1)
        {
            printf(" %d",a[i]);
        }}
        printf("\n");
    }
    return 0;
}
10.
一个整数插入有序数列,使数列依然有序。
这道题应该是按顺序比较,在满足大于一个n后,改变一个值,加上一个限制条件,使后来的数无法同通过此条件运行。
注意加上的条件一定要使i后面的值虽然比i大,但是不成立。
#include<stdio.h>
int main()
{
    int n,m,i;
    int a[1000];
    while(scanf("%d %d",&n,&m)!=EOF)
    {
        if(n==0&&m==0)
        break;
        else
        {
            int t=0;
            for(i=1;i<=n;i++)
            {
                scanf("%d",&a[i]);
            }
            for(i=1;i<=n;i++)
            {
                if(m<a[i]&&t<1)
                {
                    printf("%d %d",m,a[i]);
                    t++;
                }
                else
                printf("%d",a[i]);
                if(i<n)
                printf(" ");
            }
            printf("\n");
        }}
        return 0;

}
11.
最少需要准备多少张人民币,才能在给每位老师发工资的时候都不用老师找零问题。
这道题应该多次分情况讨论。
注意给的钱数里有两元。
 #include<stdio.h>
 int main()
 {
     int n,x,i,m=0;
     while(scanf("%d",&n)!=EOF)
     {
         if(n==0)
         {
             break;
         }
         for(i=1;i<=n;i++)
         {
             scanf("%d",&x);
             if(x>=100)
             {
                 m=m+x/100;
                 x=x-x/100*100;
             }
             if(x>=50)
             {
                 m=m+x/50;
                 x=x-x/50*50;
             }
             if(x>=10)
             {
                 m=m+x/10;
                 x=x-x/10*10;
             }
             if(x>=5)
             {
                 m=m+x/5;
                 x=x-x/5*5;
             }
             if(x>=2)
             {
                 m=m+x/2;
                 x=x-x/2*2;
             }
             if(x>=1)
             {
                 m=m+x;
             }
         }
         printf("%d\n",m);
         m=0;
     }
     return 0;
 }
12.
有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法。
这道题要用到斐波那契数列,然后就没什么了。
注意规律的寻找。
#include<stdio.h>
int main()
{
int a=1,b=1,M,N,i,j,t=0;
while(scanf("%d",&N)!=EOF)
{
for(i=1;i<=N;i++)
{
scanf("%d",&M);
if(M<=2)
{
a=1;
b=1;
}
if(M>2)
{
for(j=1;j<=M-2;j++)
{
t=a;
a=a+b;
b=t;
}
}
printf("%d\n",a);
a=1;
b=1;
}
}
return 0;
}
13.
去除不吉利车牌,问给出的一个牌照区间号,推断出交管局今次又要实际上给多少辆新的士车上牌照了。
这道题可以把车牌都当做一个十一位数来计算,求它的余数然后加上六百万。
注意车牌号当成数后,其值大于int的定义域。
#include<stdio.h>
int main()
 {
     int n,m,i,j=0,a;
     while(scanf("%d %d",&n,&m)!=EOF)
     {
          if(n==0&&m==0)
             {
                 break;
             }
         for(i=n;i<=m;i++)
         {
             j++;
             for(a=i;a>=1;a=a/10)
             {
                 if(a%10==4)
                 {
                     j--;
                     break;
                 }
                 if(a%100==62)
                 {
                     j--;
                     break;
                }
             }
         }
         printf("%d\n",j);
         j=0;
     }
     return 0;
 }
14.
第一天悟空吃掉桃子总数一半多一个,第二天又将剩下的桃子吃掉一半多一个,以后每天吃掉前一天剩下的一半多一个,到第n天准备吃的时候只剩下一个桃子。聪明的你,请帮悟空算一下,求他第一天开始吃的时候桃子一共有多少个。
这是一道经典的数学问题,按本来的方法计算有些繁琐,而用c语言的循环就可以简单粗暴的直接解决问题。
注意在一次计算结束时在末尾把数值初始处理。
#include<stdio.h>
int main()
{
int n,i,m=1;
while(scanf("%d\n",&n)!=EOF)
{
    for(i=1;i<n;i++)
    {
        m=2*(m+1);
    }
    printf("%d\n",m);
    m=1;
}
return 0;
}
15.
一个整数,只知道前几位,不知道末二位,被另一个整数除尽了,那么该数的末二位该是什么呢?
这道题其实不难,但题目有些难懂,分析题目,即已知百分位以上的数以及它能整除的数,求它的个位与百位。
注意是尾数之间有空格。
#include<stdio.h>
int main()
{
    int a,b,x=0,i;
    while(scanf("%d %d",&a,&b)!=EOF)
    {
        if(a==0&&b==0)
        {
            break;
        }
        for(i=0;i<100;i++)
        {
            if((a*100+i)%b==0)
            {
                x++;
                if(x==1)
                {
                    if(i/10==0)
                    {
                        printf("0");
                    }
                    printf("%d",i);
                }
                else
                {
                    if(i/10==0)
                    {
                        printf("0");
                    }
                    printf(" %d",i);
                }
            }
        }
        x=0;
        printf("\n");
    }
    return 0;
}
总结:
    对于这次的作业,对于格式与结果的要求极为严格,例如对于数间有空格,却不能在其他地方有空格,而对于其他的结果而言,对于格式大多都有要求,而且在做题过程中,有时需要找到规律,甚至使用一些函数,而这时,则显现出我的数学对于逻辑推理能力的缺失,对一些题目甚至很难找出其规律,还有就是算法的优化问题,对于有些题目,并不能直接进行运算,而是需要使用一些方法,比如上台阶,比如蜜蜂问题,都需要找到其规律,然后进行解题。对于此次作业加强了我的规格理念,同时更领略到了c语言的魅力。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值