目录
7-1 三个整数排序
7-3 求数列前n项之和
7-4 求一组数据的平均值
7-5 输出图形
7-6 一行字符变换
7-7 sdut- C语言实验——删除指定字符
7-35 二维数组中每行最大值和每行和
7-36 矩阵转置
7-38 二维数组元素变化
7-39 沙漏图形
7-40 连接两个字符串
7-41 统计各类字符个数
7-42 截取字符串
7-51 n!小于32000的最大的值
7-53 输出100~200之间素数
7-54 泰勒展开式求sinx近似值
7-55 小于m的最大的10个素数
7-64 十进制转换为十六进制数
7-324 打印倒三角形图案
7-327 CJ006 求和
7-328 九九乘法表(双重循环)
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 149 8 2 9 191 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 72 5 83 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 68 25 914 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 137139 149 151 157 163 167 173 179181 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");}}
}