#include <stdio.h>
#include <limits.h>
int main(){
// 输入
int n;
scanf("%d",&n);
// 处理:求最大值 最大值的最小下标
int max=INT_MIN;
int minIdxOfMax=-1;
for(int i=0;i<n;++i){
int cur;
scanf("%d",&cur);
if(cur>max){
max=cur;
minIdxOfMax=i;
}
}
// 输出
printf("%d %d\n",max,minIdxOfMax);
return 0;
}
#include <stdio.h>
int main(){
// 输入
int n;
scanf("%d",&n);
// 直接逆序存放
int nums[n];
for(int i=n-1;i>=0;--i){
scanf("%d",&nums[i]);
}
// 输出:顺序输出
for(int i=0;i<n;++i){
printf("%d",nums[i]);
if(i<n-1){
printf(" ");
}
}
printf("\n");
return 0;
}
#include <stdio.h>
#include <stdbool.h>
// 输出:数组存在目标元素->true 否则->false
bool isExist(int *nums,int size,int target){
for(int i=0;i<size;++i){
if(nums[i]==target){
return true;
}
}
return false;
}
int main(){
int size[3]={0};
// 输入第一个数组
scanf("%d",&size[0]);
int nums0[size[0]];
for(int i=0;i<size[0];++i){
scanf("%d",&nums0[i]);
}
// 输入第二个数组
scanf("%d",&size[1]);
int nums1[size[1]];
for(int i=0;i<size[1];++i){
scanf("%d",&nums1[i]);
}
// 记录不存在另一个数组且不重复的元素
int nums2[size[0]+size[1]];
// 第一个数组
for(int i=0;i<size[0];++i){
if(!isExist(nums1,size[1],nums0[i])
&& !isExist(nums2,size[2],nums0[i])){
nums2[size[2]++]=nums0[i];
}
}
// 第二个数组
for(int i=0;i<size[1];++i){
if(!isExist(nums0,size[0],nums1[i])
&& !isExist(nums2,size[2],nums1[i])){
nums2[size[2]++]=nums1[i];
}
}
for(int i=0;i<size[2];++i){
printf("%d",nums2[i]);
if(i<size[2]-1){
printf(" ");
}
}
return 0;
}
#include <stdio.h>
// 输入:矩阵
void getMatrix(int row,int col,int mat[row][col]){
for(int i=0;i<row;++i){
for(int j=0;j<col;++j){
scanf("%d",&mat[i][j]);
}
}
return;
}
int main(){
// 输入
int n;
scanf("%d",&n);
int matrix[n][n];
getMatrix(n,n,matrix);
// 处理:计算除副对角线、最后一列
// 和最后一行以外的所有元素之和
int sum=0;
for(int i=0;i<n;++i){
for(int j=0;j<n;++j){
if(i==n-1 || j==n-1 || i+j==n-1){
continue;
}
sum+=matrix[i][j];
}
}
// 输出
printf("%d",sum);
return 0;
}
#include <stdio.h>
// 输入:矩阵
void getMatrix(int row,int col,int matrix[row][col]){
for(int i=0;i<row;++i){
for(int j=0;j<col;++j){
scanf("%d",&matrix[i][j]);
}
}
return;
}
// 输出:矩阵
void putMatrix(int row,int col,int matrix[row][col]){
for(int i=0;i<row;++i){
for(int j=0;j<col;++j){
printf("%d ",matrix[i][j]);
}
printf("\n");
}
return;
}
// 处理:交换
void swap(int *a,int *b){
int temp=*a;
*a=*b;
*b=temp;
return;
}
// 处理:逆置
void reverse(int *nums,int left,int right){
while(left<right){
swap(&nums[left++],&nums[right--]);
}
return;
}
// 处理:矩阵循环右移m列
void cycleShiftRightMatrix(int row,int col,int matrix[row][col],int m){
m%=col;
if(m==0) return;
for(int i=0;i<row;++i){
reverse(matrix[i],0,col-1);
reverse(matrix[i],0,m-1);
reverse(matrix[i],m,col-1);
}
}
int main(){
// 输入
int m,n;
scanf("%d %d",&m,&n);
int nums[n][n];
getMatrix(n,n,nums);
// 处理:矩阵循环右移
cycleShiftRightMatrix(n,n,nums,m);
// 输出
putMatrix(n,n,nums);
return 0;
}
#include <stdio.h>
int main(){
// 输入:年/月/日
int year,month,day;
scanf("%d/%d/%d",&year,&month,&day);
// 处理:
// 维护每个月的天数数组
int mth[13] = {12,
31,28,31,30,31,30,
31,31,30,31,30,31};
// 闰年 修正2月天数
if((year%4==0 && year%100!=0)
|| year%400==0){
++mth[2];
}
// 计算天数
int sum=0;
for(int i=1;i<month;++i){
sum+=mth[i];
}
sum+=day;
// 输出
printf("%d",sum);
return 0;
}
#include<stdio.h>
int main(){
// 输入
char ch;
scanf("%c\n",&ch);
char str[80];
int size=0;
while(1){
str[size] = getchar();
if(str[size] == '\n'){
break;
}
size++;
}
// 处理:从后往前查找
int index = -1;
for(int i=size;i>=0;i--){
if(str[i] == ch){
index = i;
break;
}
}
// 输出
if(index == -1) {
printf("Not Found\n");
}else{
printf("index = %d\n",index);
}
return 0;
}
#include <stdio.h>
#include <string.h>
#define MAXLEN 81
// 处理:字符交换
void swap(char *a,char *b){
char temp=*a;
*a=*b;
*b=temp;
return;
}
// 处理:字符串逆置
void reverse(char *str,int left,int right){
while(left<right){
swap(&str[left++],&str[right--]);
}
return;
}
int main(){
// 输入
char str[MAXLEN];
fgets(str,MAXLEN,stdin);
int len=strlen(str);
if(len>0 && str[len-1]=='\n'){
str[--len]='\0';
}
// 处理:字符串逆序
reverse(str,0,len-1);
// 输出
printf("%s",str);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main(){
// 输入
int n;
scanf("%d",&n);
int *nums=(int *)malloc(n*sizeof(int));
for(int i=0;i<n;++i){
scanf("%d",&nums[i]);
}
// 选择排序
for(int i=0;i<n-1;++i){
int idxOfMax=i;
for(int j=i+1;j<n;++j){
if(nums[j]>nums[idxOfMax]){
idxOfMax=j;
}
}
if(i!=idxOfMax){
int tmp=nums[i];
nums[i]=nums[idxOfMax];
nums[idxOfMax]=tmp;
}
}
// 输出
for(int i=0;i<n;++i){
printf("%d",nums[i]);
if(i<n-1){
printf(" ");
}
}
printf("\n");
return 0;
}
#include <stdio.h>
#include <math.h>
#include <limits.h>
int main(){
// 输入
int n;
scanf("%d",&n);
// 处理:计数排序
int cnt[10]={0};
for(int i=1;i<=n;++i){
int cur;
scanf("%d",&cur);
if(cur==0){
++cnt[0];
continue;
}
while(cur>0){
++cnt[cur%10];
cur/=10;
}
}
// 寻找最大值
int max=INT_MIN;
for(int i=0;i<=9;++i){
max=fmax(max,cnt[i]);
}
// 根据最大值找最大值对应的下标
printf("%d:",max);
for(int i=0;i<=9;++i){
if(max==cnt[i]){
printf(" %d",i);
}
}
return 0;
}