1040 统计不同数字的个数
Description
由键盘输入20个整数,统计不同数字的个数。
输入样例
70 5 14 22 19 2 99 67 13 66 5 93 44 38 22 11 39 22 33 11
输出样例
16
提示
因为5有1个重复数字,11有1个重复数字,22有2个重复数字
#include<stdio.h>
int main()
{
int a[20],i,j,t,count=0;
for(i=0;i<20;i++)//输入
{
scanf("%d",&a[i]);
}
for(i=0;i<19;i++)//冒泡排序
{
for(j=0;j<19-i;j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for(i=0;i<20;i++)//若某两个相同,则count+1
{
if(a[i]==a[i+1])count++;
}
printf("%d\n",20-count);
return 0;
}
//思想:先排序,再找重复的数字
1046 计算高精度加法
Description
由键盘输入两个位数很长的整数(一行一个,最多不超过80位)
试计算并输出这两个数的和。
输入样例
1234567890123456789353534532453453453434534
987654321098765324534534534534532
输出样例
1234567891111111110452299856987987987969066
提示
注意,一个普通的变量不能保存十多位长的整数
#include <stdio.h>
#include <string.h>
int main()
{
char a[80],b[80];
int c[80]={0},d[80]={0},e[80]={0},i,j,m,n,k=0;
gets(a);//输入a字符串
gets(b);//输入b字符串
m=strlen(a);//a字符串的长度
n=strlen(b);//b字符串的长度
for(i=0;i<m;i++)
{
c[80-m+i]=a[i]-'0';
}
for(j=0;j<n;j++)
{
d[80-n+j]=b[j]-'0';
}
for(i=79;i>=0;i--)
{
e[i]=c[i]+d[i]+k;
k=0;
if(e[i]>=10)
{
e[i]=e[i]%10;
k=1;
}
}
for(i=0;e[i]==0;i++);
for(;i<80;i++)
{
printf("%d",e[i]);
}
return 0;
}
1051 找矩阵中的鞍点
Description
由键盘输入一个3*4(3行4列)的矩阵,输出矩阵中的鞍点
(即在矩阵行中最大,列中最小的数)。
若没有鞍点,输出“NO”字样。
输入样例
87 90 110 98
70 97 210 65
98 45 120 30
输出样例
110
#include<stdio.h>
int main()
{
int a[3][4],i,j,max1,max2,max3,min1,min2,min3,min4;
for(i=0;i<3;i++)//输入矩阵
{
for(j=0;j<4;j++)
{
scanf("%d",&a[i][j]);
}
}
max1=a[0][0];//找第1行最大点
for(j=0;j<4;j++)
{
if(a[0][j]>max1)
{
max1=a[0][j];
}
}
max2=a[1][0];//找第2行最大点
for(j=0;j<4;j++)
{
if(a[1][j]>max2)
{
max2=a[1][j];
}
}
max3=a[2][0];//找第3行最大点
for(j=0;j<4;j++)
{
if(a[2][j]>max3)
{
max3=a[2][j];
}
}
min1=a[0][0];//找第1列最小点
for(i=0;i<3;i++)
{
if(a[i][0]<min1)
{
min1=a[i][0];
}
}
min2=a[0][1];//找第2列最小点
for(i=0;i<3;i++)
{
if(a[i][1]<min2)
{
min2=a[i][1];
}
}
min3=a[0][2];//找第3列最小点
for(i=0;i<3;i++)
{
if(a[i][2]<min3)
{
min3=a[i][2];
}
}
min4=a[0][3];//找第4列最小点
for(i=0;i<3;i++)
{
if(a[i][3]<min4)
{
min4=a[i][3];
}
}
if(max1==min1||max1==min2||max1==min3||max1==min4)
printf("%d",max1);
else if(max2==min1||max2==min2||max2==min3||max2==min4)
printf("%d",max2);
else if(max3==min1||max3==min2||max3==min3||max3==min4)
printf("%d",max3);
else
printf("NO");
return 0;
}
两数和为1909
描述
由键盘输入10个整数,编程判断是否存在两个数的和为1909,
存在输出Y,不存在输出N
输入格式
10个整数,由空格分隔
输出格式
Y或者N
输入样例
2 1900 42 3123 31 23 343 213 34 9
输出样例
Y
#include<stdio.h>
int main()
{
int a[10],i,j,k;
for(i=0;i<10;i++)//输入
{
scanf("%d",&a[i]);
}
for(i=0;i<10;i++)
{
for(j=i+1;j<10;j++)
{
if(a[i]+a[j]==1909)
{
k=1;
printf("Y");
break;//break只向外跳一层for循环
}
}
if(k==1) break;
//找到了在这里就要再设置跳出最外一层循环
}
if(k!=1) printf("N");
return 0;
}