南邮上机题

回文判断:

#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

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值