上机练习
习题3-3乘积的末三位
#include<iostream>
#include<cstdio>
#include<cstring>
#define MOD 1000
using namespace std;
main()
{
char a[100];
int sum=0,ssum=1;
int num[100];
int n=0;
while(scanf("%s",a)!=EOF)
{
int len=strlen(a);//字符串转化为数
int i;
for( i=0;i<len;i++)
{
if(a[i]>='A'&&a[i]<='Z') break;//逻辑
if(a[i]=='-'||a[i]=='+')continue;
if(a[i]-'0'>=0&&a[i]-'0'<=9)
sum=(sum*10+a[i]-'0')%MOD;
}
if(a[i]>='A'&&a[i]<='Z') continue;//逻辑
ssum=ssum*sum%MOD;
sum=0;
}
printf("%d",ssum);
}
习题3-4 计算器
#include<iostream>
#include<cstdio>
#include<cstring>
#define MOD 1000
using namespace std;
int main()
{
char s[100];
while(cin>>s){
int i,j,a=0,b=0;
int sum=0;
int n=strlen(s);
for(i=0;i<n;i++)
{
if(s[i]-'0'>=0&&s[i]-'0'<=9)
a=a*10+s[i]-'0';
if(s[i]=='+'){
j=0;
break;
}
if(s[i]=='-'){
j=1;
break;
}
if(s[i]=='*'){
j=2;
break;
}
}
for(;i<n;i++)
{
if(s[i]-'0'>=0&&s[i]-'0'<=9)
b=b*10+s[i]-'0';
}
switch(j)
{
case 0:
sum=a+b;
break;
case 1:
sum=a-b;
break;
case 2:
sum=a*b;
break;
}
printf("%d\n",sum);
}
}
习题3-5.m*n矩阵转90度
左转90度
#include<iostream>
#include<cstring>
int main(){
int m,n,b[10][10];
int a[10][10];
scanf("%d%d",&m,&n);
int i,j;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
{
scanf("%d",&a[i][j]);
b[n-j+1][i]=a[i][j];
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
if(j!=m)
printf("%d ",b[i][j]);
else{
printf("%d\n",b[i][j]);
}
}
}//原第i行等于现第i列,找规律得原第j列等于现第(n-j+1)行;
右转90度
#include<cstdio>
#include<iostream>
#include<cstring>
int main(){
int m,n,b[10][10];
int a[10][10];
scanf("%d%d",&m,&n);
int i,j;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
{
scanf("%d",&a[i][j]);
b[j][m-i+1]=a[i][j];
}
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
{
if(j!=n)
printf("%d ",a[i][j]);
else{
printf("%d\n",a[i][j]);
}
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
if(j!=m)
printf("%d ",b[i][j]);
else{
printf("%d\n",b[i][j]);
}
}
}//原第j列等于现第j行,原第i行等于现第m-i+1列,
3-8手机键盘
#include <stdio.h>
#include<string.h>
#include<math.h>
int main ()
{
char *p,*s[8]={"abc","def","ghi","jkl","mno","pqr","stu","vwxyz"};
char word[10];
fgets(word,sizeof(word),stdin);//输入
int n=strlen(word);
int i,j;
for( i=0;i<n;i++)
{
for(j=0;j<8;j++)
if(p=strchr(s[j],word[i]))//strchr(*str,character)返回第一个character的指针
{
printf("%c%d",word[i],p-s[j]+1);}
}
return 0;
}