在命令行输入表达式,实现计算器功能(直接在主函数实现就行)
1 #include<stdio.h>
2 #include<string.h>
3 int StrNum(const char *p)
4 {
5 int sum=0;
6 while(*p)
7 {
8 sum=sum*10+(*p-'0');
9 p++;
10 }
11 return sum;
12 }
13 int main(int argc, const char *argv[])
14 {
15 int num1=StrNum(argv[1]);
16 int num2=StrNum(argv[3]);
17 switch(*argv[2])
18 {
19 case'+':printf("%d\n",num1+num2);break;
20 case'-':printf("%d\n",num1-num2);break;
21 case'*':printf("%d\n",num1*num2);break;
22 case'/':{
23 if((num2)==0)
24 printf("除数不能为0\n");
25 if((num2)!=0)
26 printf("%.2f\n",(float)num1/num2);
27 };break;
28 default:printf("表达式输入错误\n");break;
29 }
30 return 0;
31 }
2.使用指针计算每一列的和
void Sum(int (*p)[],int line,int row)
1 #include<stdio.h>
2 #include<string.h>
3 void Sum(int (*p)[3],int line,int row)
4 {
5 int i,j,sum;
6 for(i=0;i<line;i++)
7 {
8 sum=0;
9 for(j=0;j<row;j++)
10 {
11 sum=sum+*(*(p+i)+j);
12 }
13 printf("第%d行和为%d\n",i+1,sum);
14 }
15 }
16 void lSum(int (*p)[3],int line,int row)
17 {
18 int i,j,sum;
19 for(j=0;j<row;j++)
20 {
21 sum=0;
22 for(i=0;i<line;i++)
23 {
24 sum=sum+*(*(p+i)+j);
25 }
26 printf("第%d列和为%d\n",j+1,sum);
27 }
28 }
29 int main(int argc, const char *argv[])
30 {
31 int a[3][3]={1,2,3,4,5,6,7,8,9};
32 Sum(a,3,3);
33 lSum(a,3,3);
34 return 0;
35 }
3. 使用指针计算每行最大值,每列最小值
void Max(int (*p)[],int line,int row)
void Min(int (*p)[],int line,int row)
1 #include<stdio.h>
2 #include<string.h>
3 void Max(int (*p)[4],int line,int row)
4 {
5 int i,j,max;
6 for(i=0;i<line;i++)
7 {
8 for(j=0;j<row;j++)
9 {
10 if(j==0)
11 max=*(*p+j);
12 if(max<*(*p+j))
13 max=*(*p+j);
14 }
15 printf("第%d行最大值为%d\n",i+1,max);
16 p++;
17 }
18 }
19
20 void Min(int (*p)[4],int line,int row)
21 {
22 int i,j,min;
23 for(i=0;i<row;i++)
24 {
25 for(j=0;j<line;j++)
26 {
27 if(j==0)
28 min=*(*(p+j)+i);
29 if(min>*(*(p+j)+i))
30 min=*(*(p+j)+i);
31 }
32 printf("第%d列最小值为%d\n",i+1,min);
33 }
34 }
35 int main(int argc, const char *argv[])
36 {
37 int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
38 Max(a,3,4);
39 Min(a,3,4);
40 return 0;
41 }