sdut-程序设计基础Ⅰ-23级转专业期末测试
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
作者 陈越
单位 浙江大学

兰州牛肉面是历史悠久的美食,根据牛肉面的宽窄、配料的种类,可以细分为上百个不同的品种。你进到兰州的任何一家牛肉面馆,只说:“来一碗牛肉面!”就好像进到加州的咖啡馆说“来一杯咖啡”一样,会被店主人当成外星人……
本题的任务是,请你写程序帮助一家牛肉面馆的老板统计一下,他们一天卖出各种品种的牛肉面有多少碗,营业额一共有多少。
输入格式:
输入第一行给出一个正整数 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;
}
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)