东北大学2014年C语言程序设计
第一题
5余1,6余5,7余4,11余10的最小数
#include<stdio.h>
#define max 1000000
int main()
{
for(int i = 1 ; i < max ;i++)
{
int a = (i - 1) % 5;
int b = (i - 5) % 6;
int c = (i - 4) % 7;
int d = (i - 10)% 11;
if(a == 0 && a == b && b == c && c == d)
{
printf("%d ",i);
break;
}
}
return 0;
}
第二题
//输入一个字符串,统计大写小写字符个数,并将大写字符反序输出
#include<stdio.h>
#include<string>
#define maxsize 100
void reverse(char *str)
{
char *p = str;
while(*p)
{
p++;
}
p = p - 1;
while(p >= str)
{
if((*p>='A')&& (*p<='Z'))
{
printf("%c",*p);
}
p--;
}
}
int main()
{
int lower = 0;
int upper = 0 ;
char str[maxsize];
gets(str);
for(int i = 0 ; str[i]!='\0';i++)
{
if (str[i] >= 'A' && str[i] <= 'Z')
upper++;
else if (str[i] >= 'a' && str[i] <= 'z')
lower++;
}
printf("%d,%d",lower,upper);
reverse(str);
return 0;
}
第三题 给定一个二维数组,M行N列,输出满足行最大列最小条件的元素
#include<stdio.h>
#include<stdlib.h>
void andian(int **arr,int m,int n)
{
int k,flag = 0;
for(int i = 0 ; i < m ; i++)
{
int max = arr[i][0];
for(int j = 0 ; j < n; j++)
{
if(max < arr[i][j])
{
max = arr[i][j];
}
k = j ; //行最大
}
int min = arr[i][k];
for(int i = 0 ; i < m; i++)
{
if(min > arr[i][k])
{
min = arr[i][k];
}
}
if(min == max)
{
printf("第%d行第%d个元素,鞍点为:%d",i+1,k+1,max);
flag = 1;
}
}
if(flag == 0)
{
printf("没有鞍点");
}
}
int main()
{
int i,j,k,max,min;
int M,N;
scanf("%d %d",&M,&N);
int** array;
//分配指针空间
array = (int **)malloc(sizeof(int *) * M);
for (i = 0; i < M; i++)
array[i] = (int *)malloc(sizeof(int) * N);
printf("请输入数组元素:\n");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
scanf("%d",&array[i][j]);
//scanf("%d",&*((*array+i)+j));
}
printf("数组有:\n");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
printf("%-5d\t",array[i][j]);
printf("\n");
}
andian(array,M,N);
return 1;
}
保持好奇心!

浙公网安备 33010602011771号