编程

实验六:优秀代码

2016-11-29  本文已影响207人  jzh123s

A : 找好人

题目描述:
某学校有四位同学中的一位做了好事,不留名,表扬信来了之后,校长问这四位是谁做的好事。四个人的回答分别是:
A说:不是我
B说:是C
C说:是D
D说:C胡说。
已知三人说的是真话,一个人说的是假话,现在编程求出做好事的到底是谁?
优秀代码

#include <stdio.h>
 
int main()
{
    char A;
    int X;
    for(A='A';A<='D';A++)
    {
        X=(A!='A')+(A=='C')+(A=='D')+(A!='D');
        if(X==3)
            printf("%c\n",A);
    }
}

B : 输出同时是素数与回文数的数据

题目描述
输出指定范围内的同时是素数与回文数的数据,如果没有,输出“Not found”
优秀代码

#include<stdio.h>
#include<math.h>
int main()
{
    int sushu(int n);
    int huiwen(int n);
    int n,a,b,c,i;
    scanf("%d",&n);
    while(n--)
    {
        c=0;
        scanf("%d%d",&a,&b);
        for(i=a;i<=b;i++) {
            if(sushu(i)&&huiwen(i)) {
                printf("%d\n",i);
                c=1;
            }
        }
        if(c==0)
            printf("Not found\n");
    }
 
}
 
int sushu(int n)
{
    int i,flag=1;
    if(n==1 || n==0)
        flag=0;
    for(i=2;i<=sqrt(n);i++)
        if(n%i==0) {
            flag=0;
            break;
        }
    return flag;
}
 
int huiwen(int n)
{
    int p,k=0;
    p=n;
    while(p!=0)
    {
        k=k*10+p%10;
        p/=10;
    }
    if(k==n)
        return 1;
    else
        return 0;
}

点评 : 将判断素数和回文数的方法分离成了两个函数,使代码更加清晰。

C : 猴子吃桃

题目描述
猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。 到第N天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。
优秀代码

#include<stdio.h>
int main()
{
    int N,i,s=1;
    scanf("%d",&N);
    for (i=1;i<N;i++)
        s=(s+1)*2;
    printf("%d\n",s);
    return 0;
}

D : 最强字母

题目描述
在英文字母王国中,大写字母比小写字母强大。在大写字母之间按字母表顺序,越靠前越大,例如A比B大,B比C大,Z在大写字母中最小。同样小写字母之间的比较也按字母表顺序,也是越靠前越大。

要求在一个英文字母集合中,选择最强大的字母。
优秀代码

#include<stdio.h>
#include<string.h>
int main()
{
    int i=0;
    char str[100],ch;
    gets(str);    
    ch=str[0];
    for(;i<strlen(str);i++)
    {
        if(str[i] < ch) 
            ch = str[i];
    }
    printf("%c\n",ch);
    return 0;
}

点评 : 这题并不需要排序,直接找出最小值输出即可。

E : 在数组中查找元素

题目描述
定义一个大小为10的整型数组,让用户从键盘输入10个数据;然后让用户输入一个数据,在数组中查找该数据第一次出现的位置,找到了,输出该元素的下标,找不到,输出“Not found”。
优秀代码

#include <stdio.h>
 
int main()
{
    int i,n,p;
    int a[10],b;
    scanf("%d",&n);
    while(n--)
    {
        p=0;
        for(i=0;i<=9;i++)
            scanf("%d",&a[i]);
        scanf("%d",&b);
        for(i=0;i<=9;i++)
            if(b==a[i])
            {
                printf("%d\n",i);
                p=1;
            }
        if(!p) printf("Not found\n");
    }
    return 0;
}

F:数组求同

题目描述
输入两个数组(数组元素个数6和8),输出在两个数组中都出现的元素(如a[6]={2,3,4,5,6,7},b[8]={3,5,7,9,11,13,15,19},则输出3、5、7)。

优秀代码

#include <stdio.h>
 
int main()
{
    int i,j;
    int a[6],b[8];
    for(i=0;i<6;i++)
        scanf("%d",&a[i]);
    for(i=0;i<8;i++)
        scanf("%d",&b[i]);
    for(i=0;i<6;i++)
        for(j=0;j<8;j++)
            if(a[i]==b[j])
                printf("%d\n",b[j]);
    return 0;
}
上一篇下一篇

猜你喜欢

热点阅读