- 回文判断
- 进制转换
- 对称素数判断
- 最大公约最小公倍
- 最值问题
- 萌萌摘苹果
- 斐波那契
- 最小质数最小合数
- 小明选择题
- 天子诸侯
- 华强种瓜
- 级数求和
- 小明抽奖游戏
- 小明记忆游戏
- 矩阵变换问题
- 最长连续上升子序列
- 开普勒星球历法
- 社交网络
- 八进制转换成十六进制
- 计算字符子串中字符数字的个数
- 南邮OJ题库
回文判断:
#include<stdio.h>
#include<stdbool.h>
//这个是引入strlen函数。判断字符的长度
#include<string.h>
int main(){
char a[100];
int i=0,j,flag=1;
//输入为字符,空格不停止。回车停止
gets(a);
// for(i=0;i<10;i++){
// printf("%c",a[i]);
// }
//判断字符的长度;
int len=strlen(a);
//bool b=false||true;
//printf("%d",b);
for(i=0,j=len-1;i<j;i++,j--){
// 这个就是回文 .这个是取反操作,写的时候先正这写,返回在返过来写。 A(65)与a(97) 相差32 为
if(a[i]!=a[j]&&a[i]+32!=a[j]&&a[j]+32!=a[i]){
flag=0;
break;
}
}
if(flag==1){
printf("Yes\n");
}else{
printf("No\n");
}
}
进制转换。任意进制 ```javascript #include
对称素数判断。不能查过5位数
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
//把数反过来了和原来的数进行比较;
int sym(int x){
int b=0,c;
c=x;
int judge=1;
while(x){
b=b*10+x%10;
x=x/10;
}
if(b==c) judge=1;
else judge=0;
return judge;
}
bool prime(int x){
int j;
if(x==1){return false;}
if(x==2){return false;}
for(j=2;j<x;j++){
if(x%j==0){
return false;
}
}
return true;
};
int main(){
int n,i,j;
scanf("%d",&n);
int a[n];
for( i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(j=0;j<n;j++){
//如果在范围之中,进入判断是否是素数
if(a[j]<=99999&&a[j]>0){
// 判断是否是素数
if(prime(a[j])&&sym(a[j])){
printf("Yes\n");
} else{
printf("No\n");
}
//不在范围之中
}else{
printf("No\n");
}
}
}
最大公约最小公倍
#include<stdio.h>
#include<stdbool.h>
//最大公约数
int maxYue(a,b){
int i;
//最大公约数肯定不会大于最小的那个值b
for(i=b;i>=0;i--){
if(a%i==0&&b%i==0){
return i;
}
}
}
//最小公倍数
int minBei(a,b){
return (a*b)/maxYue(a,b);
}
//输入两个整数最大公约数,最小公倍数a*b/最大公约数。
int main(){
int a,b,max_yue,min_bei;
scanf("%d %d",&a,&b);
// 进行交换,保证a=max{a,b}
if(a<b){
int temp=a;
a=b;
b=temp;
}
//最大公约数
max_yue=maxYue(a,b);
min_bei=minBei(a,b);
printf("%d %d",max_yue,min_bei);
}
最值问题
#include<stdio.h>
#include<stdbool.h>
int main (){
int a[100],i,max,min,n;
bool flag=true;
while(scanf("%d",&n)==1){
max=0,min=101;
for(i=1;i<=n;i++){
scanf("%d",&a[i]);
// if(a[i]>100 || a[i]<1){
// printf("%s\n","N不在范围之中,请重新输入");
// //跳出一层循环 for
// i=0;
// flag=false;
// }
if(a[i]>max) {max=a[i];}
if(a[i]<min) {min=a[i];}
flag=true;
};
printf("%d,%d\n",max,min);
}
}
萌萌摘苹果
#include<stdio.h>
//10
//100 200 150 140 129 134 167 198 200 111
//110
//结果为5
//第一行苹果个数,第二行苹果与地面的高度 100<=h<=200 第三行 手的长度 100<=h<=120。凳子的高度为30
int main(){
int i,n,h_high=0,count=0;
scanf("%d",&n);
int high[n];
//输入每个苹果与地面的长度
for(i=0;i<n;i++){
scanf("%d",&high[i]);
}
//手的长度
scanf("%d",&h_high);
h_high=h_high+30;
for(i=0;i<n;i++){
if(h_high>=high[i]){
high[i]=0;
}
}
//遍历数组中非0的个数,为树上还有几个苹果
for(i=0;i<n;i++){
if(high[i]!=0){
count++;
}
}
printf("%d",count);
}
斐波那契
#include<stdio.h>
int function(int n){
if(n==0){return 0;
}
else if(n==1){
return 1;
}
else{
return function(n-1)+function(n-2);
}
}
int main(){
int n,i,res;
scanf("%d",&n);
res=function(n);
printf("%d",res);
}
最小质数最小合数
#include<stdio.h>
#include<stdbool.h>
int main(){
int i,n,zs,hs;
bool flag1=false,flag2=false;
scanf("%d",&n);
//找到大于n的最小的质数。 2是最小的质数。1不是质数也不是合数
while(n){
if(n==1){
//2是质数。
n++;
zs=n;
break;
}
else if(n==2){
zs=n;
break;
}
else{
for(i=2;i<n;i++){
if(n%i==0){
printf("-\n");
flag1=true;
break;
}
}
if(flag1){
n++;
//为下一次遍历做准备
flag1=false;
}else{
zs=n;
break;
}
}
}
//找到大于n的最小的合数
while(n){
if(n>2){
for(i=2;i<n;i++){
if(n%i==0){
hs=n;
flag2=true;
break;
}
}
if(flag2){
//跳出while循环
break;
}
}
n++;
}
printf("%d",zs+hs);
}
小明选择题
#include<stdio.h>
#include<string.h>
#include <math.h>
//返回下标;
int choose(float s[]){
int i=0,avg=0,max_index,min_index,longl=0,shortl=0;
for(i=0;i<4;i++){
//可以进行输出
avg+=s[i];
// printf("%f",s[i]);
}
avg=avg/4;
for(i=0;i<4;i++){
//如果这个值大于平均值
if(s[i]>avg){
longl++;
max_index=i;
}
else if (s[i]<avg){
shortl++;
min_index=i;
}
}
if(longl>shortl){
return min_index;
}else if(longl<shortl){
return max_index;
}
else{
//长的为2短的也为2;
//长的短 的都为0;
int sum=longl+shortl;
if(sum!=0){
//c 下标为2;
return 2;
} else{
// b下标为1;
return 1;
}
}
}
//小明与选择题,三短一长,选择长的,三长两短 选择短的。参差不齐 选择c.平平整整选择B
//其实这里输入的大小就是长度,长度就是大小
int main(){
int index, avg,j, i=0 ,count=0;
float s[4];
char res[4]={'A','B','C','D'};
//输入长度
for(i=0;i<4;i++){
scanf("%f",&s[i]);
}
index= choose(s);
printf("%c",res[index]);
}
天子诸侯
#include<stdio.h>
#include<stdbool.h>
/**
将数组的序列排序,取出前三个相加。
如果 当周天子直属军队的军力 大于等于 诸侯中军力前三之和的时候,
便可保诸侯均势,天下太平。
**/
int main(){
int n,i,j,sum=0,count=3;
bool flag=false;
scanf("%d",&n);
int num[n];
for(i=0;i<n;i++){
scanf("%d",&num[i]);
}
//输出数组的中的数字
for(i=0;i<n;i++){
printf("%d\n",num[i]);
}
//使用冒泡排序;
for(i=1;i<n;i++){
flag=false;
for(j=0;j<n-i;j++){
if(num[j]>num[j+1]){
int temp;
temp=num[j];
num[j]=num[j+1];
num[j+1]=temp;
flag=true;
}
}
//已经排号序列了,提前结束
if(!flag){
break;
}
}
//取出最大的位;
while(count){
n--;
sum+=num[n];
count--;
}
//输出结果
printf("%d",sum);
}
华强种瓜:
#include<stdio.h>
//华强种瓜;
/**
对于第一组样例,(3,3)
上的洒水器工作半径可以覆盖到 (3,3)
(4,3)
(2,3)
(3,2)
(3,4)
的瓜。而 (4,2)
上的洒水器可以覆盖到 (4,2)
(5,2)
(3,2)
(4,1)
(4,3)
的瓜。去重后,共有 8
个瓜被覆盖到。
**/
int main(){
int n,k,r,w,u,v,count=0,i,j;
scanf("%d",&n);
int num[n*n];
scanf("%d",&k);
scanf("%d",&r);
//初始化話數組
for(i=0;i<n;i++){
num[i]=0;
}
//将输出的第一个数放入一维数组中。
for(j=0;j<k;j++){
scanf("%d %d",&u,&v);
for(i=0;i<=r;i++){
if(u+i<=n){
//向下移动
w=(u-1+i)*n+v;
num[w-1]=1;
}
if(u-i>=1){
//向上移动
w=(u-1-i)*n+v;
num[w-1]=1;
}
if(v-i>=1){
//向左移动
w=(u-1)*n+(v-i);
num[w-1]=1;
}
if(v+i<=n){
//向右移动
w=(u-1)*n+(v+i);
num[w-1]=1;
}
}
}
//遍历记录次数
for(i=0;i<n*n;i++){
if(num[i]==1){
count++;
}
}
//打印结果;
printf("%d",count);
}
级数求和:
#include<stdio.h>
//级数求和
int main(){
int k,n=1;
// 将sum改成double类型的
double sum=0,i;
scanf("%d",&k);
while(1){
i=n;
sum=sum+1/i;
//大于k级数循环;
if(sum>k){
break;
}else{
n++;
}
}
printf("%d",n);
}
小明抽奖游戏
#include<stdio.h>
//小明抽奖游戏
int main(){
int n,i,m,j;
scanf("%d",&n) ;
int num[n];
//输入幸运数;
for(i=0;i<n;i++){
scanf("%d",&num[i]) ;
}
//抽奖个数
scanf("%d",&m);
int s[m] ;
for(i=0;i<m;i++){
scanf("%d",&s[i]) ;
}
int count=0;
for(i=0;i<n;i++){
for(j=0;j<m;j++){
if(num[i]%s[j]==0){
count++;
//结束本次循环;
break;
}
}
}
printf("%d",count);
}
小明记忆游戏
#include<stdio.h>
#include<string.h>
//小明记忆游戏
int main(){
int n,m,i,j;
scanf("%d",&n);
int num[n];
for(i=0;i<n;i++){
scanf("%d",&num[i]);
}
//询问次数;
scanf("%d",&m);
int s[m];
int res[m];
for(j=0;j<m;j++){
scanf("%d",&s[j]);
}
//判断询问的数是否在输入中
//对res进行初始化.1为yes 0为 no
for(i=0;i<m;i++){
res[i]=0;
}
//查询判断是否存在,存在改为YES;
for(i=0;i<m;i++){
for(j=0;j<n;j++){
if(s[i]==num[j]){
res[i]=1;
}
}
}
//输出结果;
for(i=0;i<m;i++){
if(res[i]==1){
printf("YES\n");
}else{
printf("NO\n");
}
}
}
矩阵变换问题
#include<stdio.h>
#include<stdbool.h>
//矩阵变换
int main(){
int n,m,i,j,k,count;
bool flag=false;
scanf("%d %d",&n,&m);
int num[n][m];
//输入数据
for (i=0;i<n;i++){
for(j=0;j<m;j++){
scanf("%d",&num[i][j]);
}
}
//将数据为1的行变成0
for(i=0;i<n;i++){
for(j=0;j<m;j++){
//判断这个数字是否为1;
if(num[i][j]==1){
//保持列不变,将行全部变成0;
count=n;
while(count){
count--;
num[count][j]=0;
}
flag=true;
}
}
if(flag){
//将i行的值变成0;
for(k=0;k<m;k++){
num[i][k]=0;
}
}
//初始化;
flag=false;
}
//输出这个二维数组
for(i=0;i<n;i++){
for(j=0;j<m;j++){
if(j==m-1){
printf("%d\n",num[i][j]);
}else{
printf("%d ",num[i][j]);
}
}
}
}
最长连续上升子序列 描述: 给定一个长度为 n 的整数序列 a1,a2,⋯,an ,求最长的连续上升子序列的长度。连续上升子序列可以由两个下标 l和 r(l≤r)确定,如果对于每个 l≤i
样例输入:
5
1 3 5 4 7
样例输出:
3
样例输入:
5
2 2 2 2 2
样例输出:
1
#include<stdio.h>
int main(){
int n,i;
scanf("%d",&n);
int num[n];
for(i=0;i<n;i++)
{
scanf("%d",&num[i]);
}
//进行计数
int count=1,max=0;
//输出
for(i=0;i<n-1;i++)
{
if(num[i]<num[i+1]){
count++;
if(count>max){
max=count;
}
}else{
count=1;
if(num[i]<num[i+1]){
count++;
if(count>max){
max=count;
}
}
}
}
printf("%d",max);
}
开普勒星球历法:
#include <stdio.h>
void run_year(int month[],int n){
int i,day;
int count=0;
//闰年
for(i=0;i<14;i++){
for(day=1;day<=month[i];day++){
count++;
if(count==n){
printf("%d %d",i+1,day);
return 0;
}
}
}
}
void norui_year(int month[],int n){
int i,day;
int count=0;
//非闰年
month[1]=28;
for(i=0;i<14;i++){
for(day=1;day<=month[i];day++){
count++;
if(count==n){
printf("%d %d",i+1,day);
return 0;
}
}
}
}
int main(){
//int Y,n,i,day;
int Y,n;
int month[]={31,29,31,30,31,30,31,31,30,31,30,31,30,31};
// 1 2 3 4 5 6 7 8 9 10 11 12 13 14
scanf("%d %d",&Y,&n);
// if(Y>9999||Y<1234){
// return 0;
// }
// if(n>426|| n<1){
// return 0;
// }
//进行计数
//int count=0;
//判断是否是整百年
if(Y%100==0){
if(Y%400==0){
//闰年
// for(i=0;i<14;i++){
// for(day=1;day<=month[i];day++){
// count++;
// if(count==n){
// printf("%d %d",i+1,day);
// return 0;
// }
// }
// }
run_year(month,n);
}else{
//非闰年
// month[1]=28;
// for(i=0;i<14;i++){
// for(day=1;day<=month[i];day++){
// count++;
// if(count==n){
// printf("%d %d",i+1,day);
// return 0;
// }
// }
// }
norui_year(month,n);
}
}else{
if(Y%4==0){
//闰年
// for(i=0;i<14;i++){
// for(day=1;day<=month[i];day++){
// count++;
// if(count==n){
// printf("%d %d",i+1,day);
// return 0;
// }
// }
// }
run_year(month,n);
}else
{
//非闰年
// month[1]=28;
// for(i=0;i<14;i++){
// for(day=1;day<=month[i];day++){
// count++;
// if(count==n){
// printf("%d %d",i+1,day);
// return 0;
// }
// }
// }
norui_year(month,n);
}
}
}
社交网络
#include<stdio.h>
int show(int a,int b,int num[][2],int n){
int i=0,j=0,count=1;
for(i=0;i<n;i++){
if(i==a){
continue;
}
else{
for(j=0;j<2;j++){
if(num[i][j]==num[a][b]){
count++;
}
}
}
}
return count;
}
int main(){
int n,i,j;
scanf("%d",&n);
int num[n][2];
for(i=0;i<n;i++){
for(j=0;j<2;j++){
scanf("%d",&num[i][j]);
}
}
int max=0,people=0,count=0;
for(i=0;i<n;i++){
for(j=0;j<2;j++){
count=show(i,j,num,n);
if(count>max){
max=count;
people=num[i][j];
}
}
}
printf("%d",max);
}
八进制转换成十六进制:
#include<stdio.h>
#include<math.h>
int eigthToTen(int n){
int i=0,decimalNum=0;
while(n!=0){
decimalNum+=(n%10)*pow(8,i);
i++;
n=n/10;
}
return decimalNum;
}
//转成16进制;
void ten_six(int n){
char leave[100];
int j=0,i=0;
char res[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
while(n>=16){
leave[j]=res[n%16];
n=n/16;
j++;
}
leave[j]=res[n];
for(i=j;i>=0;i--){
printf("%c",leave[i]);
}
}
int main(){
int n;
scanf("%d",&n);
//现将八进制转成十进制
int ten=eigthToTen(n);
//现将八进制转成十进制
ten_six(ten);
}
用户从键盘输入一段英文(不超过 1000 字符,以换行符 ‘\n’ 结束),请统计其中字母、数字、空白字符、其它标点符号的数量,以及总字符数量。
There are 3 apples and 2 pears on the plate.
#include<stdio.h>
#include<ctype.h>
int main(){
int i=0,Alpha=0,Digit=0,j,Space=0,Punct=0,total=0;
char c;
while((c=getchar())!='\n' && total<=1000){
total++;
if(isalpha(c)){
Alpha++;
}
if(isdigit(c)){
Digit++;
}
if(isspace(c)){
Space++;
}
if(ispunct(c)){
Punct++;
}
}
printf("Alpha:%4d\n",Alpha);
printf("Digit:%4d\n",Digit);
printf("Space:%4d\n",Space);
printf("Punct:%4d\n",Punct);
printf("total:%4d\n",total);
}
**祝你一战成硕,南邮oj上机:** https://noj.njupt.edu.cn/problem