[Coursera C程序设计进阶]第五周

编程题#1:计算矩阵边缘元素之和

输入一个整数矩阵,计算位于矩阵边缘的元素之和。所谓矩阵边缘的元素,就是第一行和最后一行的元素以及第一列和最后一列的元素。

输入

第一行为整数k,表示有k组数据。

每组数据有多行组成,表示一个矩阵:

第一行分别为矩阵的行数m和列数n(m < 100,n < 100),两者之间以空格分隔。

接下来输入的m行数据中,每行包含n个整数,整数之间以空格作为间隔。

输出

输出对应矩阵的边缘元素和,一个一行。

#include <iostream>  
using namespace std;  
int main()  
{  
	int k,m,n;
	k=m=n=0;
	int i,j;
	i=j=0;
	int p=0;
	int x[10][100][100];
	cin>>k;
	for(i=0;i<k;i++)
	{
		cin>>m>>n;
		for(j=0;j<m;j++)
			for(p=0;p<n;p++)
				cin>>x[i][j][p];
	}
	for(i=0;i<k;i++)
	{
		int sum=0;
		for( int p=0,j=0;p<n;p++)
			sum+=x[i][j][p];
		for(j=1;j<m-1;j++)
		{	
			sum+=x[i][j][0]+x[i][j][n-1];
		}
		for(p=0,j=m-1;p<n;p++)
			sum+=x[i][j][p];
		cout<<sum<<endl;
	}
	return 0;
}


编程题#2: 二维数组右上左下遍历

给定一个row行col列的整数数组array,要求从array[0][0]元素开始,按从左上到右下的对角线顺序遍历整个数组。

输入的第一行上有两个整数,依次为row和col。

余下有row行,每行包含col个整数,构成一个二维整数数组。

(注:输入的row和col保证0 < row < 100, 0 < col < 100)

输出按遍历顺序输出每个整数。每个整数占一行。

#include <iostream>  
using namespace std;  
  
int main()  
{  
    int row = 0, rol = 0;  
    cin >> row >> col;  
    int array[100][100] = {0};  
    for (int i = 0; i < row; i++)  
    {  
        for (int j = 0; j < col; j++)  
        {  
            cin >> array[i][j];  
        }  
    }  
  
    int x = 0, y = 0;  
    for (int i = 0; i < row+col-1; i++)  
    {  
        x = i > col-1? i-col+1 : 0;  
        y = i-x;  
        while (x <= row-1 && y >= 0)  
        {  
            cout << array[x][y] << endl;  
            x++;  
            y--;  
        }  
    }  
    return 0;  
}  

编程题#3:文字排版

给一段英文短文,单词之间以空格分隔(每个单词包括其前后紧邻的标点符号)。请将短文重新排版,要求如下:

每行不超过80个字符;每个单词居于同一行上;在同一行的单词之间以一个空格分隔;行首和行尾都没有空格。

输入第一行是一个整数n,表示英文短文中单词的数目. 其后是n个以空格分隔的英文单词(单词包括其前后紧邻的标点符号,且每个单词长度都不大于40个字母)。

输出排版后的多行文本,每行文本字符数最多80个字符,单词之间以一个空格分隔,每行文本首尾都没有空格。

#include <iostream>  
#include<string.h>  
using namespace std;  
  
int main()  
{  
    int words = 0, sum = 0;  
    cin >> words;  
    char str[41]={0};  
    for (int i = 0; i < words; i++)  
    {  
        cin >> str;  
        if (sum + 1 + strlen(str) > 80)  
        {  
            cout << endl;                 
            sum = 0;          
        }   
        else if(i>0)  
        {  
            cout << " ";  
            sum++;    
        }  
        cout << str;  
        sum += strlen(str);  
    }  
    return 0;  
} 



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值