6-1 直角三角形(右下)(嵌套循环)

分数 10

作者 李祥

单位 湖北经济学院

请编写函数,显示直角三角形(右下)。

函数原型

void DnRtTrg(int height, char symbol);

说明:参数 height 为自然数,symbol 为显示字符。函数将输出高度和底宽为 height 由字符 symbol 组成的直角三角形(右下)。

裁判程序

#include <stdio.h>

void DnRtTrg(int height, char symbol);

int main()

{

int n;

char s;

scanf("%d %c", &n, &s);

DnRtTrg(n, s);

putchar('\n');

return 0;

}

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

要求:用循环方法完成函数的设计,不得使用选择语句。

输入样例

5 *

输出样例

*****

****

***

**

*

实现代码:

void DnRtTrg(int height, char symbol){
    for(int i=1;i<=height;i++){
        for(int j=1;j<=height+1-i;j++){
            printf("%c",symbol);
        }
        printf("\n");
    }
}

6-2 函数定义:求裴波那切数列n项和

分数 9

作者 叶青

单位 长春理工大学

裴波那切数列:1,1,2,3,5,8...
顶哟函数 fun(n) 求前n项的和

函数接口定义:

int fun ( int n )

n是正整数,如果n<=0,函数返回值是0,如果n>0,函数返回值是数列前n项和

裁判测试程序样例:

在这里给出函数被调用进行测试的例子。例如:

#include <stdio.h>

int fun ( int n );

int main()

{

int N;

scanf("%d", &N);

printf("%d", fun(N));

return 0;

}

/* 只定义函数fun,不要重复定义main函数 */

输入样例1:

5

输出样例1:

12

输入样例2:

2

输出样例2:

2

 实现代码:

int  fun ( int  n ){
    int a[10000];
    a[1]=1;a[2]=1;
        for(int i=3;i<=n;i++){
            a[i]=a[i-1]+a[i-2];
        }
    int sum=0;
    for(int i=1;i<=n;i++){
        sum=sum+a[i];
    }
	if(n==1) return 1;
    else if(n==2) return 2;
	else if(n<=0) return 0;
    else return sum;
}
/*
4  +3  
3 
*/

7-1 判断闰年

分数 10

作者 lyj

单位 福州大学至诚学院

请编写一个程序判断某年是否是闰年,闰年的判断条件为:能被400整除或能被4整除但不能被100整除。

输入格式:

一行输入

输出格式:

如果是闰年,请输出”……是闰年“;如果不是闰年,则输出”……不是闰年“

输入样例1:

2019

输出样例1:

2019不是闰年

输入样例2:

2000

输出样例2:

2000是闰年

 实现代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n;
	cin>>n;
	if(n%400==0||n%4==0&&n%100!=0)
	cout<<n<<"是闰年";
	else cout<<n<<"不是闰年" ;
	
	
	
	
	return 0;
}

7-2 判断素数

分数 10

作者 陈越

单位 浙江大学

本题的目标很简单,就是判断一个给定的正整数是否素数。

输入格式:

输入在第一行给出一个正整数N(≤ 10),随后N行,每行给出一个小于231的需要判断的正整数。

输出格式:

对每个需要判断的正整数,如果它是素数,则在一行中输出Yes,否则输出No

输入样例:

2

11

111

输出样例:

Yes

No

 实现代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
	int  n;
	cin>>n;
    if(n<=0) return 0;
	for(int i=1;i<=n;i++){
		long long m;
		cin>>m;
		if(m<=1){
			cout<<"No"<<endl;
			continue;
		}
		bool f=0;
		for(long long j=2;j*j<=m;j++){
			if(m%j==0){
			f=1;
			}
		}
		
		if(f==0) cout<<"Yes"<<endl;
		else cout<<"No"<<endl;
	}
	
	
	
	
	return 0;
}

7-3 兰州牛肉面

分数 15

作者 陈越

单位 浙江大学

lamian.png

兰州牛肉面是历史悠久的美食,根据牛肉面的宽窄、配料的种类,可以细分为上百个不同的品种。你进到兰州的任何一家牛肉面馆,只说:“来一碗牛肉面!”就好像进到加州的咖啡馆说“来一杯咖啡”一样,会被店主人当成外星人……
本题的任务是,请你写程序帮助一家牛肉面馆的老板统计一下,他们一天卖出各种品种的牛肉面有多少碗,营业额一共有多少。

输入格式:

输入第一行给出一个正整数 N(≤100),为牛肉面的种类数量。这里为了简单起见,我们把不同种类的牛肉面从 1 到 N 编号,以后就用编号代替牛肉面品种的名称。第二行给出 N 个价格,第 i 个价格对应第 i 种牛肉面一碗的单价。这里的价格是 [0.01, 200.00] 区间内的实数,以元为单位,精确到分。
随后是一天内客人买面的记录,每条记录占一行,格式为:

品种编号 碗数

其中碗数保证是正整数。当对应的 品种编号0 时,表示输入结束。这个记录不算在内。

输出格式:

首先输出 N 行,第 i 行输出第 i 种牛肉面卖出了多少碗。最后一行输出当天的总营业额,仍然是以元为单位,精确到分。题目保证总营业额不超过 106。

输入样例:

5

4.00 8.50 3.20 12.00 14.10

3 5

5 2

1 1

2 3

2 2

1 9

0 0

输出样例:

10

5

5

0

2

126.70

 实现代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;
    cin>>n;
    double a[110];
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    double sum=0;
    int y,z;
    int b[110]={0};
    while(cin>>y>>z&&y!=0){
        for(int i=1;i<=n;i++){
            if(i==y){
                b[y]=b[y]+z;
                sum=sum+a[y]*z;
            }
        }
    }
    for(int i=1;i<=n;i++){
        cout<<b[i]<<endl;
    }
    printf("%.2lf",sum);
    return 0;
}

7-4 sdut-C语言实验- 鞍点计算

分数 16

作者 马新娟

单位 山东理工大学

找出具有m行n列二维数组Array的“鞍点”,即该位置上的元素在该行上最大,在该列上最小,其中1<=m,n<=10。同一行和同一列没有相同的数。

输入格式:

输入数据有多行,第一行有两个数m和n,下面有m行,每行有n个数。

输出格式:

按下列格式输出鞍点:

Array[i][j]=x

其中,x代表鞍点,i和j为鞍点所在的数组行和列下标,我们规定数组下标从0开始。

一个二维数组并不一定存在鞍点,此时请输出None。

我们保证不会出现两个鞍点的情况,比如:

3 3
1 2 3
1 2 3
3 6 8

输入样例:

3 3

1 2 3

4 5 6

7 8 9

输出样例:

Array[0][2]=3

 实现代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
    int a[15][15];
    int m,n;
    cin>>m>>n;
    for(int i=1;i<=m;i++){
        for(int j=1;j<=n;j++){
            cin>>a[i][j];
        }
    }
    int b[15],y;
    for(int i=1;i<=m;i++){
        int max=0;
        for(int j=1;j<=n;j++){
            if(max<a[i][j]){
                max=a[i][j];
                b[i]=j;
                y=j;
            }
        }
    }
    for(int i=1;i<=m-1;i++){
        if(b[i]!=b[i+1]){
            cout<<"None";
            return 0;
        }
        else int t=b[1];
    }
    int min=1000000;
    int z;
    for(int i=1;i<=m;i++){
        if(a[i][y]<min){
            min=a[i][y];
            z=i;
        }
    }
    cout<<"Array["<<z-1<<"]["<<y-1<<"]="<<min;
    return 0;
}

7-5 开关灯

分数 15

作者 于延

单位 哈尔滨师范大学

任务描述

假设有N盏灯(N为不大于5000的正整数),从1到N按顺序依次编号,初始时全部处于开启状态;有M个人(M为不大于N的正整数)也从1到M依次编号。
第一个人(1号)将灯全部关闭,第二个人(2号)将编号为2的倍数的灯打开,第三个人(3号)将编号为3的倍数的灯做相反处理(即,将打开的灯关闭,将关闭的灯打开)。依照编号递增顺序,以后的人都和3号一样,将凡是自己编号倍数的灯做相反处理。
请问:当第M个人操作之后,哪几盏灯是关闭的,按从小到大输出其编号,其间用逗号间隔。

输入格式:

输入正整数N和M,以单个空格隔开。

输出格式:

顺次输出关闭的灯的编号,其间用逗号间隔。

输入样例:

10 10

输出样例:

1,4,9

题目来源

该题目选自OpenJudge网站,在线网址:http://noi.openjudge.cn/ch0104/31/

 实现代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,m;
    cin>>n>>m;
    int a[5050];
    for(int i=1;i<=n;i++) a[i]=1;
        for(int j=1;j<=m;j++){
            for(int i=1;i<=n;i++){
                if(i%j==0) a[i]=-1*a[i];
            }
           
    }
    cout<<1;
    for(int i=2;i<=n;i++){
        if(a[i]==-1) cout<<","<<i;
    }
    return 0;
}

7-6 统计单词的个数

分数 15

作者 陈春晖

单位 浙江大学

输入一行字符,以回车结束,统计其中单词的个数。单词是中间没有空格的字符序列,各单词之间用空格分隔,单词间空格数可以是多个。

输入格式:

在一行中输入字符

输出格式:

在一行中输出单词的数量

输入样例:

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

Let's go to room 209

输出样例:

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

count = 5

 实现代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
    char a[10000];
    cin.getline(a,10000);
    int len=strlen(a);
    a[len]=' ';
    int k=0;
    for(int i=0;i<len;i++){
        if(a[i]!=' '&&a[i+1]==' ') k++;
    }

    cout<<"count = "<<k;
    return 0;
}
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐