C语言经典编程题100例(61~80)

目录

  • 61、练习7-7 矩阵运算

  • 62、练习7-8 方阵循环右移

  • 63、习题6-1 分类统计字符个数

  • 64、习题6-2 使用函数求特殊a串数列和

  • 65、习题6-4 使用函数输出指定范围内的Fibonacci数

  • 66、习题6-5 使用函数验证哥德巴赫猜想

  • 67、习题6-6 使用函数输出一个整数的逆序数

  • 68、练习8-2 计算两数的和与差

  • 69、练习7-9 计算天数

  • 70、练习7-10 查找指定字符

61、练习7-7 矩阵运算


给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。

输入格式:

输入第一行给出正整数n(1<n≤10);随后n行,每行给出n个整数,其间以空格分隔。

输出格式:

在一行中给出该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。

输入样例:

4
2 3 4 1
5 6 1 1
7 1 8 1
1 1 1 1

输出样例:

35

代码:

#include<stdio.h>
int main()
{
    int n;
    int arr[11][11];
    scanf("%d",&n);
    int i,j;
    int sum=0;
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            scanf("%d",&arr[i][j]);
            sum+=arr[i][j];   //全部数据相加
        }
    }
    for(i=0;i<n;i++)
    {
        sum-=arr[i][n-1];  //减去最后一列
        sum-=arr[n-1][i];  //减去最后一行
    }
    sum+=arr[n-1][n-1];   //元素arr[n-1][n-1]被减两次,因此加一次
    int l=n-1;
    for(i=0;i<n;i++)
    {
        sum-=arr[i][l];   //减去副对角线上的元素
        l--;
    }
    sum+=arr[0][n-1];    //元素arr[0][n-1]被减两次,因此加一次
    sum+=arr[n-1][0];    //元素arr[n-1][0]被减两次,因此加一次
    printf("%d\n",sum);
    return 0;
}

62、练习7-8 方阵循环右移


本题要求编写程序,将给定n×n方阵中的每个元素循环向右移m个位置,即将第0、1、⋯、n−1列变换为第n−m、n−m+1、⋯、n−1、0、1、⋯、n−m−1列。

输入格式:

输入第一行给出两个正整数m和n(1≤n≤6)。接下来一共n行,每行n个整数,表示一个n阶的方阵。

输出格式:

按照输入格式输出移动后的方阵:即输出n行,每行n个整数,每个整数后输出一个空格。

输入样例:

2 3
1 2 3
4 5 6
7 8 9

输出样例:

2 3 1
5 6 4
8 9 7

代码:

#include<stdio.h>
int main()
{
    int m,n;
    scanf("%d %d",&m,&n);
    int i,j;
    int arr[7][7];
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            scanf("%d",&arr[i][j]);
        }
    }
    int k;
    int index;
    for(k=1;k<=m;k++)
    {
        for(i=0;i<n;i++)
        {
            index=arr[i][n-1];
            for(j=n-1;j>0;j--)
            {
                arr[i][j]=arr[i][j-1];
            }
            arr[i][j]=index;
        }
    }
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
           printf("%d ",arr[i][j]);
        }
        printf("\n");
    }
    return 0;
}

63、习题6-1 分类统计字符个数


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

函数接口定义:

void StringCount( char s[] );

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

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

的格式输出。

裁判测试程序样例:

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

输入样例:

aZ &
09 Az

输出样例:

letter = 4, blank = 3, digit = 2, other = 1

代码:

void StringCount( char s[] )
{
    int i;
    int letter=0;
    int blank=0;
    int digit=0;
    int other=0;
    for(i=0;i<strlen(s);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);
}

64、习题6-2 使用函数求特殊a串数列和


给定两个均不超过9的正整数a和n,要求编写函数求a+aa+aaa++⋯+aa⋯a(n个a)之和。

函数接口定义:

int fn( int a, int n ); int SumA( int a, int n );

其中函数fn须返回的是n个a组成的数字;SumA返回要求的和。

裁判测试程序样例:

  • 2
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值