C语言程序设计字符

C语言程序设计字符17题要怎么做?

本题是字符串的处理

    main()函数中,是字符串的读入,调用insert函数

    Insert函数的功能是在字符串str原有字符的中间插入“*”号,然后输出

    (1)i值存放的是字符串的长度;

    (2)由于C语言中,数组的下标是由0开始的,所以2*i表示的是偶数位的位置,2*i-1表示的是奇数位的位置,所以偶数位是原来输入字符串的内容,奇数位是符号"*",但由于字符串长度为4,str[4]并无内容,因此str[8]=" ";

    (3)最后将字符串的值输出。

    其实重点在于循环

    while(i>0){

    str[2*i]=str[i];

    //第一次str[8]=str[4]=" ";第二次str[6]=str[3]="d";第三次str[4]=str[2]="c";第四次str[2]=str[1]="b"

    str[2*i-1]="*";

    //第一次str[7]="*";第二次str[5]="*";第三次str[3]="*";第四次str[1]="*"

    i--;//i值每次减一,循环4次后等于0跳出循环,str[0]="a"不变

    }

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-10-25

char型对应数值是ASCII码,是有符号数。

而你代码中ch+32结果是129(97+32)。

第一参数按%c输出是?,因为127往后是扩展编码,不用做显示。

第二参数按%d输出,你前面赋值将129赋值给了char型的变量ch。

129是无符号数,赋值给ch后,ch的二进制码是1000,0001(129对应的无符号二进制)。

但ch作为字符型,是有符号数,所以最高位被解读成负号。这就变成了一个负数。

负数在计算机中是按照补码保存的。

因此,打印时要将补码转成原码

1000,0001(补码)=>1000,0000(反码)=>1111,1111(原码)。

有符号二进制1111,1111转成10进制打印,就是-127。

第2个回答  2018-02-10
#include<stdio.h>
#include<string.h>
void insert(char str[])
{
    int i;
    i=strlen(str);
    while(i>0)
    {
        str[2*i]=str[i];
        str[2*i-1]='*';
        i--;
    }
    printf("%s",str);
}
int main()
{
   char s[40];
   scanf("%s",&s);
   insert(s);
   }

跑一遍程序,结果就出来了.心算不出来,就动手.

相似回答