6-1 sdut-C语言实验-老师在哪里(字符串查找)
2023年是令人难忘的一年,这一年我们终于打败了新冠,人们重新自由地生活。对于山东理工大学计算机学院来说,又迎来了一群可爱的新生,他们龙腾虎跃,积极投入到了大学的学习生活。大一的第一门专业课是《程序设计基础》,给他们上课的老师分别是MaXinjuan、LiuShushu、Tianaikui、JiangGuihong、YuXiao、SunYong、LiXinxin。现在要求把老师们的名字升序排序,并找出自己的老师的位置。
函数接口定义:
void Sort_Tea ( char *p[], int n );
其中 数组p 是接收用户传过来的地址参数,n为指针数组的长度 。
裁判测试程序样例:
▾
▾
▾
#include <stdio.h>
#include<string.h>
int main()
{
int i,k;
char *ptr[7]= {"MaXinjuan","LiuShushu","Tianaikui","JiangGuihong","YuXiao","SunYong","LiXinxin"};
char myTeacher[20];
Sort_Tea(ptr,7);
scanf("%s",myTeacher);
for(i=0; i<7; i++)
{
if(strcmp(myTeacher,ptr[i])==0)
{
k=i;
break;
}
}
printf("%d",k);
return 0;
}
/* 请在这里填写答案 */
输入样例:
MaXinjuan
输出样例:
3
实现代码:
cpp
void Sort_Tea ( char *p[], int n ){
char *temp;
for(int i=0;i<n-1;i++){
for(int j=0;j<n-i-1;j++){
if(strcmp(p[j],p[j+1])>0){
temp=p[j];
p[j]=p[j+1];
p[j+1]=temp;
}
}
}
}
6-2 sdut-C语言实验-合数分解(选做)
分数 12
作者 马新娟
单位 山东理工大学
把一个合数分解成若干个质因数乘积的形式(即求质因数的过程)叫做分解质因数。分解质因数(也称分解素因数)只针对合数。输入一个正整数n,将n分解成质因数乘积的形式。
函数接口定义:
void primeFac(int n) ;
'n'是用户传入的参数。 n 值的范围2到20000。
裁判测试程序样例:
▾
#include <stdio.h>
void primeFac(int n) ;
int main()
{
int num;
scanf("%d", &num);
primeFac(num);
return 0;
}
/* 请在这里填写答案 */
输入样例1:
20000
输出样例1:
20000=2*2*2*2*2*5*5*5*5
输入样例2:
369
输出样例2:
369=3*3*41
实现代码:
cpp
void primeFac(int n){
printf("%d=",n);
while(n!=1){
int i;
for(i=2;i<=n;i++){
if(n%i==0){
printf("%d",i);
n=n/i;
if(n!=1) printf("*");
break;
}
}
}
}
6-3 sdut-C语言实验-交换两个整数(函数)
分数 12
作者 马新娟
单位 山东理工大学
本题要求实现一个函数,可实现两个整数的交换,不需要返回。
函数接口定义:
void swap( int *p1, int *p2);
其中 p1和 p2 都是用户传入的参数,接受地址。
裁判测试程序样例:
▾
#include <stdio.h>
void swap( int *p1, int *p2);
int main()
{
int x, y;
int *p1,*p2;
scanf("%d %d", &x, &y);
p1=&x;
p2=&y;
swap(p1,p2);
printf("x=%d,y=%d", x,y);
return 0;
}
/* 请在这里填写答案 */
输入样例:
21 2
输出样例:
x=2,y=21
实现代码:
cpp
void swap( int *p1, int *p2){
int t=*p1;
*p1=*p2;
*p2=t;
}
7-1 sdut-C语言实验-幸福其实很简单
分数 12
作者 马新娟
单位 山东理工大学
人间总有一两风,填我十万八千梦。元旦前后,SDUT很多班级组织包饺子的活动,这让大一学子倍感幸福。现在请编写一个程序,输入饺子数和班级人数,如果饺子数恰好是人数的倍数,则输出"HAPPY NEW YEAR",否则输出"Who can eat the rest of the dumplings?"。
输入格式:
输入两个整数,分别表示饺子数和班级人数。
输出格式:
根据饺子数是否为人数的倍数输出相应结果。
输入样例:
400 20
输出样例:
HAPPY NEW YEAR
实现代码:
cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
int m,n;
cin>>m>>n;
if(m%n==0) cout<<"HAPPY NEW YEAR";
else cout<<"Who can eat the rest of the dumplings?";
return 0;
}
7-2 sdut-C语言实验-计算油费
分数 13
作者 马新娟
单位 山东理工大学
已经大四的龙龙,目前在外实习。很有规划的他用自己的工资买了一辆二手车,计划元旦期间贵州自驾游。要行万里路,得先加油。现在90号汽油6.95元/升、93号汽油7.44元/升、97号汽油7.93元/升。为吸引顾客,某自动加油站推出了"自助服务"和"协助服务"两个服务等级,分别可得到5%和3%的折扣。
本题要求编写程序,根据输入龙龙的加油量a,汽油品种b(90、93或97)和服务类型c(m - 自助,e - 协助),计算并输出龙龙加油的应付款。如果输入的油号不是这三类的一种,则输出"The input should be 90 or 93 or 97."。(题目来源:浙江大学 颜晖老师)
输入格式:
输入在一行中给出两个整数和一个字符,分别表示顾客的加油量a,汽油品种b(90、93或97)和服务类型c(m - 自助,e - 协助)。
输出格式:
在一行中输出应付款额,保留小数点后2位。
输入样例:
40 97 m
输出样例:
在这里给出相应的输出。例如:
301.34
实现代码:
cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
int m,n;
char ch;
cin>>m>>n;
cin>>ch;
if(ch=='m'){
if(n==90) printf("%.2lf",m*6.95*0.95);
else if(n==93) printf("%.2lf",m*7.44*0.95);
else if(n==97) printf("%.2lf",m*7.93*0.95);
else return 0;
}
else if(ch=='e'){
if(n==90) printf("%.2lf",m*6.95*0.97);
else if(n==93) printf("%.2lf",m*7.44*0.97);
else if(n==97) printf("%.2lf",m*7.93*0.97);
else return 0;
}
return 0;
}
7-3 sdut-C语言实验-统计元音个数
分数 13
作者 马新娟
单位 山东理工大学
英文元音字母包括A(a)、E(e)、I(i)、O(o)、U(u)。本题要求编写程序,统计给定字符串中元音字母的个数。
多个字符串输入结束循环判断的条件为:while(gets(数组名)!=NULL)
输入格式:
输入多个不超过80个字符的字符串,每个字符串输入后以回车结束。
输出格式:
按格式输出每个字符串中元音字母的个数。
输入样例1:
I Love C !
I will continue to study hard next term.
输出样例1:
3
11
输入样例1:
Good health and kind character are the most important.
输出样例1:
16
代码长度限制
实现代码:
cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
char a[88];
while(cin.getline(a,88)){
int len=strlen(a);
int sum=0;
for(int i=0;i<len;i++){
if(a[i]=='a'||a[i]=='A'||a[i]=='e'||a[i]=='E'||a[i]=='i'||a[i]=='I'||a[i]=='o'||a[i]=='O'||a[i]=='u'||a[i]=='U')
sum++;
}
cout<<sum<<endl;
}
return 0;
}
7-4 sdut-C语言实验-顺序查找
分数 13
作者 马新娟
单位 山东理工大学
输入n个正整数(1<= n <= 100),查找n个数中是否存在数x。如果存在则返回第一次出现的下标,否则输出"NO"。
输入格式:
第一行输入n,然后输入n个正整数。
第二行输入x。
输出格式:
如果数列中存在x则输出其下标,否则输出"NO"。
输入样例1:
10 7 0 9 4 3 8 2 1 5 4
6
输出样例1:
NO
输入样例2:
5 8 7 8 3 9
8
输出样例2:
0
实现代码:
cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int a[111];
for(int i=0;i<n;i++){
cin>>a[i];
}
int x;
cin>>x;
for(int i=0;i<n;i++){
if(a[i]==x){
cout<<i;
return 0;
}
}
cout<<"NO";
return 0;
}
7-5 sdut-C语言实验-去掉重复的数据
分数 12
作者 马新娟
单位 山东理工大学
给定含有n个整数的序列,要求对这个序列进行去重操作。所谓去重,是指对这个序列中每个重复出现的数,只保留该数第一次出现的位置,删除其余位置。(题目来源:teacher 刘)
输入格式:
输入包含两行:第一行包含一个正整数n(1≤n≤20000),表示第二行序列中数字的个数;第二行包含n个整数,整数之间以一个空格分开。每个整数大于等于10、小于等于5000。
输出格式:
输出去重之后的数据,数据之间用空格间隔。
输入样例1:
5
10 12 93 12 75
输出样例1:
10 12 93 75
输入样例2:
10
21 30 14 55 32 63 11 30 55 30
输出样例2:
21 30 14 55 32 63 11
实现代码:
cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int a[20020];
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++){
if(a[j]==a[i]){
a[j]=0;
}
}
}
cout<<a[1];
for(int i=2;i<=n;i++){
if(a[i]!=0) cout<<" "<<a[i];
}
return 0;
}
7-6 sdut-C语言实验-谁可以获得奖学金?
分数 15
作者 马新娟
单位 山东理工大学
某班将根据英语、高数、程序设计基础三门课程的期末测试成绩颁发奖学金,三门课均在90分以上的同学可以获得。假设班级人数不超过40人,请编程输出获得奖学金的同学的序号,如果没满足条件的输出None.
输入格式:
第一行输入班级人数,后面输入全部成绩。
输出格式:
输出获得奖学金同学的序号,如有多个同学获得分行显示,如无则输出None.
输入样例:
5
90 87 98
90 99 98
67 78 89
90 60 78
91 92 95
输出样例:
1
4
实现代码:
cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int a[44][44];
for(int i=1;i<=n;i++){
for(int j=1;j<=3;j++){
cin>>a[i][j];
}
}
int x=0;
for(int i=1;i<=n;i++){
int sum=0;
for(int j=1;j<=3;j++){
if(a[i][j]>=90) sum++;
}
if(sum==3){
cout<<i-1<<endl;
x++;
}
}
if(x==0) cout<<"None.";
return 0;
}