哈工大 sse C语言 困难

Q500.(10分数, 语言: C)利用指针能直接操作内存的特点来编程输出字符串中每个字符在内存中的存储编码(字符串中可以包含英文数字和汉字)。
程序的运行示例1如下:
请输入一个字符串,长度小于等于100:abcABC012中国人
该字符串的内存编码为: 61 62 63 41 42 43 30 31 32 d6 d0 b9 fa c8 cb 
程序的运行示例2如下:
请输入一个字符串,长度小于等于100:12345上山打老虎
该字符串的内存编码为: 31 32 33 34 35 c9 cf c9 bd b4 f2 c0 cf bb a2
提示:
输出格式用"%x "
提示:为了不输出多余的ffff,
请用printf("%x ", (unsigned char)str[i] & 0xff);
或者
if (str[i] > 0xffffff00) printf("%x ", str[i] -0xffffff00);
#include <stdio.h>
#include <string.h>
#define N 100
void main(){
    char a[N];

    printf("请输入一个字符串,长度小于等于100:");
    gets(a);
    printf("该字符串的内存编码为:");
    printf(" ");
    for(int i=0;a[i]!='\0';i++){
        
        printf("%x ",(unsigned char)a[i] & 0xff);
    }
}

Q3335.(10分数, 语言: C)英雄卡。小明非常迷恋收集各种干脆面里面的英雄卡,为此他曾经连续一个月都只吃干脆面这一种零食,但是有些稀有英雄卡真的是太难收集到了。后来某商场搞了一次英雄卡兑换活动,只要你有三张编号连续的英雄卡,你就可以换任意编号的英雄卡。小明想知道他最多可以换到几张英雄卡(新换来的英雄卡不可以再次兑换)
输入提示信息:"Input n:",  "Input card numbers:"
输入数据格式:"%d"
输出数据格式:"%d"
程序运行结果示例:
Input n:6
Input card numbers:3 1 2 4 4 5
Exchanged:1
#include <stdio.h>
#define N 100
void main(){
    int a[N];
    int n;
    int count=0;
    printf("Input n:");
    scanf("%d",&n);
    printf("Input card numbers:");
    for(int i=0;i<n;i++){
        scanf("%d",&a[i]);
    }
    int b[N]={0};
    for(int i=0;i<n;i++){
        b[a[i]]++;
    }
    for(int i=0;i<N-2;i++){
        if(b[i]>0&&b[i+1]>0&&b[i+2]>0){
            b[i]--;
            b[i+1]--;
            b[i+2]--;
            count++;
            i--;
        }else{
            continue;
        }
    }
    printf("Exchanged:%d",count);
    
}
Q2292.(10分数, 语言: C)用指针编程实现3X4的二维数组的元素读入以及求此二维数组的最大值及最大值下标 
请用以下函数实现:
void Input(int *p,int m, int n);  /*数组元素读入函数*/
int FindMax(int *p, int m, int n, int *pRow, int *pCol);  /*求最大值及下标函数*/

若存在若干个相同最大元素,则按照第一次出现的最大值的下标输出。
***输入提示信息:"Please input your data:\n"
***输入格式要求:无格式要求
***输出格式要求:"The maximum is %d, which is in row %d, colum %d\n"


样例:

Please input your data:
**输入样例:
3 5 2 7 1 6 12 11 4 10 8 9
**输出样例:
The maximum is 12, which is in row 1, colum 2

Input(*a,m,n);

scanf("%d",&p[i*n+j]);

if(max < p[i*n+j]){

                max = p[i*n+j];

                *pRow = i;

                *pCol = j;

            }

#include <stdio.h>
#define N 30
void Input(int *p,int m, int n);  /*数组元素读入函数*/
int FindMax(int *p, int m, int n, int *pRow, int *pCol);  /*求最大值及下标函数*/
void main()
{
    int a[N][N];
    int m,n;
    int pRow,pCol;
    m=3,n=4;
    printf("Please input your data:\n");
    Input(*a,m,n);
    printf("The maximum is %d, which is in row %d, colum %d\n",FindMax(*a, m,n,&pRow,&pCol),pRow,pCol);
}
void Input(int *p,int m, int n){
    for(int i=0;i<m;i++){
        for(int j=0;j<n;j++){
            scanf("%d",&p[i*n+j]); 
        }
    }
}
int FindMax(int *p, int m, int n, int *pRow, int *pCol){
    *pRow=0;
    *pCol=0;
    int max = 0;
    for(int i=0;i<m;i++){
        for(int j=0;j<n;j++){
            if(max < p[i*n+j]){
                max = p[i*n+j];
                *pRow = i;
                *pCol = j;
            }
        }
    }
    return max;
}
Q1317.(10分数, 语言: C)写一个函数,输入一行字符,将此字符串中最长的单词输出。
输入提示信息:"输入一行文本:\n"
用gets()输入一行字符
输出提示信息:"\n最长的单词是:"
输出字符用"%c"
输出所有字符后用"\n"
程序的运行示例如下:
输入一行文本:I am a student.

最长的单词是:student
#include <stdio.h>
#include <string.h>
#define N 60
void main(){
    char a[N]={'\0'};
    printf("输入一行文本:\n");
    gets(a);
    int j=0;
    int max=0;
    int maxpos=0;
    for(int i=0;a[i]!='\0';i++){
        if(a[i]!=' '){
            j++;
        }else{
            j=0;
        }
        if(j>max){
            max=j;
            maxpos=i-j+1;
        }
    }
    printf("\n最长的单词是:");
    for(int i=maxpos;i<maxpos+max-1;i++){
        printf("%c",a[i]);
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值