SDUT-程序设计基础Ⅰ-单元测试3

1-1 sdut-C语言实验 – 杨辉三角

任务描述:

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

上面的图形熟悉吗?它就是我们中学时候学过的杨辉三角。输入数据包含多组测试数据。每组测试数据的输入只有一个正整数n(1≤n≤30),表示将要输出的杨辉三角的层数。输入以0结束。对应于每一个输入,请输出相应层数的杨辉三角,每一层的整数之间用一个空格隔开,每一个杨辉三角后面加一个空行。

函数接口定义:

void yh_tri(int (*a)[30],int n);
void yh_output(int (*a)[30],int n);

例如:其中 an 都是用户传入的参数。 a 的值为二维数组的首地址; n 是[1, 30]区间内的个位数。函数无返回。

裁判测试程序样例:

#include <stdio.h>
#define MAXN 10

int search( int list[], int n, int x );
    
int main()
{
    int i, index, n, x;
    int a[MAXN];

    scanf("%d", &n);
    for( i = 0; i < n; i++ )
        scanf("%d", &a[i]);
    scanf("%d", &x);
    index = search( a, n, x );
    if( index != -1 )
        printf("index = %d\n", index);
    else
        printf("Not found\n");
            
    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

2
3
0

输出样例:

1
1 1
1
1 1
1 2 1

相关限制:

代码长度限制16KB            时间限制400ms            内存限制64MB            栈限制8192KB

答案:

void yh_tri(int (*a)[30],int n)
{
    int i,j;
    for(i=1; i<=n; i++)
    {
        for(j=1; j<=i; j++)
        {
            if( i==j||j==1)
               a[i][j]=1;
            else
                a[i][j]=a[i-1][j-1]+a[i-1][j];
        }
    }
}
void yh_output(int (*a)[30],int n)
{
    int i,j;
    for(i=1; i<=n; i++)
    {
        for(j=1; j<=i; j++)
        {
            if(j==i)
            {
                printf("%d\n",a[i][j]);
            }
            else
                printf("%d ",a[i][j]);
        }
    }
}

1-2 sdut-C语言实验- 在数组中查找指定元素

任务描述:

本题要求实现一个在数组中查找指定元素的简单函数。

函数接口定义:

int search( int list[], int n, int x );

其中list[]是用户传入的数组;n)是list[]中元素的个数;x是待查找的元素。如果找到

则函数search返回相应元素的最小下标(下标从0开始),否则返回

裁判测试程序样例:

#include <stdio.h> 
#define MAXN 10

int search( int list[], int n, int x );
    
int main()
{
    int i, index, n, x;
    int a[MAXN];

    scanf("%d", &n);
    for( i = 0; i < n; i++ )
        scanf("%d", &a[i]);
    scanf("%d", &x);
    index = search( a, n, x );
    if( index != -1 )
        printf("index = %d\n", index);
    else
        printf("Not found\n");
            
    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

5
1 2 2 5 4
2

输出样例:

index = 1

相关限制:

代码长度限制16KB            时间限制400ms            内存限制64MB            栈限制8192KB

答案:

int search( int list[], int n, int x )
{
    int i;
    for(i=0;i<n;i++)
    {
        if(list[i]==x)
        {
           return i;
        }
    }
    return -1;
}

1-3 sdut-C语言实验-使用函数验证哥德巴赫猜想

任务描述:

本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和。素数就是只能被1和自身整除的正整数。输入一个不小于6的偶数n,找出两个素数,使它们的和为n。注意:1不是素数,2是素数。

函数接口定义:

int isPrime( int x );
void Goldbach( int n );

其中函数isPrime当用户传入参数x为素数时返回1,否则返回0;函数Goldbach按照格式“n=p+q”输出n的素数分解,其中p≤q均为素数。又因为这样的分解不唯一(例如24可以分解为5+19,还可以分解为7+17),要求必须输出所有解中p最小的解。

裁判测试程序样例:

#include<stdio.h> 
int isPrime( int x );
void Goldbach( int n );
int main()
{
    int n;
    scanf("%d",&n);
    if(n%2==0)
        Goldbach( n );
    return 0;
}

/* 请在这里填写答案 */

输入样例:

80

输出样例:

80=7+73

相关限制:

代码长度限制16KB            时间限制400ms            内存限制64MB            栈限制8192KB

答案:

int isPrime( int x )
{
    int i;
    if(x==1)
        return 0;
    for(i=2;i<x;i++)
    {
        if(x%i==0)
        {

            return 0;
        }
    }
    return 1;
}
void Goldbach( int n )
{
    int i;
    for(i=0;i<n;i++)
    {
        if(isPrime(i)&&isPrime(n-i))
          {
              printf("%d=%d+%d",n,i,n-i);
              break;
          }
    }
}

1-4 sdut-C语言实验-计算组合数

任务描述:

给出两个数 n, m。求

1.png


2.png


计算公式:

3.png

输入数据有多组(数据组数不超过 250),到 EOF 结束。对于每组数据,输入两个用空格隔开的整数 n, m (0 <= m <= n <= 20) 。对于每组数据输出一行,
1.png


2.png

,用空格隔开。提醒:因为n!和 m! 数据较大,定义数据类型应用 long long int,输出格式%lld

函数接口定义:

long long int f(long long int n);

其中 n 是用户传入的参数。函数须返回n!的值。

裁判测试程序样例:

#include <stdio.h>
long long int f(long long int n);
int main()
{
    long long int n,m,i;
    while(~scanf("%lld %lld",&n,&m))
    {
        long long int a,c;
        a=f(n)/f(n-m);
        c=f(n)/f(n-m)/f(m);
        printf("%lld %lld\n",a,c);
    }
    return 0;
}

/* 请在这里填写答案 */

输入样例:

1 1
5 3
4 3

输出样例:

1 1
60 10
24 4

相关限制:

代码长度限制16KB            时间限制400ms            内存限制64MB            栈限制8192KB

答案:

long long int f(long long int n)
{
    int i;
    if(n==0||n==1)
        return 1;
    else
    return n*f(n-1);

}

1-5 sdut-C语言实验-字符串逆序

任务描述:

将一个字符串str的内容颠倒过来,并输出。str的长度不超过100个字符。

输入格式:

输入包括一行。第一行输入的字符串。

输出格式:

输出转换好的逆序字符串。

输入样例:

I am a student

输出样例:

tneduts a ma I

相关限制:

代码长度限制16KB            时间限制400ms            内存限制64MB            栈限制8192KB

答案:

#include <stdio.h>
#include 
int main ()
{
    char s[101];
    int i,l;
    gets(s);
    l=strlen(s);
    for(i=l-1;i>=0;i--)
    {
        printf("%c",s[i]);
   } 
   return 0;
}

1-6 sdut-C语言实验- 全字母句

任务描述:

全字母句 (pangram) 指包含字母表中全部 26 种英文字母(不区分大小写)的句子,其常被用于展示英文字体的显示效果。要求输入多个句子,请编程判断哪些句子是全字母句。

输入格式:

输入数据有多组(数据组数不超过 100)。

每组数据包含一行长度不超过 100 的字符串。

输出格式:

对于每组数据,输出一行。

如果是全字母句则输出 “Yes”,否则输出 “No”(不包括引号)。

输入样例:

在这里给出一组输入。例如:

The quick brown fox jumps over the lazy dog.
The 6th ACM Funny Programming For/While Contest

输出样例:

在这里给出相应的输出。例如:

Yes
No

相关限制:

代码长度限制16KB            时间限制400ms            内存限制64MB            栈限制8192KB

答案:

#include <stdio.h>
int main ()
{
    char s[101];
    int i,j,k;
    while(gets(s))
    {
        k=0;
        for(i=0;s[i]!='\0';i++)
        {
            if(s[i]>='A'&&s[i]<='Z')
                s[i]+=32;
        }
        for(j='a';j<='z';j++)
        {
           for(i=0;s[i]!='\0';i++)
            {
                if(s[i]==j)
                {
                    k++;
                    break;
                }
            }
        }
        if(k==26)
        {
            printf("Yes\n");
        }
        else
            printf("No\n");
    }
   return 0;
}

1-7 sdut – C语言实验-保留字母

任务描述:

编一个程序,输入一个允许带空格的字符串,将组成字符串的所有非英文字母的字符删除后输出。

输入格式:

一个字符串,长度不超过80个字符。

输出格式:

删掉非英文字母后的字符串。

输入样例:

在这里给出一组输入。例如:

abc123+xyz.5

输出样例:

在这里给出相应的输出。例如:

abcxyz

相关限制:

代码长度限制16KB            时间限制400ms            内存限制64MB            栈限制8192KB

答案:

#include <stdio.h>
int main ()
{
    char s[81];
    int i;
    gets(s);
    for(i=0;s[i]!='\0';i++)
    {
        if((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z'))
        {
            printf("%c",s[i]);
        }
    }
   return 0;
}

1-8 sdut-C语言实验- 虎子认识新朋友之字符串排序

任务描述:

虎子寒假加入了一个实验室,认识了3个新同学,他决定将同学的名字按字母顺序存储到自己的电子通讯录上。你知道如何编程实现吗?请编程实现:输入3个字符串,按字典序从小到大进行排序。

输入格式:

输入数据有一行,分别为3个字符串,用空格分隔,每个字符串长度不超过100。

输出格式:

输出排序后的三个字符串,用空格分隔。

输入样例:

在这里给出一组输入。例如:

abcd cdef bcde

输出样例:

在这里给出相应的输出。例如:

abcd bcde cdef

相关限制:

代码长度限制16KB            时间限制400ms            内存限制64MB            栈限制8192KB

答案:

#include <stdio.h>
#include <string.h>
int main ()
{
   char a[3][101],t[101];
   int i,j;
   for(i=0;i<3;i++)
   {
       scanf("%s",a[i]);
   }
   for(i=0;i<2;i++)
   {
       for(j=0;j<2-i;j++) { if(strcmp(a[j],a[j+1])>0)
           {
               strcpy(t,a[j]);
                strcpy(a[j],a[j+1]);
                 strcpy(a[j+1],t);
           }
       }
   }
   for(i=0;i<2;i++)
   {
       printf("%s ",a[i]);
   }
   printf("%s",a[i]);
   return 0;
}
如果对您有帮助的话,能否支持一下博主?
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇