1.输入一个球的半径,计算这个球的表面积和体积,输出计算结果
#include<stdio.h>
const float PI=3.1415926;
float mianji(float r){
float s;
s = 4*PI*r*r;
return s;
}
float tiji(float r){
float s;
s = 4*PI*r*r*r/3;
return s;
}
int main(){
float r,mianji_result,tiji_result;
printf("请输入球的半径\n");
scanf("%f",&r);
mianji_result= mianji(r);
tiji_result= tiji(r);
printf("球的面积为:%f\n",mianji_result);
printf("球的体积为:%f\n",tiji_result);
}
2.输入一个三角形的三条边长,判断这三条边能否构成直角三角形,输出计算结果
#include<stdio.h>
int main(){
printf("请输入三角形三条边长:");
int a,b,c;
scanf("%d,%d,%d",&a,&b,&c);
if((a+b>c) && (a+c>b) && (b+c)>a){
if((a*a == b*b + c*c) || (b*b == a*a +c*c) || (c*c == a*a + b*b)) {
printf("可以构成直角三角形");
}else{
printf("不能构成直角三角形");
}
}
else {
printf("不能构成三角形");
}
return 0;
}
3.根据公式pi/4 = 1-1/3+1/5-1/7+1/9-1/11+…,计算pi的近似值,当最后一项的绝对值小于0.000001为止
注意别丢精度
#include<stdio.h>
#include<math.h>
int main(){
int m=1;
float f = 1.0f;
double sum=0;
while((f/m)>0.000001 || (f/m)<-0.000001){
sum = sum +f*1.0/m;
m = m+2;
f = -f;
}
printf("pi的近似值为:%f",sum*4);
}
4.键盘输入20个学生的姓名和总分,按总分从大到小的顺序输出这20个学生的姓名和总分
#include<stdio.h>
#include<stdlib.h>
#define n 3
//const int n=3;
struct student{
char name[10];
int score;
};
int main()
{
struct student a[n];
struct student buf;
int i,j;
for(i=0;i<n;i++)
{
scanf("%s%d",&a[i].name,&a[i].score);
}
for(i=0;i<n;i++){
for(j=0;j<n-1-i;j++){
if(a[j].score<a[j+1].score){
buf = a[j];
a[j] = a[j+1];
a[j+1] = buf;
}
}
}
for(i=0;i<n;i++){
printf("%s\t%d\n",a[i].name,a[i].score);
}
return 0;
}
5.一个数只能被1和它本身整除的数叫素数。设计一个函数可以判断一个数是否是素数,并用此函数输出2到100以内的所有素数
#include<stdio.h>
int judge(int num){
int f=1;
for(int i=2;i<num;i++){
if(num%i==0){
f=0;
break;
}
}
return f;
}
int main(){
int i;
printf("输出2-1000之内的素数\n");
for(i=2;i<=1000;i++){
if(judge(i)==1){
printf("%d\n",i);
}
}
// return 0;
}
6.输入一个圆的半径r,输出这个圆的直径、周长、面积计算结果
#include<stdio.h>
#define pi 3.1415926
float diameter(float r) //直径
{
float diameter ;
diameter= 2*r;
return diameter;
}
float perimeter(float r) //周长
{
float perimeter;
perimeter = 2*pi*r;
return perimeter;
}
float area(float r) //面积
{
float area;
area = pi*r*r;
return area;
}
int main(){
printf("请输入一个圆的半径:");
float r,diameter_result,perimeter_result,area_result;
scanf("%f",&r);
diameter_result = diameter(r);
perimeter_result = perimeter(r);
area_result = area(r);
printf("直径为:%f",diameter_result);
printf("周长为:%f",perimeter_result);
printf("面积为:%f",area_result);
return 0;
}
7.判断输入的正整数是否既是5又是7的整倍数。如果是,输出“yes”;如果不是输出“no”
#include<stdio.h>
int main(){
int num;
printf("请输入一个正整数");
scanf("%d",&num);
while(num<=0){
printf("输入错误,重新输入一个正整数:\n");
scanf("%d",&num);
}
if(num%5==0 && num%7==0){
printf("yes");
}else{
printf("no");
}
return 0;
}
8.键盘输入一个正整数,计算1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n)的值
#include<stdio.h>
int main(){
printf("请输入一个正整数:");
int num;
int i;
int j=1;
float sum=1;
scanf("%d",&num);
for(i=0;i<=num;i++){
j = j+i;
sum = sum+1.0/j;
}
printf("%f",sum);
return 0;
}
9.键盘输入一个4行3列的矩阵,输出这个矩阵以及它的转置矩阵
//4*3矩阵的输出,并且输出转置矩阵
#include<stdio.h>
int const m = 4;
int const n = 3;
int main()
{
int a[m][n];
int a1[n][m];
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++){
scanf("%d",&a[i][j]);
}
}
printf("\n");
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
printf("%d\t",a[i][j]);
}
printf("\n");
}
printf("\n");
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
a1[i][j] = a[j][i];
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
printf("%d\t",a1[i][j]);
}
printf("\n");
}
return 0;
}
10.设计一个判别素数的函数,在主函数中输入两个正整数,判断这两数之和是否是素数
//设计一个判别素数的函数,在主函数中输入两个正整数,判断两数之和是否是素数
#include<stdio.h>
int panduan(int num){
int f=1;
for(int i=2;i<num;i++){
if(num%i==0){
f=0;
break;
}
}
return f;
}
int main(){
printf("输入两个素数:\n");
int m,n,num;
scanf("%d%d",&m,&n);
if((m>0 && m%1==0) && (n>0 && n%1==0)){
num = m+n;
if(panduan(num)==1){
printf("%d是素数",num);
}else if(panduan(num) ==0){
printf("%d不是素数",num);
}
}else{
printf("输入不合理");
}
return 0;
}
11.输入梯形的上底、下底和高,计算梯形的面积,输出计算结果
//输入梯形的上底、下底和高,计算梯形的面积,输出计算结果
#include<stdio.h>
int main(){
int a,b,c;
printf("梯形面积公式:(上底+下底)*高/2\n");
printf("输入上底:\n");
scanf("%d",&a);
printf("输入下底:\n");
scanf("%d",&b);
printf("输入高:\n");
scanf("%d",&c);
float f;
f=(a+b)*c/2.0;
printf("梯形的面积为:\n");
printf("%.2f",f);
}
12.首先输入一个点A的平面坐标,再输入一个矩阵的左上角和右下角平面坐标,判断这个点A在矩阵的内部、外部还是边上,输出计算结果
//首先输入一个点A的平面坐标,再输入一个矩阵的左上角和右下角平面坐标,判断这个点A在矩阵的内部、外部还是边上,输出计算结果
#include<stdio.h>
int judge(int a,int b,int c,int d,int e,int f){
int result;
if(a<e&&a>c&&b>f&&b<d){
result = 1;
}else if ( ((a==c||a==e)&&b>=f&&b<=d) || ((b==d||b==f)&&a>=c&&a<=e) ){
result = 2;
}else {
result = 3;
}
return result;
}
int main(){
printf("输入点坐标与矩阵左上角、右下角坐标,判断点的位置\n");
printf("\n");
int a,b;
printf("输入点A的坐标位置:\n");
scanf("%d%d",&a,&b);
printf("\n");
int c,d;
printf("输入矩阵左上角位置:\n");
scanf("%d%d",&c,&d);
printf("\n");
int e,f;
printf("输入矩阵右下角位置:\n");
scanf("%d%d",&e,&f);
printf("\n");
int result;
result = judge(a,b,c,d,e,f);
if(result == 1){
printf("在矩阵内部\n");
}else if (result == 2){
printf("在矩阵边上\n");
}else if (result == 3){
printf("在矩阵外部\n");
}
}
13.输入1980年1月1日至2099年12月31日之间的任一年月日,求该日期为该年的第几天
//输入1980年1月1日至2099年12月31日之间的任一年月日,求该日期为该年的第几天
//能被4整除而不能被100整除的、能被400整除的年份都是闰年
#include<stdio.h>
int main(){
printf("请输入1980年1月1日至2099年12月31日之间的任一年月日,来判断是该年的第几天\n");
int year,month,day,sum,result;
scanf("%d%d%d",&year,&month,&day);
if(year<1980 || year>2099){
printf("输入不合规,请输入1980年1月1日至2099年12月31日之间的任一年月日");
}else if(year>=1980 || year<=2099){
int days[]={31,28,31,30,31,30,31,31,30,31,30,31};
//判断闰年
if((year%4==0&&year%100!=0) || (year%400)==0){
days[1]=29;
}
for(int i=0;i<month-1;i++){
sum=sum+days[i];
}
result = sum+day;
}
printf("\n");
printf("你输入的天数为这一年中的第%d天",result);
return 0;
}
14.键盘输入两个3行3列的矩阵,输出这两个矩阵的和矩阵
//键盘输入两个3行3列的矩阵,输出这两个矩阵的和矩阵
#include<stdio.h>
int main(){
int a[3][3];
int a1[3][3];
int he[3][3];
//输入第一个矩阵
printf("输入第一个3*3的矩阵:\n");
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
scanf("%d",&a[i][j]);
}
}
printf("\n");
//输入第二个矩阵
printf("输入第二个3*3的矩阵:\n");
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
scanf("%d",&a1[i][j]);
}
}
printf("\n");
//输入和矩阵
printf("和矩阵为:\n");
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
he[i][j] = a[i][j] + a1[i][j];
printf("%d ",he[i][j]);
}
printf("\n");
}
return 0;
}
15.求a的平方根的迭代公式为下图,设计一自定义求平方根函数,并用此函数输出1到100的平方根
(题目中有一处条件未给,该判断应误差在1e-5或1e-6这个范围)(这里要注意判断abs和fabs函数的区别,abs返回整数,fabs返回浮点型)
//求1-100以内的数字的平方根
#include<stdio.h>
#include<math.h>
double determine(int a)
{
double x=1,x1;
do
{
x1=x;
x=(x1+a/x1)/2.0;
}while(fabs(x-x1)>1E-6);
// printf("%.3f",x);
return x;
}
int main()
{
double num;
printf("输出1-100以内的数字的平方根\n");
for (int i=1;i<=100;i++){
num = determine(i);
printf("%.3f ",num);
}
return 0;
}
16. 1千克=2.2046226磅,输入一物体的质量(以千克为单位),计算该物体有多少磅,输出计算结果
//1千克=2.2046226磅,输入一物体的质量(以千克为单位),计算该物体有多少磅,输出计算结果
#include<stdio.h>
int main()
{
printf("1千克=2.2046226磅,根据这个换算条件,输入物体的质量(以千克为单位),计算物体有多少磅\n");
int num;
float result;
printf("\n");
printf("请输入物体质量:\n");
scanf("%d",&num);
result = num * 2.2046226;
printf("\n");
printf("该物体有%f磅\n",result);
return 0;
}
17.输入一个日期,计算该日期是该年度第几天,输出计算结果
//输入一个日期,计算该日期是该年度第几天,输出计算结果
#include<stdio.h>
int main()
{
printf("输入一个日期,判断该日期是该年度的第几天\n");
printf("\n");
int year,month,day;
int days[]={31,28,31,30,31,30,31,31,30,31,30,31};
scanf("%d%d%d",&year,&month,&day);
if( (year%4==0 && year%100!=0) || (year%400==0)){
days[1]=29;
printf("闰年\n");
}
int sum = 0;
for(int i=0;i<month-1;i++){
sum = sum+days[i];
}
int result;
result = sum + day;
printf("\n");
printf("该日期是该年度的第%d天",result);
return 0;
}
18. 标准差公式如下图,公式中N 为样本个数,xi为样本值,μ为样本均值。输入20个数,计算这20个数的标准差。输出计算结果
//计算标准差
#include<stdio.h>
#include<math.h>
int const N = 10;
int main(){
printf("输入%d个数:\n",N);
int i,x,a[N];
int sum = 0;
for(int i=0;i<N;i++){
scanf("%d",&a[i]);
sum = sum + a[i];
}
printf("数据总和为:%d\n",sum);
float avg;
avg = 1.0*sum/N;
float sum1 = 0;
printf("数据平均值为:%f\n",avg);
for(int i=0;i<N;i++){
sum1 = sum1 + (a[i]-avg)*(a[i]-avg);
printf("sum1=%f\n",sum1);
}
printf("sum1=%f\n:",sum1);
float result;
result = sqrt(sum1/N);
printf("标准差为:%f",result);
return 0;
}
19. 今重复输入一个正数,按照升序规律把这个数插入到数组中,输出这个数组的所有数,直到输入一个负数停止
#include <stdio.h>
int main() {
int arr[100]; // 声明一个长度为100的数组
int num,j;
int i=0;
// 循环输入正数并插入数组中
for (i = 0; ; i++) {
scanf("%d", &num);
if (num < 0) {
break; // 输入负数停止循环
}
// 从后往前遍历数组,找到第一个比当前输入数小的位置
for (j = i; j > 0 && arr[j-1] > num; j--) {
arr[j] = arr[j-1];
}
arr[j] = num; // 插入当前输入数
}
// 输出数组中的所有数
for (i = 0; i < j; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
20. 设计一个函数可以将一个10进制的数转换为2进制字符串,并利用此函数计算从键盘输入的3个10进制正数,输出对应2进制数
//设计一个函数可以将一个10进制的数转换成2进制的字符串,并利用此函数计算从
//键盘输入的3个10进制的正数,输出对应2进制数
#include<stdio.h>
#include<string.h>
#define N 20
void Convert(char *buf,int n,int data){
int temp = data;
int i,j,mid;
char ctemp;
for(i=0;i<n;i++){
if(temp%2){
buf[i] = '1';
}else{
buf[i] = '0';
}
temp = temp/2;
if(!temp){
break;
}
}
//将字符串逆序
mid = N/2;
i = n;
for(j=0;j<mid;j++,i--){
ctemp = buf[j];
buf[j] = buf[i];
buf[i] = ctemp;
}
}
int main(){
int i,data;
char buf[N+1];
buf[N+1] = '\0';
for(i=0;i<3;i++){
printf("请输入要转换的正整数:\n");
scanf("%d",&data);
while(data<=0){
printf("请输入要转换的正确的正整数:\n");
scanf("%d",&data);
}
memset(buf,'0',N+1);//每次运行对buf进行初始化
printf("%s\n",buf);
Convert(buf,N,data);
printf("正整数%d转换成二进制的字符串为:%s\n",data,buf);
}
return 0;
}
21.从键盘输入四个数,求四个数的总和以及平均数
//从键盘输入四个数,求四个数的总和以及平均数
#include<stdio.h>
int main(){
int a[4];
int num = 0;
printf("输入四个数:\n");
for(int i=0;i<4;i++){
scanf("%d",&a[i]);
}
for(int i=0;i<4;i++){
num = num + a[i];
}
int avg_num;
avg_num = num/4;
printf("四个数的总和为%d\n",num);
printf("四个数的平均数为%d\n",avg_num);
return 0;
}
22. 判断方程有几个根
//判断方程有几个根
#include<stdio.h>
#include<math.h>
int main(){
float a,b,c,x1,x2,m,p,q;
printf("输入三个值:\n");
scanf("%f,%f,%f",&a,&b,&c);
if(a==0&&b==0&&c==0){
printf("x为任意值\n");
}else if(a==0&&b!=0){
x1 = x2 = -c/b;
printf("x1=x2=%f\n",x1);
printf("方程有一个根\n");
}else{
m = b*b-4*a*c;
if(m>=0){
x1 = (-b+sqrt(m))/(2*a);
x2 = (-b-sqrt(m))/(2*a);
printf("x1:%f;x2:%f\n",x1,x2);
printf("方程有两个根");
}else{
p = -b/(2*a);
q = sqrt(-m)/(2*a);
printf("x1=%f+%fi\n",p,q);
printf("x2=%f-%fi\n",p,q);
printf("方程没有实根,有两个虚根");
}
}
}
23.根据公式求pai的近似值
//根据公式求PI的近似值
#include<stdio.h>
double countPI(double esp){
double num =1;
double s = 0;
double m = 1;
do{
s = s + num;
num = num*m/(2*m+1);
m++;
}while(num>esp);
return (2*s);
}
int main(){
printf("请输入一个误差值:\n");
double esp,num;
scanf("%f",&esp);
num = countPI(esp);
printf("PI的近似值为:%f\n",num);
return 0;
}
24.求3*3矩阵每行最大最小值
//求3*3矩阵每行的最大值最小值
#include<stdio.h>
int const m=3;
int const n=3;
int sort_bubble(int a1[],int length,int i){
int temp;
for(int m=0;m<length;m++){
for(int n=0;n<length -m-1;n++){
if(a1[n]<a1[n-1]){
temp = a1[n-1];
a1[n-1] = a1[n];
a1[n] = temp;
}
}
}
printf("第%d行最小值为%d;最大值为%d\n",i+1,a1[0],a1[length-1]);
}
int main(){
int a[n][m];
int a1[n];
printf("输入一个%d*%d的矩阵:\n",m,n);
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
scanf("%d",&a[i][j]);
}
}
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
a1[j] = a[i][j];
}
sort_bubble(a1,m,i);
}
}
25.求1-1000之间的完数
//求1-1000之间的完数
//例如6=1+2+3,6就是一个完数
#include<stdio.h>
int main(){
printf("输出1-1000之间的完数:\n");
for(int i=1;i<=1000;i++){
int num=0;
for(int j=1;j<i;j++){
if(i%j==0){
num += j;
}
}
if(num == i){
printf("%d是完数\n",num);
}
}
return 0;
}
26.按照题目要求从键盘输入乘车的起步价以及行车公里数,输出车费
某市有三种不同起步价的出租车,它们的起步价和计费分别为:
起步价4元,3km以外,1.2元/km
起步价5元,3km以外,1.5元/km
起步价6元,3km以外,1.8元/km
27.N为样本个数,输入20个数,计算这20个数的标准差,输出计算结果(重复)
28.输入20个不同的正整数,计算奇数偶数个数,依次将偶数、奇数按照升序输出
#include<stdio.h>
void PX(int a[], int sz) {
for (int i = 0;i < sz - 1;i++) {
for (int j = 0;j < sz - 1 - i;j++) {
if (a[j] > a[j + 1]) {
int t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}
}
}
int main() {
int a[10];
int sz = sizeof(a) / sizeof(a[0]);
int j = 0, o = 0;
printf("请输入10个整数:");
for (int i = 0;i < sz;i++) {
scanf("%d", &a[i]);
}
PX(a, sz);
for (int i = 0;i < sz;i++) { //判断奇偶数个数
if (a[i] % 2 == 0)
o++;
else j++;
}
for (int i = 0;i < sz;i++) {
if (a[i] % 2 != 0)
printf("%d是奇数\n", a[i]);
}
printf("\n");
for (int i = 0;i < sz;i++) {
if (a[i] % 2 == 0)
printf("%d是偶数\n", a[i]);
}
printf("奇数个数为:%d ", j);
printf("偶数个数为:%d\n", o);
return 0;
}
29.键盘输入20个学生的姓名、学号、成绩,按成绩从大到小的顺序输出这20个学生的姓名、学号、成绩(使用结构体)
//键盘输入20个学生的姓名、学号、成绩,按照成绩从大到小的顺序输出这20个学生的姓名、学号、成绩
#include<stdio.h>
int const n = 10;
struct student {
char name[10];
int number;
int score;
};
int main(){
struct student a[n];
struct student stu;
printf("输入20个学生的姓名、学号、成绩,按照成绩从大到小输出学生信息\n");
for(int i=0;i<n;i++){
scanf("%s%d%d",&a[i].name,&a[i].number,&a[i].score);
}
for(int i=0;i<n;i++){
for(int j=0;j<n-1-i;j++){
if(a[j].score<a[j+1].score){
stu = a[j];
a[j] = a[j+1];
a[j+1] = stu;
}
}
}
for(int i=0;i<n;i++){
printf("%s%d%d\n",a[i].name,a[i].number,a[i].score);
}
return 0;
}
30.种树问题,某条街道化为n条路段,这n条路段依次编号为1…n,每个路段最多可以种一棵树。现在居民们给出了h组建议,每组建议包含三个整数b,e,t代表居民希望在路段b到e之间至少要种t棵树。这些建议所给路段的区间可以交叉。请问:如果要满足所有居民的建议,至少要种多少棵树。
#include<bits/stdc++.h>
using namespace std;
struct note
{ //种树区间的结构体
int str;
int end;
int num;
}que[5100];
int book[31000];
int cmp(struct note a,struct note b)
{
return a.end<b.end;
}
int main()
{
int n,m;
int sum=0;
scanf("%d %d",&n,&m);
for(int i=0;i<m;i++)
scanf("%d %d %d",&que[i].str,&que[i].end,&que[i].num);
sort(que,que+m,cmp); //按种树区间结束end升序排序
//遍历每个建议,查看区间种了多少树
for(int i=0;i<m;i++)
{ //从后往前遍历区间
for(int k=que[i].end;k>=que[i].str;k--)
{ //如果这个建议区间需种树为0,则结束
if(que[i].num==0)
break;
//如果这个点已种树,将需要种树的数减1
if(book[k]==1)
que[i].num--;
}
//遍历每个建议,查看区间需要种多少树
for(int j=que[i].end;j>=que[i].str;j--)
{
if(que[i].num==0)
break;
//如果这个点未种树,则种上树
if(book[j]==0)
{
book[j]=1;
que[i].num--;
}
}
}
//查看种了多少树
for(int i=1;i<=n;i++)
{
if(book[i]==1)
sum++;
}
printf("%d",sum);
return 0;
}
31.S=a+aa+aaa+aaaa+…,其中a是一个正整数,例3+33+333+3333,此时a=3,n=4,n表示a的位数,a和n由键盘输入,求S的值
#include<stdio.h>
#include<math.h>
int main()
{
int a = 0;
int n = 0;
int sum = 0;
int result = 0;
int m = 1;
scanf("%d %d", &a, &n);
int i = 0;
for (i = 1; i <= n; i++)
{
sum = sum + a * m;
result = result + sum;
printf("%d\n",sum);
m = pow(10,i);
}
printf("求和为:%d",result);
return 0;
}
32.输入n个用户姓名、性别、地址、电话,按用户姓名的英语词典顺序排序输出用户信息:姓名、性别、地址、电话。用户首先在第一行输入一个正整数,表示待排序的用户数目,每行的输入格式为姓名、性别、地址、电话,回车结束。输出格式用户信息:姓名、性别、地址、电话,要求n<50,大于需要提示用户重新输入
#include <stdlib.h>
#include<stdio.h>
#include<string.h>
//typedef struct user
struct user
{
char name[15];
char tele[15];
}t,user[30];
int main()
{
int n;
int i;
int l;
scanf("%d",&n);
for(i = 0; i < n; i++)
{
scanf("%s",user[i].name);
scanf("%s",user[i].tele);
}
int j = 0;
for(i = 0; i<n-1;i++)
{
for(j = 0; j<n-i-1;j++)
{
if(strcmp(user[j+1].name,user[j].name)<0)
{
char temp[10];
char t[10];
strcpy(temp,user[j].name);
strcpy(t,user[j].tele);
strcpy(user[j].name,user[j+1].name);
strcpy(user[j].tele,user[j+1].tele);
strcpy(user[j+1].name,temp);
strcpy(user[j+1].tele,t);
}
}
}
for(i = 0; i < n; i++)
{
l = strlen(user[i].name);
if(l>=10)
{
l = 10;
}
user[i].name[l] = '\0';
l = strlen(user[i].tele);
if(l>=10)
{
l = 10;
}
user[i].tele[l] = '\0';
printf("%12s%12s\n",user[i].name,user[i].tele);
}
return 0;
}
33.对于一个长度为n的字符串S,首先根据它构造几个字符串,其中第i个字符串将S的前i-1个字符置于末尾,得到(例如,China,长度为5,可以构成china,hinaC,inaCh,aChin,naChi),按照首字符从小到大排序,如果相同,则按照它们在S中位置从小到大排序,排序后的尾字符组成一个新的字符S1,它的长度也是n,并且包含了S中的每一个字符,最后输出S1以及S的首字符在S1中的位置P
输入格式:
输入文件file.txt包含两行,第一行是一个正数n(1<=n<=10000),代表S的长度,第2行是字符串S
输出格式:
输出文件file.out.txt 第一行字符串S1,第二个整数P
34.判断2~100的数是否为素数,不是素数分解成素数
输出部分样式为:
2 is a prime
3 is a prime
4 is not a prime
4 = 2 * 2
5 is a prime
6 is not a prime
6 = 2 * 3
…
#include<stdio.h>
#include<stdbool.h>
bool is_prime(int n){
if(n<2){
return false;
}else{
for(int i=2;i*i<=n;i++){
if(n%i==0){
return false;
}
}
return true;
}
}
void decompose(int n){
int p=2;
printf("%d=",n);
while(n>1){
if(is_prime(p)&&n%p==0){
printf("%d",p);
n/=p;
if(n>1){
printf("*");
}
}
else{
p++;
}
}
printf("\n");
}
int main(){
for(int i=2;i<=100;i++){
if(is_prime(i)){
printf("%d is as prime\n",i);
}else{
printf("%d is not a prime\n",i);
decompose(i);
}
}
return 0;
}
35.养猪场老板想随时知道自己猪场里有多少头猪,猪场学徒提出这样的问题:假设有16头猪,建3个猪圈,就剩下1头猪没有地方安家,建5个猪圈,就剩下1头猪没有地方安家,建7个猪圈,就剩2头猪没有地方安家,计算养猪场有多少头猪
输入
第一行 n 建猪圈次数
第n行 每行两个整数ai,bi…:a1~an互质
输出包含一个正整数,至少养猪的数目
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int a[n][2];
int i,j,k=0;
for(i=0;i<n;i++){
for(j=0;j<2;j++){
scanf("%d",&a[i][j]);
}
}
for(i=3;;i++){
for(j=0;j<n;j++){
if((i-a[j][1])%a[j][0]==0){
k++;
}
}
if(k==n){
printf("%d",i);
break;
}
else{
k=0;
}
}
return 0;
}
36.水仙花数
//导入头文件
#include<stdio.h>
#include<stdlib.h>
//主函数
int main(){
int i,j,k,n,sumi,sumj,sumk;//定义7个整型数据
printf("\n100-1000 包含的“水仙花”数分别有: \n\n");
for(n=100;n<1000;n++){
//循环求数字个位、十位、百位上的数字
i=n/100;//求百位
j=n/10%10; //求十位
k=n%10; //求个位
//求i、j、k的立方和
sumi=i*i*i;//求个位立方和
sumj=j*j*j;//求十位立方和
sumk=k*k*k;//求百位立方和
//判断是否为 水仙花数
if(n==sumi+sumj+sumk){
printf("%-5d",n);//输出 水仙花数
}
}
printf("\n");//换行
return 0;
}