目录
7-1 三个整数排序
分数 10
作者 崔孝凤
单位 山东理工大学
从键盘上输入3个整数,按照升序排序,最后输出结果。
输入格式:
输入三个整数,中间用空格分隔。
输出格式:
输出三个整数,中间用英文逗号分隔,最后换行。
输入样例1:
1 2 3
输出样例1:
1,2,3
输入样例2:
1 3 2
输出样例2:
1,2,3
输入样例3:
2 1 3
输出样例3:
1,2,3
输入样例4:
2 3 1
输出样例4:
1,2,3
输入样例5:
3 1 2
输出样例5:
1,2,3
输入样例6:
3 2 1
输出样例6:
1,2,3
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<stdio.h>
int main()
{
int a[3],i,t=0;
for(i=0;i<3;i++)
{scanf("%d",&a[i]);}
for( i=0;i<2;i++)
{
for(int j=i+1;j<3;j++)
{
if(a[i]>a[j])
{t=a[i];a[i]=a[j];a[j]=t;}
}
}
printf("%d,%d,%d\n",a[0],a[1],a[2]);
}
7-3 求数列前n项之和
作者 陈波
单位 山东理工大学
已知数列1,1/3,1/5,1/7,…,求出其前n项之和,其中的实型变量用double类型。
输入格式:
输入n的值,n的值为1到100之间的整数。
输出格式:
以保留两位小数的形式输出数列前n项的和并换行。
输入样例:
3
输出样例:
1.53
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<stdio.h>
int main()
{
double sum=0;
int n;
scanf("%d",&n);
for(int i=1,j=1,k=1;k<=n;k++,j=(2*k)-1)
sum+=(double)i/j;
printf("%.2f\n",sum);
}
7-4 求一组数据的平均值
作者 陈波
单位 山东理工大学
输入若干个整数,以EOF作为输入结束标记,求这些数据的平均值,结果保留两位小数。其中的实型数据用double类型。
提示:在Windows系统中,输入Ctrl+Z并回车,则scanf函数的返回值为EOF。若以y=scanf("%d",&x);的形式输入,则此时y的值为EOF。
输入格式:
输入数据之间以回车作为分隔符。
输出格式:
保留两位小数。
输入样例:
121
364
7968
输出样例:
2817.67
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<stdio.h>
int main()
{
int a[100]={0},i=0;
double sum=0;
for(;scanf("%d",&a[i])!=EOF;)
{
sum+=a[i];
i++;
}
sum=sum/i;
printf("%.2f",sum);
}
7-5 输出图形
分数 10
作者 陈波
单位 山东理工大学
输入一个正整数n,输出一个按以下规律变化的n行的直角三角形,每个数据都采用6个域宽左对齐的方式显示。
输入格式:
输入一个正整数。
输出格式:
输出按规律变化的图形,每个数据都采用6个域宽左对齐的方式显示。
输入样例:
3
输出样例:
1
2 4
3 6 9
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<stdio.h>
int main()
{
int n,i,j,k;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
k=1;
for(j=i;k<=i;j=i*k)
{
printf("%-6d",j);
k++;
}
printf("\n");
}
}
7-6 一行字符变换
分数 10
作者 陈波
单位 山东理工大学
从键盘输入一行字符,以回车结束。若为小写字母,则转换为对应的大写字母;若为大写字母,则转换为对应的小写字母;其他字符保持不变。
输入格式:
输入一行字符。
输出格式:
输出变换后的一行字符。
输入样例:
How are you?
输出样例:
hOW ARE YOU?
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<stdio.h>
int main()
{
char a[100];
int i=0;
do
{
scanf("%c",&a[i]);
if(a[i]>='a'&&a[i]<='z')
{ a[i]-=32;printf("%c",a[i]);}
else if(a[i]>='A'&&a[i]<='Z')
{a[i]+=32;printf("%c",a[i]);}
else printf("%c",a[i]);
}while(a[i]!='\n');
}
7-7 sdut- C语言实验——删除指定字符
分数 10
作者 马新娟
单位 山东理工大学
从键盘输入一个字符串给str和一个字符给c,删除str中的所有字符c并输出删除后的字符串str。
输入格式:
第一行是一个字符串,不超过100个字符;
第二行是一个字符。
输出格式:
删除指定字符后的字符串。
输入样例:
在这里给出一组输入。例如:
sdf$$$sdf$$
$
输出样例:
在这里给出相应的输出。例如:
sdfsdf
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<stdio.h>
#include<string.h>
int main()
{
char a[100],c;
gets(a);
scanf("%c",&c);
int i;
for(i=0;i<strlen(a);i++)
{
if(a[i]!=c)printf("%c",a[i]);
}
}
7-35 二维数组中每行最大值和每行和
分数 10
作者 王跃萍
单位 东北石油大学
求一个3*3二维数组中每行的最大值和每行的和。
输入格式:
在一行中输入9个小于100的整数,其间各以一个空格间隔
输出格式:
输出3行3列的二维数组,并在每行后面分别输出每行最大值和每行元素的和,每个数据输出占4列。
输入样例:
3 6 5 9 8 2 1 4 5
输出样例:
3 6 5 6 14
9 8 2 9 19
1 4 5 5 10
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<stdio.h>
int main()
{
int i=0,j=0,t,k,a[3][3];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
for(i=0;i<3;i++)
{
t=0;k=0;
for(j=0;j<3;j++)
{printf("%4d",a[i][j]);
if(k<a[i][j])k=a[i][j];
t+=a[i][j];}
if(j==3){printf("%4d%4d\n",k,t);}
}
}
7-36 矩阵转置
分数 10
作者 王跃萍
单位 东北石油大学
将一个3×3矩阵转置(即行和列互换)。
输入格式:
在一行中输入9个小于100的整数,其间各以一个空格间隔。
输出格式:
输出3行3列的二维数组,每个数据输出占4列。
输入样例:
1 2 3 4 5 6 7 8 9
输出样例:
1 4 7
2 5 8
3 6 9
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<stdio.h>
int main()
{
int i=0,j=0,t,a[3][3];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{printf("%4d",a[j][i]);
if(j==2)printf("\n");}
}
7-38 二维数组元素变化
分数 10
作者 王跃萍
单位 东北石油大学
将一个二维数组a[3][3]={1,2,3,4,5,6,7,8,9}作如下处理后输出。将主对角线上的元素变为其平方,左下三角的元素变成自身乘 2,右上三角元素变成自身加3。
输出格式:
输出变化后的3行3列矩阵,每个数据占3列。
输出样例:
1 5 6
8 25 9
14 16 81
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<stdio.h>
int main()
{
int a[3][3]={1,2,3,4,5,6,7,8,9},i=0,j=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
if(i==j)a[i][j]=a[i][j]*a[i][j];
else if(i>j)a[i][j]*=2;
else a[i][j]+=3;
}
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{printf("%3d",a[i][j]);
if(j==2)printf("\n");}
}
7-39 沙漏图形
分数 8
作者 王跃萍
单位 东北石油大学
利用二维数组输出如图所示的图形。
输出格式:
完整输出7行7列二位数组,如上图所示,每个星号占1列,第一行星号左侧没有空格。
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<stdio.h>
int main()
{
char a[7][7];
int i,j;
//初始化数组
for(i=0;i<7;i++)
for(j=0;j<7;j++)
a[i][j]=' ';
//输入*
for(i=0;i<4;i++)
for(j=i;j<7-i;j++)
a[i][j]='*';
for(i=4;i<7;i++)
for(j=6-i;j<=i;j++)
a[i][j]='*';
//输出数组
for(i=0;i<7;i++)
{for(j=0;j<7;j++)
printf("%c",a[i][j]);
printf("\n");}
}
7-40 连接两个字符串
分数 10
作者 王跃萍
单位 东北石油大学
连接两个字符串,不允许使用strcat函数。
输入格式:
在两行分别输入两个长度小于20的字符串。
输出格式:
在一行中直接输出连接后的字符串。
输入样例:
abc
123
输出样例:
abc123
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<stdio.h>
#include<string.h>
int main()
{
char a[20],c[40];
int i=0,j=0;
gets(c);
gets(a);
while(a[i]!=0)
{
i++;
}
while(a[j]!=0)
{
c[i]=a[j];
i++;
j++;
}
printf("%s",c);
}
7-41 统计各类字符个数
分数 8
作者 王跃萍
单位 东北石油大学
分别统计一个字符串中出现小写字母、大写字母、数字和空格的个数。
输入格式:
在一行中输入长度不超过40的字符串。
输出格式:
第一行中输出“小写字母=x“
第二行中输出“大写字母=y“
第三行中输出“数字=z”
第四行中输出“空格=m”
所有结果均原样输出,没有列宽控制。
输入样例:
sd2h b57 sA
输出样例:
小写字母=5
大写字母=1
数字=3
空格=2
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<stdio.h>
#include<string.h>
int main()
{
char a[41];
int i=0,x=0,y=0,z=0,m=0;
gets(a);
for(;i<strlen(a);i++)
{
if(a[i]>='a'&&a[i]<='z')x++;
if(a[i]>='A'&&a[i]<='Z')y++;
if(a[i]>='0'&&a[i]<='9')z++;
if(a[i]==' ')m++;
}
printf("小写字母=%d\n大写字母=%d\n数字=%d\n空格=%d",x,y,z,m);
}
7-42 截取字符串
分数 10
作者 王跃萍
单位 东北石油大学
从键盘输入一个字符串,再输入两个整数m和n,将字符串从下标为m的字符开始的n个字符复制到另一个字符数组中。
输入格式:
在第一行中输入一个长度不超过20的字符串,并以回车结束,在第二行中输入用一个空格间隔的两个整数。
输出格式:
在一行中输出满足条件的字符串。
输入样例:
asdfghj
2 3
输出样例:
dfg
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<stdio.h>
#include<string.h>
int main()
{
char a[21],b[21];
int c,d,i,j;
gets(a);
scanf("%d %d",&c,&d);
for(i=c,j=0;i<c+d;i++,j++)
{
b[j]=a[i];
}
b[j]=0;
puts(b);
}
7-51 n!小于32000的最大的值
分数 10
作者 王跃萍
单位 东北石油大学
计算n!,求出小于32 000的最大的值,并求出此时n的值。
输出格式:
在一行中按照“n=结果1,t=结果2”的格式输出,结果1和结果2均原样输出整型数据,没有列宽控制。
输出样例:
n=7,t=5040
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<iostream>
using namespace std;
int main()
{
int n=1;
int t=1;
for(;t<32000;n++)
t*=n;
n-=1;
t/=n;
n-=1;
printf("n=%d,t=%d\n",n,t);
}
7-53 输出100~200之间素数
作者 王跃萍
单位 东北石油大学
求出100~200之间的全部素数,每行输出8个数,每个数宽度为5列。
输出格式:
每行输出8个素数数,每个素数宽度为5列。
输出样例:
101 103 107 109 113 127 131 137
139 149 151 157 163 167 173 179
181 191 193 197 199
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<stdio.h>
int main()
{
int i,j,k=1,a[21],b=0;
for(i=100;i<=200;i++)
{
k=1;
for(j=2;j<i/2;j++)
{
if(i%j==0)
{
k=0;
break;
}
}
if(k){a[b]=i;b++;}
}
for(i=0;i<21;i++)
{printf("%5d",a[i]);
if((i+1)%8==0)printf("\n");}
}
7-54 泰勒展开式求sinx近似值
作者 王跃萍
单位 东北石油大学
用泰勒展开式求sinx近似值的多项式为:
。
输入x求sinx的近似值,要求误差不大于0.00001。
输入格式:
直接输入一个实型数据。没有其它任何附加字符。
输出格式:
直接输出保留3位小数的实型结果。
输入样例:
2.5
输出样例:
0.598
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<iostream>
#include<cmath>
using namespace std;
double tsin(double x)
{
double sum=0;
double t=x;
int n=1;
do
{
sum+=t;
n++;
t=-t*x*x/(2*n-1)/(2*n-2);
}while(fabs(t)>=1e-5);
return sum;
}
int main()
{
double x,y;
cin>>x;
y=tsin(x);
printf("%.3f",y);
}
7-55 小于m的最大的10个素数
作者 王跃萍
单位 东北石油大学
给定一个整数m(200<m<20000),找出小于m的最大的10个素数。
输入格式:
直接输入一个正整数m(200<m<20000)。没有其它任何附加字符。
输出格式:
在一行中输出10个满足条件的素数,每个素数输出占6列。没有其它任何附加格式和字符。
输入样例:
229
输出样例:
227 223 211 199 197 193 191 181 179 173
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int m,n,t,a,b=1;
int c[10];
cin>>m;
a=m-1;
for(n=1;n<=10;a--)
{
b=1;
for(t=2;t<m/2;t++)
{
if(a%t==0){b=0;break;}
}
if(b){c[n-1]=a;n++;}
}
for(n=0;n<10;n++)
cout<<setw(6)<<c[n];
}
7-64 十进制转换为十六进制数
作者 王跃萍
单位 东北石油大学
输入一个十进制的正整数,输出它对应的十六进制数。
输入格式:
直接输入一个正整数。
输出格式:
直接输出结果,没有任何附加字符。
输入样例:
123
输出样例:
7B
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<stdio.h>
int main()
{
int a;
scanf("%d",&a);
printf("%X\n",a);
}
//嘻嘻
7-324 打印倒三角形图案
作者 张高燕-2019期末
单位 浙大城市学院
本题要求编写程序,打印一个高度为n的、由“*”组成的倒三角形图案。
输入格式:
输入在一行中给出一个正整数n。
输出格式:
输出由n行星号“*”组成的倒三角形,如样例所示。第一行的行首没有空格,每一行的行末没有空格,星号之间没有空格。
输入样例:
3
输出样例:
*****
***
*
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
for(int i=n;i>0;i--)
{for(int j=0;j<n-i;j++)
cout<<' ';
for(int k=0;k<2*i-1;k++)
{
cout<<'*';
}
cout<<endl;
}
}
7-327 CJ006 求和
作者 周治国
单位 东北师范大学
输入整数m和n,求出m到n之间所有整数的和。
输入格式:
一行给出两个整数m和n。
输出格式:
求出m到n(包括m和n)之间所有整数的和(和不会超出整数范围)。
输入样例:
1 5
输出样例:
15
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<stdio.h>
int main()
{
int a,b;
scanf("%d%d",&a,&b);
int sum=0;
for(int i=a;i<=b;i++)
sum+=i;
printf("%d",sum);
}
7-328 九九乘法表(双重循环)
作者 周永
单位 西南石油大学
打印九九乘法表,乘法表格式如图。
接收用户从键盘输入的一个1到9(含边界)的整数,假设该整数是n,则打印乘法表的前n行。
说明:
(1)用户输入的整数不在1到9这个范围内,则固定输出下面信息:
INPUT ERROR.
(2)两个整数之间的乘号,是使用的大写字母X。同一行的多个乘法结果之间,用制表符\t分开,一行末尾没有多余的制表符。
输入格式:
一个整数n。
输出格式:
乘法表的前n行。
输入样例1:
如用户输入16。
16
输出样例1:
提示用户输入的数据有误。
INPUT ERROR.
输入样例2:
如用户输入3,打印乘法表前3行。
3
输出样例2:
提示用户输入的数据有误。
1X1=1
2X1=2 2X2=4
3X1=3 3X2=6 3X3=9
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
if(n>9||n<1) cout<<"INPUT ERROR."<<endl;
else
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++)
{
cout<<i<<'X'<<j<<'='<<i*j;
if(j!=i)printf("\t");
if(j==i) printf("\n");
}
}
}