首页 > 其他分享 >c语言第六章2.0

c语言第六章2.0

时间:2024-09-30 18:49:17浏览次数:3  
标签:index include 语言 int ++ str printf 第六章 2.0

题3,求一个3*3矩阵对角线之和

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main() {
    int str[3][3];
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            str[i][j] = rand();//生成随机数
            printf("%d\t", str[i][j]);
        }
        printf("\n");
    }
    int sum=0;
    for (int i = 0; i < 3; i++) {
        sum = sum + str[i][i];//对角线下标相同
    }
    printf("%d ", sum);

    return 0;
}

题4,有一个已经排好序的数组,要求输入一个数后,把他按原来规律插入原数组

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>//仅限从小到大排序,从大到小条件反过来就可以了
#include<stdlib.h>
int main() {
    int str[100];
    int temp;
    for (int i = 0; i < 10; i++) {
        str[i] = rand();
    }

    //冒泡排序
    for (int i = 0; i < 9; i++) {//管从头到尾排几趟的
        for (int j = 0; j < 9 - i; j++) {
            if (str[j] > str[j + 1]) {//自己跟自己的下一个比
                temp = str[j];
                str[j] = str[j + 1];
                str[j + 1] = temp;
            }
        }
    }//已经排好序了
    int a;
    scanf("%d", &a);
    int index=0;
    for (int i = 0; i < 10; i++) {
        if (a > str[i]) {
            index = i;//保存插入位置的下标
        }
    }
    for (int i = 9; i > index; i--) {//从最后开始到这个下标的所有数依次后移
        str[i + 1] = str[i];
    }
    str[index] = a;//把输入的数插入
    for (int i = 0; i < 11; i++) {//多了一个数,条件加一
        printf("%d ", str[i]);
    }
        return 0;
}

题5,将数组中的值逆序存放


思想:建两个数组,尾给头;想随机输入数组数量,但不太会

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main() {
    int str1[20],str2[20];
    str1[0] = 0;
    int i=0;
    int j = 0;
    for ( i = 0; i<10; i++) {
        str1[i] = rand();//输入十个数
    }
    for ( i = 9; i >= 0; i--,j++) {
        str2[j] = str1[i];//将1尾给2头
    }
    for (i = 0; i < 10; i++) {
        printf("%d ", str1[i]);//输出原数组
    }
    printf("\n");
    for (i = 0; i < 10; i++) {

        printf("%d ", str2[i]);//输出转换后的数组
    }
    return 0;
}

题8找出二维数组中的鞍点(边界条件过不了,如果同行或同列有相同的数就不对了)

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main() {
    int str[3][4];
    int i, j;
    int flag = 0;
    for ( i = 0; i < 3; i++) {
        for ( j = 0; j < 4; j++) {
            scanf("%d", &str[i][j]);
            //str[i][j] = rand();
        }
    }
    printf("\n");
    for (i = 0; i < 3; i++) {
        for (j = 0; j < 4; j++) {
            printf("%d ", str[i][j]);
        }
        printf("\n");
    }

    int max;
    int max_index=0;
    int min;
    int min_index=0;
    int k;
    for (i = 0; i < 3; i++) {
        max = str[i][0];
        for (j = 0; j < 4; j++) {
            if (str[i][j] > max) {
                max_index = j;
                max = str[i][j];
            }
        }
        min = str[0][max_index];
        for (k = 0; k < 3; k++) {
            if (str[k][max_index] < min) {
                min_index = k;
                min = str[k][max_index];
            }
        }
        if (max == min) {
            flag = 1;
            printf("行:%d,列:%d,值:%d",min_index, max_index, str[min_index][max_index]);
        }
    }
    if (flag == 0) {
        printf("无鞍点");
    }
    return 0;
}


题15,在15个数中折半查找


折半查找(二分法排序):low mid high key,key和mid比较,key大了low =mid+1,key小了high=mid-1;直到low和high交错停止

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>//一定要先知道顺序,是从大到小还是从小到大,会涉及到后边查找下标的移动
int main() {
    int str[15];
    int temp;//中间变量
    for (int i = 0; i < 15; i++) {
        scanf("%d", &str[i]);//输入15个数
    }
    for (int i = 0; i < 14; i++) {//冒泡排序
        for (int j = 0; j < 14 - i; j++) {
            if (str[j] > str[j + 1]) {
                temp = str[j];
                str[j] = str[j + 1];
                str[j + 1] = temp;
            }
        }
    }
    for (int i = 0; i < 15; i++) {
        printf("%d ", str[i]);//从小到大输出
    }
    printf("\n");
    int low = 0, high = 14;//最低和最高
    int mid;//中间
    int key;//要查找的数
    int flag = 0;//标记位
    scanf("%d", &key);
    while (low <= high) {
        mid = (low + high) / 2;
        if (key == str[mid]) {
            printf("是第%d个元素值为%d", mid,str[mid]);
            flag = 1;
            break;//找到了要跳出循环啊
        }
        else if (key > str[mid]) {
            low = mid + 1;
        }
        else {
            high = mid -1;
        }
    }
    if (flag == 0) {
        printf("无此值");
    }
    return 0;
}

有三行文字每行20个字符,要求分别统计出其中英文大写字母,小写字母,数字,空格以及其他字符的个数

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<ctype.h>//函数们的头文件
int main() {
    char str[3][20];//就是要用二维数组
    int Balpha, Salpha, digit, space, other;
    
        //Balpha = 0, Salpha = 0, digit = 0, space = 0, other = 0;
        for(int i = 0; i < 3; i++) {
            fgets(str[i], 20, stdin);//天杀的就是用二维数组,但是输入的是str[i],不是这两个都输入
        }
            
        for (int i = 0; i < 3; i++) {
            Balpha = 0, Salpha = 0, digit = 0, space = 0, other = 0;//因为要统计每一行结果所以每次记得要归零
            for(int j=0;str[i][j]!='\n';j++){//必须是以换行结尾,不是\0
            if (isalpha(str[i][j])) {//是字母
                if (islower(str[i][j])) {//是小写字母//扩展tolower转小写,返回的是ASCII码
                    Salpha++;
                }                
                        else if (isupper(str[i][j])) {//是大写字母//扩展toupper转大写,返回的是ASCII码
                            Balpha++;
                        }                        
                    }
                    else if (isdigit(str[i][j])) {//是数字,函数必须以这个格式写否则数不对
                        digit++;
                    }
                    else if (isspace(str[i][j])) {//是空格
                        space++;
                    }
                    else {
                        other++;
                    }
                }
                printf("大写字母为:%d个\n", Balpha);
                printf("小写字母为:%d个\n", Salpha);
                printf("数字为:%d个\n", digit);
                printf("空格为:%d个\n", space);
                printf("其他字符为:%d个\n", other);
                printf("\n");
        }    
        return 0;
}


 mmmNNN   ...888  (3,3,3,3)
HHHgff == = '''(3,3,3,3)
Jm / 9             (1,1,1,)
复制粘贴小tips:要想不从第一个字开始选中及下行,可以按住alt在往下拉,这样可以从中间劈一半选中

译原码,一行电文已加密,加密规则为第1字母变成第26字母,第i变成第(26-i+1),非字母字符不变,要求变回原码,并输出密码和原码,


只能数组吧,我不会啊啊啊啊,自己做不出来,借鉴的别人的代码,愚蠢,找不明白规律

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
    int main()
    {
        char c[100]="";
        int i = 0, j, x;
        printf("请输入一行电文\n");
        while ((c[i] = getchar()) != '\n')
            i++;
        printf("%s", c);
        x = strlen(c);
        for (i = 0; i < x; i++)
        {
            if (c[i] >= 'A' && c[i] <= 'Z')
            {
                
                c[i] = 'Z' - (c[i] - 'A');//我不会找规律啊啊啊啊
            }
            else if (c[i] >= 'a' && c[i] <= 'z')
            {
                c[i] = 'z' - (c[i] - 'a');
                
            }
        }
        printf("%s", c);
        return 0;
    }

将两个字符串连接起来

怎么在不知道循环次数的前提下输入一个数组呢?)(用%s输入就可以了)

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int main() {
    char a[30] = "";//初始化嗷都
    char b[10] = "";
    fgets(a, 10, stdin);//换行输入,不能搭配strcat,会多一个换行
    fgets(b, 10, stdin);//用这个输入,求strlen要减一
    //scanf("%s", a);//可空格可换行,搭配strcat刚刚好,但实现不了自己拼接两个数组
    //scanf("%s", b);//用这个输入,求strlen不要减一

    int len1 = strlen(a)-1;
    int len2 = strlen(b)-1;
    char c[20]="";
    for (int i = 0; i < len1; i++) {
        c[i] = a[i];
    }
    for (int i = len1; i < len2+len1; i++) {
        c[i] = b[i-len1];
    }

    for (int i = 0; i < len1+len2; i++) {
        printf("%c", c[i]);
    }
    
    /*strcat(a, b);
    printf("%s", a);*/
    /*for (int i = 0; i < len1 + len2; i++) {
        printf("%c", a[i]);
    }*/

    
    return 0;
}

比较两个字符串

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main() {
    char a[10] = "";
    char b[10] = "";
    scanf("%s", a);
    scanf("%s", b);
    int len1 = strlen(a);
    int len2 = strlen(b);
    int max;
    max = len1 >= len2 ? len1:len2;//这个形式写简单
    int flag = 0;
    for (int i = 0; i < max; i++) {
        if (a[i] > b[i]) {//一次性直接比完
            flag = 1;
            break;
        }
        else if (a[i] < b[i]) {
            flag = 2;
            break;
        }
    }
    if (flag == 1) {
        printf("%s", a);
    }
    else {
        printf("%s", b);
    }
    //if (strcmp(a, b) > 0) {//函数形式
    //    printf("%s", a);
    //}
    //else {
    //    printf("%s", b);
    //}
    /*AbC
        aBC*/
    return 0;
}

复制字符串

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main() {
    char a[10] = "";
    char b[10] = "";
    scanf("%s", a);
    scanf("%s", b);
    int len1 = strlen(a);
    int len2 = strlen(b);
    int i;
    for (i = 0; i < len1; i++) {
        a[i] = 0;
    }
    for (i = 0; i < len2; i++) {
        a[i] = b[i];
    }
    for (i = 0; i < len2; i++) {//根本不用再加\0了,因为初始化都带上了
        printf("%c",a[i]);
    }
    
    return 0;
}

标签:index,include,语言,int,++,str,printf,第六章,2.0
From: https://blog.csdn.net/qq_63279386/article/details/142643261

相关文章

  • Java语言之数据类型与变量
    Java的数据类型主要分为两类基本数据类型:整形(包括:字节型:byte、1个字节,短整型:short、两个字节,整形:int、4个字节,长整型:long、8个字节),字符型:char、一个字节,浮点型(包括:单精度浮点型float、4个字节,双精度浮点型:double、8个字节),布尔类型:boolean,java并没有规定几个字节。java中没有......
  • Python与自然语言处理库BERT
    Python与自然语言处理库BERT揭开BERT的神秘面纱:从零开始理解这个改变游戏规则的语言模型实战演练:用Python和BERT搭建你的第一个情感分析小助手不只是翻译:探索BERT在跨语言任务中的神奇表现文本生成新高度:利用BERT创造流畅连贯的文章段落优化与调优:让BERT更好地适应特定......
  • c语言 学习
    ......
  • 【Golang】Go语言中时间time相关处理方法
    ✨✨欢迎大家来到景天科技苑✨✨......
  • 驱动更新 IObit Driver Booster PRO v12.0.0.354 绿色版
    驱动更新IObitDriverBoosterPROv12.0.0.354绿色版下载地址:https://pan.quark.cn/s/85f9c35e7944介绍IObitDriverBooster,全球专业级驱动更新软件。检测硬件驱动更新、驱动备份管理、支持离线驱动更新,检测游戏组件、修复设备错误、无声问题、网络问题。提供游戏加速、......
  • ASP.NET WebApi OWIN 实现 OAuth 2.0
    ASP.NETWebApiOWIN实现OAuth2.0 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者......
  • ASP.NET WebApi OWIN 实现 OAuth 2.0(自定义获取 Token)
    ASP.NETWebApiOWIN实现OAuth2.0(自定义获取Token) 相关文章:ASP.NETWebApiOWIN实现OAuth2.0之前的项目实现,Token放在请求头的Headers里面,类似于这样:Accept:application/jsonContent-Type:application/jsonAuthorization:BearerpADKsjwMv927u...虽然这是......
  • 实验1_C语言输入输出和简单程序应用编程
    任务1://打印一个字符小人#include<stdio.h>intmain(){printf("O\n");printf("<H>\n");printf("II\n");printf("O\n");printf("<H>\n");printf("II\n");r......
  • C语言输入一串数字,输出其中第一个能被3整除的整数
    输入若干整数(最多10个),输出其中第一个能被3整除的整数,如果没有这样的整数存在,则输出“no”输入:若干整数输出:第一个能被3整除的整数输入样例:2-1576810输出样例6输入样例:15274810111314输出样例:no#include<stdio.h>intmain(void){inti=0,i......
  • ehviewer绿色版2.0.2.4最新版本安卓苹果下载安装
    制作应用程序(App)ehviewer是一项涉及多个步骤和技术的任务,ehviewer可以从零开始创建一个简单的应用,ehviewer也可以扩展到复杂的多功能应用。以下是制作一个基本应用程序的教程,以Android平台为例进行说明。ehviewer本教程将涵盖从构思到发布应用的ehviewer整个过程。ehviewer绿色......