C语言 函数题(二)

6-7 分类统计字符个数

本题要求实现一个函数,统计给定字符串中英文字母、空格或回车、数字字符和其他字符的个数。

函数接口定义:

voidStringCount( char s[] );

其中 char s[] 是用户传入的字符串。函数StringCount须在一行内按照

letter = 英文字母个数, blank = 空格或回车个数, digit = 数字字符个数, other = 其他字符个数

的格式输出。

裁判测试程序样例:

#include<stdio.h>#define MAXS 15voidStringCount( char s[] );
voidReadString( char s[] ); /* 由裁判实现,略去不表 */intmain(){
char s[MAXS];
    ReadString(s);
    StringCount(s);
return0;
}
/* Your function will be put here */

输入样例:

aZ &
09 Az

输出样例:

letter = 4, blank = 3, digit = 2, other = 1
void StringCount( char s[] )
{
    int letter=0,blank=0,digit=0,other=0;
    for(int i=0;i<=s[i];i++)
    {
        if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z') 
            letter++;
        else if(s[i]==' '||s[i]=='\n') 
            blank++;
        else if(s[i]>='0'&&s[i]<='9') 
            digit++;
        else 
            other++;
    }
    printf("letter = %d, blank = %d, digit = %d, other = %d\n",
           letter,blank,digit,other);
}

6-8 在数组中查找指定元素

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

函数接口定义:

intsearch( intlist[], int n, int x );

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

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

裁判测试程序样例:

#include<stdio.h>#define MAXN 10intsearch( intlist[], int n, int x );
intmain(){
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);
elseprintf("Not found\n");
return0;
}
/* 你的代码将被嵌在这里 */

输入样例1:

5
1 2 2 5 4
2

输出样例1:

index = 1

输入样例2:

5
1 2 2 5 4
0

输出样例2:

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

6-9 数组循环右移

本题要求实现一个对数组进行循环右移的简单函数:一个数组a中存有n(>0)个整数,将每个整数循环向右移m(≥0)个位置,即将a中的数据由(a0a1⋯an−1)变换为(anman−1a0a1⋯anm−1)(最后m个数循环移至最前面的m个位置)。

函数接口定义:

voidArrayShift( int a[], int n, int m );

其中a[]是用户传入的数组;n是数组的大小;m是右移的位数。函数ArrayShift须将循环右移后的数组仍然存在a[]中。

裁判测试程序样例:

#include<stdio.h>#define MAXN 10voidArrayShift( int a[], int n, int m );
intmain(){
int a[MAXN], n, m;
int i;
scanf("%d %d", &n, &m);
for ( i = 0; i < n; i++ ) scanf("%d", &a[i]);
    ArrayShift(a, n, m);
for ( i = 0; i < n; i++ ) {
if (i != 0) printf(" ");
printf("%d", a[i]);
    }
printf("\n");
return0;
}
/* 你的代码将被嵌在这里 */

输入样例:

6 2
1 2 3 4 5 6

输出样例:

5 6 1 2 3 4
//方法一
 
void ArrayShift( int a[], int n, int m )
{
    int i;
    int b[n];
    for(i=0;i<n;i++)
        b[(i+m)%n]=a[i];
    for(i=0;i<n;i++)
        a[i]=b[i];
}
//方法二

void ArrayShift( int a[], int n, int m )
{
    int mid;
    
    for(int j=0;j<m;j++)
    {
        mid=a[n-1];
        for(int i=n-1;i>0;i--)
        {
            a[i]=a[i-1];
        }
        a[0]=mid;
     }
}

6-10 使用函数判断完全平方数

本题要求实现一个判断整数是否为完全平方数的简单函数。

函数接口定义:

intIsSquare( int n );

其中n是用户传入的参数,在长整型范围内。如果n是完全平方数,则函数IsSquare必须返回1,否则返回0。

裁判测试程序样例:

#include<stdio.h>#include<math.h>intIsSquare( int n );
intmain(){
int n;
scanf("%d", &n);
if ( IsSquare(n) ) printf("YES\n");
elseprintf("NO\n");
return0;
}
/* 你的代码将被嵌在这里 */

输入样例1:

90

输出样例1:

NO

输入样例2:

100

输出样例2:

YES
int IsSquare( int n )
{
    if((int)sqrt(n)==sqrt(n))
        return 1;
    else
        return 0;
}
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值