1 #include <stdio.h> 2 #define N 32 3 int main() 4 { 5 int m,n; 6 scanf("%d %d",&m,&n); 7 8 int a[N][N]={0}; 9 for(int i=0;i<m;++i){ 10 for(int j=0;j<n;++j){ 11 scanf("%d",&a[i][j]); 12 } 13 } 14 15 int find = 0; 16 for(int i=0;i<m;++i) 17 { 18 //判断行最大值 19 int rowPos=i,columnPos=0,flag = 1; 20 for(int j=1;j<n;++j) 21 { 22 if(a[i][j]>a[rowPos][columnPos]){ 23 rowPos = i; 24 columnPos = j; 25 } 26 } 27 //判断行最大值,在所在列是否为最小值 28 for(int k=0;k<m;++k){ 29 if(a[k][columnPos]<a[rowPos][columnPos]){ 30 flag = 0; 31 break; 32 } 33 } 34 //行最大值且所在列最小值输出 35 if(flag){ 36 printf("Point:a[%d][%d]==%d ",rowPos,columnPos,a[rowPos][columnPos]); 37 find = 1; 38 } 39 } 40 if(!find){ 41 printf("No Point "); 42 } 43 44 return 0; 45 }
2、身份证的奥秘
1 #include <stdio.h> 2 #include <string.h> 3 int main() 4 { 5 int weight[17] = {7,9,10,5,8,4,2,1,6,3, 6 7,9,10,5,8,4,2}; 7 char m[12] = "10X98765432"; 8 9 int n; 10 scanf("%d",&n); 11 12 while(n--) 13 { 14 char buf[20] = ""; 15 scanf("%s",buf); 16 int len = strlen(buf); 17 18 char buf1[20] = ""; 19 if(len==15) 20 { 21 strncpy(buf1,buf,6); 22 if(strstr(&buf[12],"996")||strstr(&buf[12],"997")|| 23 strstr(&buf[12],"998")||strstr(&buf[12],"999")){ 24 strcat(buf1,"18"); 25 } 26 else 27 strcat(buf1,"19"); 28 strcat(buf1,&buf[6]); 29 strcpy(buf,buf1); 30 } 31 32 int sum = 0; 33 for(int i=0; i<17; ++i) 34 sum += (buf[i]-'0')*weight[i]; 35 36 if(len==15){ 37 buf[17] = m[sum%11]; 38 printf("%s ",buf); 39 } 40 else if(len==18 && m[sum%11]==buf[17]) 41 printf("Valid "); 42 else 43 printf("Invalid "); 44 } 45 return 0; 46 }
3、安全的密码
1 #include <stdio.h> 2 #include <string.h> 3 int main() 4 { 5 int n; 6 scanf("%d",&n); 7 getchar(); 8 while(n--) 9 { 10 char str[20] = ""; 11 gets(str); 12 13 int a[4] = {0}; 14 int count = 0; 15 int len = strlen(str); 16 for(int i=0; i<len; ++i) 17 { 18 if(str[i]>='A'&&str[i]<='Z'){ 19 a[0]++; 20 if(a[0]==1) 21 count++; 22 } 23 else if(str[i]>='a'&&str[i]<='z'){ 24 a[1]++; 25 if(a[1]==1) 26 count++; 27 } 28 else if(str[i]>='0'&&str[i]<='9'){ 29 a[2]++; 30 if(a[2]==1) 31 count++; 32 } 33 else { 34 a[3]++; 35 if(a[3]==1) 36 count++; 37 } 38 } 39 40 if(len<6||count==1) 41 puts("Not Safe"); 42 else if(count==2) 43 puts("Medium Safe"); 44 else 45 puts("Safe"); 46 } 47 return 0; 48 }
4、单词排序
1 #include <stdio.h> 2 #include <string.h> 3 int main() 4 { 5 char a[5][80],temp[80]=""; 6 int n=5, t, i=0; 7 t = n; 8 while(t--){ 9 scanf("%s",a[i]); 10 for(int j=0; j<i; ++j){ 11 if(strcmp(a[i],a[j])>0){ 12 strcpy(temp,a[i]); 13 strcpy(a[i],a[j]); 14 strcpy(a[j],temp); 15 } 16 } 17 i++; 18 } 19 20 t = n, i=0; 21 while(t--) 22 printf("%s ",a[i++]); 23 24 return 0; 25 }
5、回文数
题目内容:
输出所有不超过n(取n<256)的、其平方具有对称性质的正整数(也称为回文数)。
如: 1*1=1; 2*2=4;3*3=9;11*11=121;1,2,3,11是回文数。
输入格式:
输入n(n<256)
输出格式:
输出所有不超过n的回文数
输入样例:
3
输出样例:
1[回车]
2[回车]
1 #include <stdio.h> 2 int main() 3 { 4 int m; 5 scanf("%d",&m); 6 7 for(int i=1; i<m; ++i) 8 { 9 int n = i*i, num = 0; 10 while(n){ 11 num = num*10 + n%10; 12 n /= 10; 13 } 14 if(num==i*i) 15 printf("%d ",i); 16 } 17 18 return 0; 19 }
6、组成最大数
题目内容:
任意输入一个自然数,输出该自然数的各位数字组成的最大数。
输入格式:
自然数 n
输出格式:
各位数字组成的最大数
输入样例:
1593
输出样例:
9531[回车]
1 #include<stdio.h> 2 3 int main() 4 { 5 int arr[10] = {0}; 6 int n; 7 scanf("%d",&n); 8 while(n) 9 { 10 arr[n%10]++; 11 n /= 10; 12 } 13 for(int i=9; i>=0; --i) 14 while(arr[i]--) 15 printf("%d",i); 16 printf(" "); 17 return 0; 18 }
7、手工计算器
题目内容:
大名鼎鼎的帕斯卡(物理学家,发现大气压的那个)的老爸是一个税务官,每天晚上都要把白天记下的账目进行一系列计算,因此需要大量的计算工作,帕斯卡为了减轻父亲每日的劳顿,发明了手摇计算器。
我们现在也来实现一个计算器:
输入一系列的数值和符号,请你输出计算结果【只考虑加减】。
输入若干行,直到出现“=”,就可以输出结果了
输入格式:
5.0+
3.0+
6.0+
8.0-
9.0+
2.0=
输出格式:
15.00(保留2位小数)【回车】
输入样例:
4.0+
3.0-
2.0+
1.0=
输出样例:
6.00
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 5 int main() 6 { 7 double sum = 0; 8 char s[100] = ""; 9 char ch; 10 scanf("%s",s); 11 sum += atof(s); 12 do{ 13 ch = s[strlen(s)-1]; 14 switch(ch) 15 { 16 case '+': 17 scanf("%s",s); 18 sum += atof(s); 19 break; 20 case '-': 21 scanf("%s",s); 22 sum -= atof(s); 23 break; 24 } 25 }while(ch!='='); 26 printf("%.2f ",sum); 27 return 0; 28 }
8、三天打鱼两天晒网
题目内容:
元旦,新年伊始,小明又立志了,作为一个海南省的资深渔民,他计划从元旦那天开始,两天晒网,三天打鱼。
假定1月1日开始执行计划,那么1月1日和1月2日是晒网的日子,1月3日,4日,5日是打鱼的日子。请你计算一下,给定的日期,他应该是打鱼还是晒网?【计划从每年的1月1日开始执行】
输入格式:
2019,5,8
输出格式:
打鱼:fishing(回车)
晒网:sunning net(回车)
输入样例:
2019,5,8
输出样例:
fishing
1 #include<stdio.h> 2 int inputdate(); 3 int main() 4 { 5 int n = inputdate(); 6 /* if(-1==n){ 7 printf("Invalid input"); 8 } 9 else */ 10 if(n%5==0||n%5==4){ 11 printf("sunning net "); 12 } 13 else{ 14 printf("fishing "); 15 } 16 17 return 0; 18 } 19 int inputdate() 20 { 21 int year,month,day; 22 int n = scanf("%d,%d,%d",&year,&month,&day); 23 /* if(3 != n||year<1990||month>12||month<=0||day>31||day<=0){ 24 return -1; 25 } */ 26 27 int date[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31}, 28 {31,29,31,30,31,30,31,31,30,31,30,31}}; 29 30 int sum = 0, flag =(year%4==0&&year%100!=0)||(year%400==0); 31 for(int i=0;i<month-1;++i){ 32 sum +=date[flag][i]; 33 } 34 35 return sum+day; 36 }
9、照相
题目内容:
有n个同学(偶数个)和老师一起照毕业照,老师必须站在最中间,同学们分成两组,分列老师左右两边。
假设有A、B、C、D四个人。假设分好组,AB一组,CD一组。一共有8种不同的站位。
现假设组已经分好,那么一共有多少种不同的站法,需要照多少张照片?
输入格式:
4
输出格式:
8【回车】
输入样例:
4
输出样例:
8
1 /* 2 n个同学分成2组,每组n/2排列(阶乘) 3 {(n/2)!*(n/2)!}*2 4 */ 5 #include<stdio.h> 6 int fac(int n); 7 int main() 8 { 9 int n; 10 scanf("%d",&n); 11 printf("%d ",(fac(n/2)*fac(n/2)*2)); 12 return 0; 13 } 14 int fac(int n) 15 { 16 if(n==1) 17 return 1; 18 return n*fac(n-1); 19 }
10、字符串走马灯
题目内容:
多彩的霓虹灯点缀了我们的夜生活,很多店铺都用各式各样的霓虹灯来招徕顾客。
你是一家新店的店主,决定采用霓虹灯和传统走马灯结合的方式来展现商品信息。
走马灯的规则如下:
对于给定的字符串abc(不超过20),走马灯应该连续出现:
abc
bca
cab
abc
如此循环往复(第一行出现的字符串和最后一行的字符都和输入一模一样)
输入格式:
一个字符串,如abc
输出格式:
abc
bca
cab
abc
输入样例:
abc
输出样例:
abc
bca
cab
abc
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #define N 256 5 int main( ) 6 { 7 char s[N] = ""; 8 char *p = s; 9 gets(s); 10 /* 打印次数, 字符串长度, 输出的开始位置 */ 11 int n,t1,t2,i=0; 12 n = strlen(s)+1; 13 t1 = t2 = strlen(s); 14 15 if(1==strlen(s))/*只一个字符打印一次*/ 16 puts(s); 17 else 18 while(n--)/*打印字符串的个数+1次*/ 19 { 20 t1 = t2; 21 p = s+i;/*打印开始位置*/ 22 while(t1--){ 23 if(*p=='