C语言程序设计作业

1.运算符的应用I

输入一个五位的整数i,依次将其个位,十位,百位,千位,万位数取出来保存到变量a,b,c,d,e中;按照输出案例的格式依次输出 c,d,b,e,a.
输入
五位整数
输出
取个位a,十位b,百位c,千位d,万位数e, 按照格式依次输出 c,d,b,e,a.
样例输入
12345
样例输出
32415

#include<stdio.h>

int main()
{
    int x,a,b,c,d,e;
    scanf("%d",&x);
    a=x%10;
    b=x/10%10;
    c=x/100%10;
    d=x/1000%10;
    e=x/10000;
    printf("%d%d%d%d%d",c,d,b,e,a);
    
    return 0;
}

2.运算符的应用II

输入4个整数a,b,c,d;如果它们构成递增数列(所有相邻的元素满足<=关系),则输出1;否则输出0
样例输入
1 1 1 2
样例输出
1

#include<stdio.h>
int main()
{
    int a,b,c,d;
    scanf("%d%d%d%d",&a,&b,&c,&d);
    
    if(a<=b)
        if(b<=c)
            if(c<=d)
                printf("1");
            else
                printf("0");
        else
            printf("0");
    else
        printf("0");
        
    return 0;
}
#include<stdio.h>

int main()
{
    int a,b,c,d,x;
    int f=1,e=0;
    scanf("%d%d%d%d",&a,&b,&c,&d);
    
    x=b>=a?(c>=b?(d>=c?f:e):e):e;
    printf("%d",x);
}

3.运算符的应用III

输入4个整数a,b,c,d;分别表示两个分数的分子和分母 (A=a/b ; B=c/d) ;按照小学数学中的计算算法(step 1.通分统一分母为两个分数的分母的积; step 2: 分子相加),计算并按照指定输出分数A和B的和(不需要约分)
样例输入
1 2 3 4
样例输出
10/8

#include<stdio.h>

int main()
{
    int a,b,c,d,x,y;
    scanf("%d%d%d%d",&a,&b,&c,&d);
    
    y=b*d;
    x=a*d+c*b;
    printf("%d/%d",x,y);
    
    return 1;
} 

4.运算符的应用IV

如果一个4位的整数n的个位a,十位b,百位c,千位d的4次方的和等于该四位数( 即在数学上,n = a4 +b4 +c4 +d4),则称为整数n为 4叶水仙花数,输入一个 4位整数n,如果n是4叶水仙花数,则输出1;否则输出0
样例输入
1634
样例输出
1

#include<stdio.h>
#include<math.h>

int main()
{
    int a,b,c,d,n,x;
    scanf("%d",&n);
    
    a=n%10;
    b=n/10%10;
    c=n/100%10;
    d=n/1000;
    x=pow(a,4)+pow(b,4)+pow(c,4)+pow(d,4);
    if(n!=x)
        printf("0");
    else
        printf("1");
        
    return 1;
}

5.计算Relu函数

ReLu函数广泛应用于人工神经网络的激活函数。解决了Sigmoid激活函数的梯度消失的问题,推进了深度学习的发展。 然而,Relu函数是一个非常简单的分段函数:f(x) = x,如果x大于零,否则f(x) = 0,请编写程序,实现Relu函数。 输出保留到小数点后2位
输入
输入一个float类型数值x
输出
x小于零,输出0.00;否则保留2位小数输出x
样例输入
-3.2
样例输出
0.00

#include<stdio.h>

int main ()
{
    float x;
    scanf("%f",&x);
    if(x<=0)
    {
        printf("0.00");
    }else{
        printf("%.2f",x);
    }
    
    return 0;
}

6.圆柱体

编写程序,输入底圆的半径r, 圆柱体的高h,求解并输出底圆的面积s及周长c,和圆柱体的体积v
(保留2位小数输出,具体格式见样例 PI=3.1416 )
输入
float 类型的r 和 h
输出
float类型的s,c, v
样例输入
2 3
样例输出
s=12.57
c=12.57
v=37.70

#include<stdio.h>
#define PI 3.1416

int main ()
{
    float r,h,s,c,v;
    scanf("%f %f",&r,&h);
    s=PI*r*r;
    c=PI*2*r;
    v=PI*r*r*h;
    printf("s=%.2f\nc=%.2f\nv=%.2f",s,c,v);
}

7.数学函数求解

编写程序求解以下数学函数,f(x) = max{ min{ 5x^2, 16x } ,(x mod 4) * 6 } , 其中x为整数
输入
整数x
输出
输出f(x)
样例输入
1
样例输出
6
提示
1.注意c语言表述与数学表述的区别!
2.mod表示求模,即求余数运算;x^y 表示x的y次幂

#include<stdio.h>
#define max(a,b) (a>b?a:b)
#define min(a1,b1) (a1>b1?b1:a1)
#include<math.h>

int main()
{
    int a,b,a1,b1,c,d,x,e;
    scanf("%d",&x);
    
    d=(x%4)*6;
    a1=5*pow(x,2);
    b1=x*16;
    c=min(a1,b1);
    e=max(c,d);
    printf("%d",e);
    
    return 0;
}

8.一元二次方程

编写程序,输入二次项系数a,一次项系数b,常数项c;编写程序求解并输出axx + b*x + c = 0的两个根 (保留2位小数输出,具体格式见样例)
输入
float类型的a,b,c
输出
float类型的x1,x2
样例输入
1 -5 6
样例输出
x1=3.00
x2=2.00

#include<stdio.h>
#include<math.h>

void main()
{
    float a,b,c,disc,x1,x2,p,q;
    scanf("%f%f%f",&a,&b,&c);
    
    disc=b*b-4*a*c;
    p=-b/(2*a);
    q=sqrt(disc)/(2*a);
    x1=p+q;
    x2=p-q;
    printf("x1=%.2f\nx2=%.2f",x1,x2);
}

9.一元二次方程V2

编写程序,输入二次项系数a,一次项系数b,常数项c;输出axx + b*x + c = 0的两个根 (格式同 problem 1403), 如果有实数根;否则输出“no result”
样例输入
2 -5 6
样例输出
no result

#include<stdio.h>
#include<math.h>
void main()
{
    float a,b,c,disc,x1,x2,p,q;
    scanf("%f%f%f",&a,&b,&c);
    
    disc=b*b-4*a*c;
    p=-b/(2*a);
    q=sqrt(disc)/(2*a);
    x1=p+q;
    x2=p-q;
    
    if((b*b-4*a*c)<0)
        printf("no result");
    else
        printf("x1=%.2f\nx2=%.2f",x1,x2);
}

10.简单判断

编写一个程序,在程序中从键盘输入三个整数,比较它们的大小,依次输出最小的数和最大的数
输入
输入a b c三个整数
输出
依次输出最小的数和最大的数,两个数用空格隔开
样例输入
222 44 33
样例输出
33 222

#include<stdio.h>

int main()
{
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    
    int t;
    if(a<b)
        {t=a;a=b;b=t;}
    if(a<c)
        {t=a;a=c;c=t;}
        
    if(b<c){
        printf("%d ",b); 
        printf("%d",a); 
    }else{
        printf("%d",c); 
        printf("%d",a);
    }
}

11.分段函数

求解下面分段函数

  1. 当 x <= -100:y=x;
  2. 当 -100 < x <=-10:y=x^2;
  3. 当 -10 < x < 0:y=x^3;
  4. 当 0 =< x < 10:y=x^4;
  5. 否则:y=0;
    输入
    整数x
    输出
    整数y
    样例输入
    -100
    样例输出
    -100
    提示
    此处x^2, x^3, x^4 分别代表x的2次方,3次方,4次方
#include<stdio.h>

int main()
{
    int x,y;
    scanf("%d",&x);
    if(x<=-100)
        y=x;
    else if(x>-100&&x<=-10)
        y=x*x;
    else if(x>-10&&x<0)
        y=x*x*x;
    else if(x>=0&&x<10)
        y=x*x*x*x; 
    else
        y=0; 
printf("%d",y);
} 

12.Dancing number判定 V1

我们称n位整数 X = x_{n}x_{n-1}x_{n-2}…x_{2}x_{1} 是一个dancing number,如果X的第i位数x_{i} 同时大于 x_{i-1}和 x_{i+1} 或者 同时小于 x_{i-1}和 x_{i+1} , 其中 i 属于 {2,3,…, n-2, n-1 }
即满足以下两个条件之一:

  1. x_{1} < x_{2} 并且 x_{2} > x_{3} 并且 x_{3} < x_{4} 并且 x_{4} > x_{5}…
  2. x_{1} > x_{2} 并且 x_{2} < x_{3} 并且 x_{3} > x_{4} 并且 x_{4} < x_{5}…
    编写程序判断输入的正整数是否为 5位 dancing number.
    输入
    整数x
    输出
    如果x不是5位正整数,输出"input error"; 如果 x是 5位dancing number,输出"yes" ;否则输出"no"
    样例输入
    12143
    样例输出
    yes
#include<stdio.h>

int main()
{
    int a,b,c,d,e,f,g;
    int i;
    scanf("%d",&a);
    b=a;
    for(i=0;b>=1;i++)
    {b=b/10;} 
    g=a%10;
    f=a/10%10;
    e=a/100%10;
    d=a/1000%10;
    c=a/10000;
    if(i==5){
        if(d>c&&d>e&&f>e&&f>g)
            printf("yes");
        else if(d<c&&d<e&&f<e&&f<g)
            printf("yes");
        else
            printf("no");
    }else{
        printf("input error");
    }
}

13.Dancing Number的判定 V2

输入一个正整数 n (100 =< n <= 200000000), 输出是否为dancing number,及n的位数
输入
输入一个正整数 n
输出
输出是否为dancing number,及n的位数(输出格式为:0或1,位数 其中0表示n不是dancing number,1表示n是dancing number),如果100 =< n <= 200000000;否则输出“error input”
样例输入
123456
样例输出
0,6
方法一

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
 
int main()
{
    int k = 0;
    int n,i,a,b,c,n1;
    int arr[20] = {0};
    scanf("%d",&n);
    n1 = n;
    while(n != 0)
    {
        n=n/10;
        k++;    
    }   
     
    n = n1;
     
    for(i=0;i<=k-1;i++)
    {
        a=n%10;
        arr[i] = a;
        n = n/10;
    }
     
    n = n1;
     
    if(n>=100 && n<=2*pow(10,8))
    {
        if(k%2 == 1)
        {
            for(a=0,b=1,c=2;c<=k-1;a+=2,b+=2,c+=2)
            {
                if(arr[b]>arr[a] && arr[b]>arr[c])
                {
                    continue;
                }
                else
                {
                    goto wocao;
                }
            }
            printf("1,");
            printf("%d",k);
            exit(0);
        }
        else
        {
            for(a=0,b=1,c=2;b<=k-1;a+=2,b+=2,c+=2)
            {
                if(arr[b]>arr[a] && arr[b]>arr[c])
                {
                    continue;
                }
                else
                {
                    goto wocao;
                }
            }   
            printf("1,");
            printf("%d",k);
            exit(0);    
        }
    }
    else
    {
        printf("error input");
        exit(0);    
    }
     
     
wocao:
     
    if(k%2 == 1)
    {
         
        for(a=0,b=1,c=2;arr[b]<arr[a] && arr[b]<arr[c];a+=2,b+=2,c+=2)
        {
                continue;
        }
        if(c == k-1)
        {
            printf("1,");
        }
        else
        {
            printf("0,");
        }
    }
    else
    {
        for(a=0,b=1,c=2;arr[b]<arr[a] && arr[b]<arr[c];a+=2,b+=2,c+=2)
        {
            continue;
        }
                 
        if(b == k-1)
        {
            printf("1,");
        }
        else
        {
            printf("0,");
        }
    }
 
    printf("%d",k);
     
    return 0;
     
} 

方法二

#include<stdio.h>
#include<math.h>

int main()
{
	int n, h = 0, t = 0, j, a[9], f = 0, x = 0, y = 0;
	scanf_s("%d", &n);

	if (n>=100 && n<=200000000)
	{
		h = n;
		while (h != 0)
		{
			h/=10;t++;
		}
		for(j=0;j<t;j++)
		{
			f=(int)pow(10, j);
			a[j]=n/f%10;
		}
		if(t%2)
		{
			for(j=1;j<=(t-1)/2;j++)
			{
				if(a[2*j-2]<a[2*j-1] && a[2*j-1]>a[2*j])
					x++;
				else if(a[2*j-2]>a[2*j-1] && a[2*j-1]<a[2*j])
					y++;
				else
					break;
			}
		}
		else
		{
			for(j=1;j<=t/2;j++)
			{
				if(j<t/2)
				{
					if(a[2*j-2]<a[2*j-1] && a[2*j-1]>a[2*j])
						x++;
					else if(a[2*j-2]>a[2*j-1] && a[2*j-1]<a[2*j])
						y++;
				}
				else if(j == t / 2)
				{
					if(a[2*j-2]<a[2*j-1])
						x++;
					else if(a[2*j-2]>a[2*j-1])
						y++;
				}
				else
					break;
			}
		}
		if(t%2 == 1)
		{
			if(x==(t - 1)/2 || y==t/2)
				printf("%d,%d",1,t);
			else
				printf("%d,%d",0,t);
		}
		else if(t%2 == 0)
		{
			if(x==t/2 || y==t/2)
				printf("%d,%d",1,t);
			else
				printf("%d,%d",0,t);
		}

	}
	else
		printf("error input");
	return 0;
}

14.简单循环求和

编写一个程序,输入一个整数n(1 <= n <= 1000),如果n是奇数, 输出 1+3+5+...+n的值。如果n是偶数,则输出2 + 4 + … + n
输入
输入整数n
输出
n不满足1 <= n <= 1000,则输出error input
n为奇数,则输出1+3+…+n
n为偶数,则输出2+4…+n
样例输入
10
样例输出
30

#include<stdio.h>

int main()
{
    int a,b,c;
    scanf("%d",&a);
    b=(1+a)*((a+1)/2)*0.5;
    c=(2+a)*(a/2)*0.5;
    if(1<=a&&a<=1000)
        if(a%2==1)
            printf("%d",b);
        else
            printf("%d",c);
    else
        printf("error input");
}

15. 级数运算I

输入正整数n,求12+23+34+…n(n+1)
样例输入
3
样例输出
20

#include <stdio.h>
 
void main()
{
    int a,b,n,sum=0;
    scanf("%d",&n);
    for(a=1,b=2;a<=n;a++,b++)
        sum=a*b+sum;
    printf("%d",sum);
}
16.级数运算II

输入正整数n,输出满足1+2+3+…+i <= n 的最大的i
样例输入
8
样例输出
3

#include <stdio.h> 

int main()
{
    int a,n,sum=0;
    scanf("%d",&n);
    for(a=1;;a++)
    {
        sum=sum+a;
        if(sum>n)
        {
            printf("%d",a-1);
            break;
    	}
	}
    return 0;
}

17.级数运算III

输入一个正整数 n(1 =< n <= 10), 求级数 1/1! - 1/2! + 1/3! - … (-1)^{n+1}/n!的值,(采用double类型,保留8位小数)。
输入
一个正整数 n(1 =< n <= 10)
输出
1/1! - 1/2! + 1/3! - … (-1)^{n+1}/n!的值,当n满足要求;否则输出"error input"
样例输入
5
样例输出
0.63333333

#include <stdio.h> 
#include<math.h>

int main()
{
    int a,n,sum=1;
    double b=0;
    scanf("%d",&n);
    if(n>=1 && n<=10){
        for(a=1;a<=n;a++){
            sum=sum*a;
            b=b+pow(-1,a-1)/sum;}
        printf("%.8f",b);}
    else
        printf("error input");
    return 0;
}

18.级数运算V

按照以下公式求圆周率pi,运算到最后一个乘法项 小于 k = 1 + 1e-10 ( 即 k = 1.0000000001)为止。
在这里插入图片描述
输出每次迭代的结果。 要求采用double类型表示和计算pi
按照以下方式:
printf(“%-3d: item=%-15.10lf; pi=%-15.10lf\n”,k,item,pi);//k是迭代次数(首次迭代输出1),item为乘项(首个累乘项为2/sqrt(2)),pi为当前累乘值
例如,第一行输出:
1 : item=1.4142135624 ; pi=2.8284271247

#include <stdio.h>
#include<math.h>

int main()
{
    double pi,item;
    int k;
     
    for(pi=2,k=1,item=sqrt(2);;k++)
    {
        pi=pi*2/item;
        printf("%-3d: item=%-15.10lf; pi=%-15.10lf\n",k,2/item,pi);
        item=sqrt(2+item);
         
        if(2/item<(1+1e-10))
            break;
    }
    return 0;
}

19.星钻图形输出V2

输入一个正整数 n(n>=1),从以下范例中寻找规律,输出 (2*n-1) 行符号:
在这里插入图片描述

#include<stdio.h>
 
int main()
{
    int n = 0, a,b,c,d,e=0;
     
    scanf("%d", &n);
    for (a=1;a<=n;a++)
    {
        for(b=a;b<=n-1;b++)
        {
            printf(" ");
        }
        for(c=1;c<=2*a-1;c++)
        {
            printf("*");
        }
        printf("\n");
    }
 
    for(a=n+1;a<=2*n-1;a++)
    {
        for(b=1;b<=a-n;b++)
        {
            printf(" ");
        }
        e++;
        for(d=1;d<=(c-1)-2*e;d++)
        {
            printf("*");
        }
        printf("\n");
    }
     
    return 0;
}

20.求不大于n的所有素数的和

输入一个正整数 n(10 =< n <= 10000), 求不大于n的所有素数的和
输入
输入一个正整数 n(10 =< n <= 10000)
输出
输出不大于n的所有素数的和,如果10 =< n <= 10000;否则,输出"error input"
样例输入
20
样例输出
77

#include<stdio.h>
 
int main()
{
    int n = 0,i = 0,sum = 0,j = 0;;
    scanf("%d",&n);
     
    if(n>=10 && n<=10000)
    {
        for(i=5;i<=n;i+=2)
        {
            for(j=3;j<i;j++)
            {
                if(i%j == 0)
                {
                    break;
                }   
            }
            if(j == i)
            {
                sum=sum+i;
            }
        }
        printf("%d",sum+5);     
    }
    else
    {
        printf("error input");
    }
    return 0;
}

21.N叶水仙花数

设 n位正整数 k 的第 i (1<=i<=n) 位数为:ki; 如果满足 k = k1^n + k2^n +…+ knn(kin为数学表示,即表示ki的n次方), 则称 k为 n叶水仙花数。 输入一个正整数 m (1 =< m <= 9),从小到大输出所有的1叶水仙花数, 2叶水仙花数, …, m叶水仙花数
输入
正整数m
输出
输出所有的1叶水仙花数, 2叶水仙花数, …, m叶水仙花数,如果1 =< m <= 9;否则输出“error input”
样例输入
4
样例输出
1
2
3
4
5
6
7
8
9
153
370
371
407
1634
8208
9474

#include<stdio.h>
  
int Pow(int x,int y)
{
    int z,result = 1;
    for(z=1;z<=y;z++)
    {
        result=result*x;
    }
    return result;
}
  
int main()
{    
    int a,b,k,n = 0,sum = 0,a1;
    scanf("%d",&k);
      
    if(k>=1 && k<=9)
    {
        for(a=1;a<=Pow(10,k);a++)
        {
            a1=a;
            while(a != 0)
            {
                a=a/10;
                n++;  
            }
            a = a1;
            while(a>0)
            {
                b=a%10;
                sum=sum+Pow(b,n);
                a=a/10;
            } 
            a = a1;
            if(sum == a)
            {
                printf("%d\n",sum);    
            }
            n = 0;
            sum = 0;
        }
    }
    else
    {
        printf("error input");
    }
    return 0;
}

22.斐波数列I

斐波数列定义如下:a(1)=1,a(2)=1,当i>=3, a(i) = a(i-1) + a(i-2).
输入一个正整数 n (1 =< n <= 40), 逆序输出斐波数列的前n个元素。
输出格式:每行输出10个数,其中行末的数按"%9d\n"的格式输出;最后一个数按"%9d"的格式输出; 其他数按照"%9d,“的格式输出.
输入
正整数 n (1 =< n <= 40)
输出
按照指定格式逆序输出斐波数列的前n个元素,如果1 =< n <= 40;否则,输出"error input”
样例输入
12
样例输出
144, 89, 55, 34, 21, 13, 8, 5, 3, 2, 1, 1

#include<stdio.h>
int main()
{
    int n,i;
    int series[40]={1,1};
    scanf("%d",&n);
    if(n>=1 && n<=40)
    { 
        for(i=2;i<40;i++)
        { 
            series[i]=series[i-1]+series[i-2];
        }
        for(i=1;i<=n;i++)
        {
            if((n-i)>0)
            {
                if(i!=10&&i!=20&&i!=30&&i!=40)
                    printf("%9d,",series[n-i]);
                else
                    printf("%9d\n",series[n-i]);
            }
            else if(n-i==0)
                printf("%9d",series[0]);  
        }
    }
    else
        printf("error input"); 
    return 0;
}

23.数组搜索

从键盘输入整数n(5=< n <= 100),然后依次输入n个整数,存放在整数数组alist。查找alist数组中的最接近数组平均值(即与平均值的差的绝对值最小)的元素及其下标(如果存在多个满足条件的元素,则只输出下标最大的元素及其下标).
输入
整数n(5=< n <= 100),然后依次输入n个整数。
输出
alist数组中的最接近平均值的元素及其下标(如果存在多个满足条件的元素,则只输出下标最大的元素及其下标)
样例输入
5
3 2 1 4 -9
样例输出
a[2]=1

#include<stdio.h>
#include<math.h> 
int main()
{
    int t = 0,sum = 0,c=0;
    int i,j;
    double average,n,a,b,tmp;
    int alist[100];
    scanf("%lf",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&t);
        alist[i] = t;
        sum=sum+t;
    }
    average=sum/n;        
    a=fabs(alist[0]-average);
    for(j=1;j<n;j++)
    {
        if(fabs(alist[j]-average)<=a)
        {
            a = fabs(alist[j]-average);
            c=j;
        }
    }
    printf("a[%d]=%d",c,alist[c]);
    return 0;
} 

24.K-递增子序列的搜索

从键盘输入整数m ( 10=< m <= 100),然后依次输入m个整数,存放在整数数组alist。输入正整数 k(4=< k <= 10).从左至右查找并输出alist数组中的第一个长度为k的递增的连续序列(每个元素按“%4d”格式输出),如果不存在则输出"k-list does not exist"。
输入
依次输入整数m,m个整数,整数k
输出
如果m,k 不满足要求,输出"error input";
否则输出alist数组中的第一个长度为k的递增的连续序列,如果不存在则输出"k-list does not exist"。
样例输入
20
1 2 3 6 5 4 7 8 9 10 3 6 9 8 5 2 1 4 10 7
5
样例输出
4 7 8 9 10

#include<stdio.h>
int main()
{
    int a,n,i,k,j,m=0,count=0;
    int arr[100];
    scanf("%d",&n);
    if(n>=10 && n<=100)
    {
        for(i=0;i<n;i++)
        {
            scanf("%d",&a);
            arr[i]=a;
        }
        scanf("%d",&k);
        if(k>=4 && k<=10)
        {
            for(i=0;i<n;i++)
            {
                count=0;
                j=i;
                for(;j<k+i-1;j++)
                {
                    if(arr[j+1]>arr[j])
                    {
                        count++;
                        continue;
                    }
                    else
                        break;  
                }
                if(count == k-1)
                    break;
            }
            if(count != k-1)
            {
                printf("k-list does not exist");
                exit(0); 
            }
            for(i=0;i<k;i++)
                printf("%4d",arr[j-3-(k-4)+i]);
        }
        else
            printf("error input");
    }
    else
        printf("error input");
    return 0;
}

25.矩阵的乘法

输入正整数m, p,n(2<=m,n,p<=100) ,输入mp的矩阵A;pn的矩阵B,计算并输出矩阵C = A * B(数组元素输出格式为"%4d")。
计算公式如下:
在这里插入图片描述样例输入
2 3 4

1 2 1
0 2 0

1 0 1 0
0 1 0 1
2 1 0 1
样例输出
3 3 1 3
0 2 0 2

#include<stdio.h>
int main()
{
    int m,p,n,a,i,j,sum=0,k=0,x=0,y=0,z=0;
    scanf("%d%d%d",&m,&p,&n);
    int arr1[m][p],arr2[p][n],arr3[m][n];
    for(i=0;i<m;i++)
    {
        j=0;
        for(j=0;j<p;j++)
        {
            scanf("%d",&a);
            arr1[i][j] = a;
        }
    }
    for(i=0;i<p;i++)
    {
        j=0;
        for(j=0;j<n;j++)
        {
            scanf("%d",&a);
            arr2[i][j] = a;
        }
    }
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            z=0;
            for(k=0;k<p;k++)
            {
                a=arr1[x][z]*arr2[z][y];
                sum=sum+a;
                z++;
            }
            printf("%4d",sum);
            sum=0;
            y++;
        }
        x++;
        y=0;
        if(i != m-1)
            printf("\n");
    }
    return 0;
}

26.字符串函数

输入两个字符数组(字符串) str1[50],str2[50](采用scanf语句 “%s” 格式) , 按要求输出以下内容(输出数据间用逗号间隔开):
1.输出str1中包含多少个字符;
2.依次输出str1中数字字符,大小写英文字符及其他字符的个数;
3.如果str1与str2相等 ,输出str1, 否则输出str1 和str2的连接;
样例输入
asdf123ASDF!!!
dfe3
样例输出
14,3,8,3,asdf123ASDF!!!dfe3

#include<stdio.h>
#include<string.h>
int main()
{
    char str1[50],str2[50];
    int a,b,i,j=0,k=0,n=0;
    scanf("%s",str1);
    scanf("%s",str2);
    a=strlen(str1);
    b=strlen(str2);
    for(i=0;i<a;i++)
    {
        if(str1[i]>='0' && str1[i]<='9')
            j++;
        else if(str1[i]>='a' && str1[i]<='z' || str1[i]>='A' && str1[i]<='Z') 
            k++;
        else
            n++;
    }
    if(strcmp(str1,str2) == 0)
        printf("%d,%d,%d,%d,%s",a,j,k,n,str1);
    else
        printf("%d,%d,%d,%d,%s%s",a,j,k,n,str1,str2);
    return 0;
}