美文网首页C语言
2021-03-30(二维数组)

2021-03-30(二维数组)

作者: 张轻舟 | 来源:发表于2021-03-30 17:42 被阅读0次

首先说一下会用到的标准库函数,gets(),puts(),strlen(),前两个是在头文件stdio.h中,后一个是在string.h里,用法如下:

    1、gets():与scanf("%s",s)相似,但不完全相同,使用scanf("%s",s) 函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符串直到遇到换行为止。

    2、puts(): puts 和 printf的用法一样,puts()函数的作用与语句“printf("%s\n",s);的作用相同。注意:puts在输出字 符串后会自动输出一个回车符。

    3、strlen():使用格式strlen(s)。返回s的长度,不包括结束符NULL。

scanf//遇到空格或者回车结束
gets(b);//回车结束
puts(b);


输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数。


  int letter = 0,number = 0,blank = 0,others = 0,c;        
    while((c = getchar()) != '\n'){
        if(c >= 'A' && c<='Z' || c >= 'a' && c <= 'z')    
            letter++;
        else if(c >= '0' && c <= '9')                    
            number++;
        else if(c == ' ')                                 
            blank++;
        else                                              
            others++;
    }
    printf("%d %d %d %d\n",letter,number,blank,others);
    return 0;

//字符串处理函数
strlen 求字符串长度
strcpy 字符串拷贝函数
strcat 字符串连接函数
strrev 反转函数


int len;
char ch[200];
//scanf("%s",ch);
gets(ch);
len=strlen(ch);
strcpy(a,b);//后面拷贝到前面,
strcat(a,b);
strrev(b);
printf("length=%d\n",len);


输入10个数字,然后逆序输出。


#include<stdio.h>
int main()
{
    int a[10],i,j;
    for(i=0;i<10;i++)        
        scanf("%d",&a[i]);
    for(j=9;j>=0;j--)        
        printf("%d ",a[j]);  
    return 0;
}

写一函数,将两个字符串连接


#include<stdio.h>
int main()
{   
    char a[100];
    char b[100];
    scanf("%s%s",&a,&b);
    strcat(a,b);
    printf("%s",a);
}

所给字符串正序和反序连接,形成新串并输出


//字符串正反链接
#include<stdio.h>
#include<string.h>
int main(){
    char str[110];
    int i;
    scanf("%s",str);
    for(i=0;i<strlen(str);i++){
        printf("%c",str[i]);
    }
    for(i=strlen(str)-1;i>=0;i--){
        printf("%c",str[i]);
    }
    return 0;
}

二维数组
int a[3][4]=[1,2,3];
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
a[i][j]=9;
}
}
printf("%d\n",a[1][2]);
//第一个表示行,第二个表示列;一共有两百个


打印九九乘法表


#include<stdio.h>
int main()
{
    int a[10][10];
    int i,j;
    for(i=1;i<=9;i++)
    {
        for(j=1;j<=i;j++)
        {
            a[i][j]=i*j;
            printf("%d*%d=%-2d ",j,i,a[i][j]);

        }
        printf("\n");
    }   
}

求矩阵的两对角线上的元素之和
输入
矩阵的行数N
和一个N*N的整数矩阵a[N]N
输出
所输矩阵的两对角线上的元素之和

举个栗子:
如下矩阵(n*n)中,当n = 3时,如下图:
1  2  3
4  5  6
7  8  9
该矩阵是个3*3奇数矩阵,用两个for循环将矩阵1,5,9和3,5,7累加起来并减去(n/2,n/2)处的元素5,打印结果,若矩阵是偶数阵,则在(n/2,n/2)处根本就没元素,所以不用考虑。
#include<stdio.h>
int main()
{
    int a[10][10],n,sum=0,i,j;
    scanf("%d",&n);
    //简单的二维数组初始化
    for(i=0;i<n;i++)
        for(j=0;j<n;j++)
            scanf("%d",&a[i][j]);
    //从左上到右下
    for(i=0,j=0;i<n;i++,j++)    
        sum+=a[i][j];
    //从左下到右上
    for(i=n-1,j=0;j<n;i--,j++)    
        sum+=a[i][j];
    //判别一下奇偶,就行
    if(n%2==0)
        printf("%d",sum);
    else
        printf("%d",sum-a[n/2][n/2]);
    return 0;
}
***








相关文章

网友评论

    本文标题:2021-03-30(二维数组)

    本文链接:https://www.haomeiwen.com/subject/wjjwhltx.html