1.a+b累加和的计算及scanf函数的输入
#include <stdio.h>
int main(){
int a,b;
while(scanf("%d%d",&a,&b)&&(a||b))//当输入结果为0 0时,循环结束
{
printf("%d",a+b); //每次循环做累积和
}
return 0;
}
2.a+b的和及scanf函数的特殊结束方式
#include <stdio.h>
int main()
{
int a,b;
while(scanf("%d%d",&a,&b)!=EOF)//按下特殊键ctrl+z时,循环结束
{printf("%d\n",a+b);}//输出a+b的和
return 0;
}
3.百钱白鸡问题
#include <stdio.h>
int main()
{
int a,b,c;//百钱白鸡,三重for循环即可解决
for(a=0;a<20;a++)
for(b=0;b<33;b++)
for(c=0;c<100;c+=3)
if(5*a+3*b+c/3==100&&a+b+c==100) printf("cock=%d,hen=%d,chicken=%d\n",a,b,c);//运用方程的思想,设三个变量,在循环之中不断判断if条件语句的成立条件再输出
return 0;
}
4.砝码称重问题
小明非常喜爱物理,有一天,他对物理实验室中常用的弹簧拉力计产生了兴趣。实验室中有两种质量不同的砝码,小明分别用a个第一种砝码放在弹簧拉力计上和b个第二种砝码放在弹簧拉力计上,假设每增加单位重量的砝码,弹簧拉力计的长度增加1,那么两次称量弹簧拉力计的长度差是多少呢?(假设拉力计不发生非弹性形变)
Input
第一行一个整数T,表示有T组数据。
之后T行,每行数据包含四个正整数,分别表示第一种砝码重量a,第一种砝码数量b,第二种砝码重量c,第二种砝码数量d。
T<25
0<a,b,c,d<=100
Output
对于每组数据,输出一个正整数,表示弹簧拉力计的长度差值。
Sample Input
1 2 3 4
1 4 2 2
1 3 2 1
Sample Output
0
1
解题思路:
#include <stdio.h>#include <math.h>
int main()
{
int a,b,c,d,n,l[10],i; //根据题目及输入可以判断,需要输入4个有效数据
scanf("%d",&n);
for(i=0;i<n;i++)//循环输出将要输出的数据组数
{scanf("%d%d%d%d",&a,&b,&c,&d);
l[i]=fabs(a*b-c*d);//由于输入数据是几组一起输入,因此可以用数组结合绝对值函数将计算结果保存,等待输出
}
for(i=0;i<n;i++)
printf("%d\n",l[i]);
}
/*解题感想:解决题目时,可以先根据输入与输出结果想出其中的思路,之后再不断改进
3.矩阵乘法:
给定三个矩阵A=(a ij) p*q, B=(b ij) r*s, C=(c ij) m*n
请编写程序判断A·B=C 是否成立。
第一行包括两个整数p 和q,表示矩阵A 的大小。后继p 行,每行有q 个整数,表示矩阵A的元素内容。
紧接着用相同的格式给出矩阵B 和矩阵C。
输入数据的最后一行是两个0,你的程序处理到这里时就应该退出了。
输入数据中所有的整数绝对值都不超过100。
如果A·B=C成立则输出”Yes”
如果A和B根本不能相乘,或A·B=C不成立,则输出”No”。注意大小写。
Original | Transformed |
2 3 1 2 3 4 5 6 3 2 1 2 3 4 5 6 2 2 22 28 49 64 1 2 1 2 2 1 2 1 2 2 2 4 1 2 1 2 1 2 1 1 1 1 1 1 0 0
Original | Transformed |
Yes No No
int main()
{
int m,n,p,q,r,s,k,sum,t=0;
int i,j;
do {
scanf("%d%d",&m,&n);//三重for循环作为三次数组输出
if(m==0&&n==0) break;//输入0 0直接跳出循环
int a[m][n];
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
scanf("%d%d",&p,&q);
int b[p][q];
for(i=0;i<p;i++)
for(j=0;j<q;j++)
{
scanf("%d",&b[i][j]);
}
scanf("%d%d",&r,&s);
int c[r][s];
for(i=0;i<r;i++)
for(j=0;j<s;j++)
scanf("%d",&c[i][j]);
if(n==p)//判断输入的数组a b是否满足矩阵乘法的原则
{
int d[m][q];
for(i=0;i<m;i++){
for(j=0;j<q;j++){
sum=0;
for(k=0;k<n;k++){
sum+=a[i][k]*b[k][j];//矩阵乘法的计算原则
}
d[i][j]=sum;//计算矩阵a b相乘的结果,方便与输入的矩阵c做对比(以后再也不用担心矩阵乘法会出错了)
}
}
for(i=0;i<r;i++)
for(j=0;j<s;j++)
{
if(d[i][j]!=c[i][j]) t+=1;
}
if(t==0) printf("Yes\n"); //判断矩阵相乘后结果是否正确
else printf("No\n");
}
else printf("No\n");
} while(m&&n);
return 0;
}
/*奈何工大与安大的OJ平台不通过,只有安科的承认。但运行没问题,结果也没问题,求指点呀!