第九周总结

第一题:简单排序

输入

输入数据有多组,第一行是测试数据的组数T,接下的T行中,每行表示一组测试数据,每组测试数据的第一个数字为N(1<=N<=1000),接下来是N个整数。本题中,所有的整数都在32位之内。

输出

输出每组测试数据排序后的结果。每组测试数据占一行。

#include <stdio.h>
 
void swap(int a, int b, int arr[]) {
    int temp = arr[a];
    arr[a] = arr[b];
    arr[b] = temp;
}
 
void sel(int arr[], int n) {
    for (int i = 0; i < n - 1; i++) {
        int min = i;
        for (int j = i + 1; j < n; j++) {
            if (arr[j] < arr[min]) {
                min = j;
            }
        }
        swap(i, min, arr);
    }
}
 
int main() {
    int T;
    scanf("%d", &T);
 
    while (T--) {
        int N;
        scanf("%d", &N);
 
        int arr[N];
        for (int i = 0; i < N; i++) {
            scanf("%d", &arr[i]);
        }
 
        sel(arr, N);
 
        for (int i = 0; i < N; i++) {
            printf("%d ", arr[i]);
        }
        printf("\n");
    }
 
    return 0;
}

首先在主函数前定义了两个函数,第一个是swap函数用于交换两个变量的值,其中用到了一个临时变量充当交换的桥梁。第二个函数是sel函数,用于找出数组中的最小值,在这个函数中应用到了两层for循环的嵌套,外层循环用于遍历数组找出最小值,内层循环遍历数组剩下的数找出最小,再用if语句判断两层循环所找出来的最小值的大小关系再调用swap函数进行值的互换以便于按大小顺序输出。最后是主函数首先定义一个变量T,再通过一个while循环(T自减)来达到第一行的数决定后面有几行数组,后面再通过定义一个变量N来表示后面数组的长度,再循环输入,通过调用sel函数来排序,最后再循环输出得到结果

第二题:I still Love You Very Much !

输入

输入一个可能带空格的字符串s,1<=strlen(s)<=1000

输出

将该字符串中的每个字符换成二进制,每个二进制占一行。
 

#include <stdio.h>
#include <string.h>
void charT(char c)
{
    int i;
    for (i = 7; i >= 0; i--) 
    {
        printf("%d", (c >> i) & 1);
    }
    printf("\n");
}
int main() 
{
    char s[1001];
    fgets(s, sizeof(s), stdin);
    int len = strlen(s);
    for (int i = 0; i < len; i++) 
    {
        charT(s[i]);
    }
    return 0;
}

首先,代码包含了一个名为charT的函数,该函数用于将一个字符转换为二进制表示并打印出来。函数使用了一个循环,从最高位开始,逐位打印字符的二进制表示。

接下来,在main函数中,代码声明了一个字符数组s,并使用fgets函数从标准输入中读取字符串并存储在s中。然后,代码使用strlen函数获取字符串的长度。

接着,代码使用一个循环遍历字符串中的每个字符,并调用charT函数将每个字符转换为二进制表示并打印出来。

最后,代码返回0,表示程序正常结束。

第三题:判断升序

输入

第一行输入一个数 n  表示这个数组有n个数  1<=n<=20
接下来n行  每行一个数。表示数组的各个数。

输出

如果已经排序输出YES
如果没有排序输出NO

#include  <stdio.h>
 
int  main()  {
     int  n,  a;
     scanf("%d",  &n);
     int  arr[n];
 
     for  (int  i  =  0;  i  <  n;  i++)  {
         scanf("%d",  &arr[i]);
     }
 
     for  (int  i  =  0;  i  <  n  -  1;  i++)  {
         if  (arr[i]  >  arr[i  +  1])  {
             printf("NO");
             return  0;
         }
     }
 
     printf("YES");
     return  0;
}

首先通过scanf函数输入已定义变量n的值来控制后面数据组的长度,接下来用一个for循环来循环输入数组内的数值,然后再用一个for循环遍历数组,通过if语句判断数组是否已经升序,是的话输出“YES”,否则输出“NO"。

第四题:简单的求和函数

题目描述

定义一个函数add(a,b)=a+b,请输出该函数的的值。

输入

   输入数据有多组。
   首先输入n,接下来输入n组add(a,b);保证a<10&&b<10.
   每组数据以回车键结束。

输出

 输出函数对应顺序的值,每组数据占一行。

#include <stdio.h>
 
int add(int a, int b) {
    return a + b;
}
 
int main() {
    int n;
    scanf("%d", &n); 
 
    for (int i = 0; i < n; i++) {
        char str[10];
        scanf("%s", str); 
 
        int a, b;
        sscanf(str, "add(%d,%d)", &a, &b);
 
        int result = add(a, b);
        printf("%d\n", result);
    }
 
    return 0;
}

首先,在main函数中定义了一个整数变量n,并使用scanf函数输入一个整数,并将其赋值给n

接下来,代码使用一个循环,从0n-1遍历。在每次循环中,代码声明了一个字符数组str,并使用scanf函数输入一个字符串,并将其存储在str中。

然后定义了两个整数变量ab,并使用sscanf函数从字符串str中解析出两个整数,并将其赋值给ab

接着调用了一个名为add的函数,将ab作为参数传递给该函数,并将函数的返回值赋值给result变量。

最后,代码使用printf函数将result的值打印出来,并带上一个换行符得到结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值