网络信息传输的时候少不了各种信息的加密和解密。如A要传达给B的信息为:ILoveYou为了防止被人发现而暴露目标,A决定先使用一段程序进行加密。同时告诉B自己的加密程序,以确保B能够正确读懂A的心意。程序是这样的:我们定义一个数组str[]="HKnudT";和变量i=0;while(str[i]!=’/0’){str[i]=str[i]+1;i++;}请问B利用A的加密程序进行解密之后,看到了什么:()A、HKnudTB、TKnudHC、ILoveUD、YouAndMe

题目

网络信息传输的时候少不了各种信息的加密和解密。如A要传达给B的信息为:ILoveYou为了防止被人发现而暴露目标,A决定先使用一段程序进行加密。同时告诉B自己的加密程序,以确保B能够正确读懂A的心意。程序是这样的:我们定义一个数组str[]="HKnudT";和变量i=0;while(str[i]!=’/0’){str[i]=str[i]+1;i++;}请问B利用A的加密程序进行解密之后,看到了什么:()

  • A、HKnudT
  • B、TKnudH
  • C、ILoveU
  • D、YouAndMe

相似考题
更多“网络信息传输的时候少不了各种信息的加密和解密。如A要传达给B的信息为:ILoveYou为了防止被人发现而暴露目标,A决定先使用一段程序进行加密。同时告诉B自己的加密程序,以确保B能够正确读懂A的心意。程序是这样的:我们定义一个数组str[]="HKnudT";和变量i=0;while(str[i]!=’/0’){str[i]=str[i]+1;i++;}请问B利用A的加密程序进行解密之后,看到了什么:()A、HKnudTB、TKnudHC、ILoveUD、YouAndMe”相关问题
  • 第1题:

    str是一个由数字和字母字符组成的字符串,由变量num传人字符串长度。请补充函数proc,该函数的功能是:把字符串str中的数字字符转换成数字并存放到整型数组bb中,函数返回数组bb的长度。 例如,str="abcl23de45f967",结果为:l234567。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数proc的横线上填入所编写的若干表达式或语句。 试题程序: include<stdio.h> define M 80 int bb[M]; int proc(char str[],int bb[],int num) { int i,n=0; for(i=0;i<num;i++) { if( 【1】 ) { bb[n]=【2】 ; n++; } } return 【3】 ; } void main { char str[M]; int num=0,n,i; printf("Enter a string:\n"); gets(str); while(str[num]) num++: n=proc(str,bb,num); printf("\nbb="); for(i=0;i<n;i++) printf("%d",bb[i]); }


    正确答案:
    【1】str[i]>=0str[i]<=9【2】str[i]-O【3】n
    【解析】题目中要求把字符串str中的数字字符转换成数字并存放到整型数组bb中。首先,应判断字符串str中每个字符是否是数字字符。因此,【1】处填“str[i]>=0str[i]<=9”将每一个数字字符转化为数字放在整型数组bb中,因此,【2】处填“str[i]-0;由函数proc可知,变量n中存放整型数组bb中的元素个数,最后要返回到主函数当中,因此,【3】处填n。

  • 第2题:

    下列程序的运行结果为()。 include voidabc(Char*str) {inta,b,i,j; for(i=j=0;str[i]!

    下列程序的运行结果为( )。

    #include<stdio.h>

    voidabc(Char*str)

    { inta,b,i,j;

    for(i=j=0;str[i]!='\0';i++)

    if(str[i]!='a')

    str[j++]=str[i];

    str[j]='\0';

    }

    void main()

    { char str[]="abcdef";

    abc(str);

    printf("str[]=%s",str);

    }

    A.str[]=bcdef

    B.str[]=abcdef

    C.str[]=a

    D.str[]=ab


    正确答案:A
    解析:本题考查函数调用时的参数传递。通过函数 abc的执行,将字符串中的字母a去掉,保留剩下的。由于是通过指针调用,所以改变字符串的结果。

  • 第3题:

    下列程序的运行结果为()。includevoidabc(char*str){int a,b,i,j;for(i=j=0;str[i]!='\

    下列程序的运行结果为( )。

    #include<stdio.h>

    voidabc(char*str)

    {int a,b,i,j;

    for(i=j=0;str[i]!='\0';i++)

    if(str[i]!='a')

    str[j++]=str[j];

    str[j]='\0';

    }

    void main()

    {char Str[]="abcdef';

    abc(str);

    printf("str[]=%s",str);

    }

    A.str[]=bcdef

    B.str[]=abcdef

    C.str[]=a

    D.str[]=ab


    正确答案:A
    解析: 本题考查函数调用时的参数传递。通过函数abc的执行,将字符串中的字母a去掉,保留剩下的。由于是通过指针调用,所以改变字符串的结果。

  • 第4题:

    如下程序:includevoid main(){char str[2][5]={"1234","5678"),*p[2];int i,j,s=0;

    如下程序: #include<iostream.h> void main() { char str[2][5]={"1234","5678"),*p[2]; int i,j,s=0; for(i=0;i<2;i++)p[i]=str[i]; for(i=0;i<2;i++) for(j=0;p[i][j]>'\0';j+=2) s=10*s+p[i][j]-'0'; cout<<s; } 该程序的输出结果是( )。

    A.1357

    B.2468

    C.3556

    D.23678


    正确答案:A
    解析:程序中的“for(i=0;i2;i++)p[i]=str[i];”语句将str中的值赋值给指针数组p。在接下来的二重for循环中,跳取“j+=2”,p指针指向的值即“1”,“3”,“5”,“7”。在分别对字符到整型的转换,即减去字符‘0’,然后依次转换为千位,百位,十位,个位“10%”操作输出接型s,即“1357”。

  • 第5题:

    字符串str由数字字符组成(长度不超过5个字符),可看作任意进制的数,请补充函数fun(),该函数的功能是:把 str字符串转换成任意进制的数,结果保存在数组xx中,由函数返回转换后数组腆的实际长度。其中x表示str原来的进制, y表示要转换成的进制。例如,输入str=“1111”,x=2,y=10,结果输出:15。如果输入str=“15”, x=10,Y=2,结果输出: 1111。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

    试题程序:

    include <stdio.h>

    include<stdlib.h>

    include<string.h>

    define N 8

    int xx[N];

    int fun(char *str,int x,int y)

    {

    int sum;

    int i=0;

    char *p=str;

    for(i=0; i<N; i++)

    xx[i]=0;

    sum=*p-'0';

    p++;

    while (*p)

    {

    sum=【 】;

    p++;

    }

    i=0;

    while(sum!=0)

    {

    xx[i]=【 】;

    【 】;

    i++;

    }

    return i;

    }

    main ()

    {

    char str[6];

    int i;

    int n;

    int x;

    int y;

    printf("Enter a string made up of '0' to

    '9' digits character:");

    gets(str);

    if(strlen (str) >5)

    {

    printf("Error:string too longer!,

    please input again!\n\n");

    exit(0);

    }

    for(i=0;str[i];i++)

    if(str[i]<'0'||str[i]>'9')

    {

    printf("Error:%c not is '0' to

    '9' digits character!\n\n",

    str[i]);

    exit(0);

    }

    printf("The original string: ");

    puts(str);

    printf("\nINPUT x= ");

    scanf("%d",&x);

    printf("\nINPUT y= ");

    scanf("%d",&y);

    n=fun(str,x,y);

    printf("\n%s is convered to",str);

    for (i=n-1; i>=0; i--)

    printf("%d",xx[i]);

    }


    正确答案:sum*x+*p-'0' sum%y sum=sum/y
    sum*x+*p-'0' sum%y sum=sum/y 解析:第一空:为了进行数字运算,必须要将字符串中的数字字符转换为数字,用数字字符减去字符'0'的ASCII码,就得到对应的数字。将x进制数转换为十进制数的算法是:以1001为例,对应的十进制数为l*x3+0*x2+O*x+1=x*(x*(x*1+0) +0)+1。第二空:将十进制数转换为y进制数的算法与将y进制数转换为十进制数的算法正好相反,十进制数对y取余,得到y进制数的最低位。第三空:将十进制数整除y后得到的数,再对y取余,则得到y进制数的次低位,如此循环,得到y进制数的各位,转换的结果存于数值xx[N]中。

  • 第6题:

    下列程序的输出结果是______。 char*fun(char*str,int n) { int i; char*p=str; for(i=0;i<10;i++,str++) *str='a'+i; return++p; } main() { char a[10]; printf("%s\n",fun(a,10)); }

    A.ABCDEFGHIJ

    B.abcdefghij

    C.bcdefghij

    D.不确定的值


    正确答案:C
    解析:调用函数fun使字符数组中的内容是"abcdefghij",函数的返回值是字符数据的地址,该地址指向数组的第二个字符,因此,主函数的输出结果是字符串 "bcdefghij"。

  • 第7题:

    阅读下列程序,当运行函数时,输入asd af aa z67,则输出为includeincludeinc

    阅读下列程序,当运行函数时,输入asd af aa z67,则输出为 #include<stdio.h> #include<ctype.h> #include<string.h> int fun(char*str) { int i,j=0; for(i=0;str[i]!='\0';i++) if(str[i]!='')str[j++]=str[i]; str[j]='\0'; } main() { char str[81]; int n; clrscr(); printf("Input a string:"); gets(str); puts(str); fun(str); printf("%s\n",str); }

    A.asdafaaz67

    B.asdafaaz67

    C.asd

    D.z67


    正确答案:A
    解析:本题题意要求删除所有空格,即除了空格以外的其他所有字符都要留下。由于C语言中没有直接删除字符的操作,所以我们对于删除字符的操作都是采用“留下”字符的算法,以前的题目亦是如此。用str[i]从串头到串尾逐一走动,每走到一个字符都判断其是否为空格,若不是空格(注意在if()的单引号之间有一个空格),则将其保存str[j]中。注意j的下标变化、初值及最后加串结束符'\0'。

  • 第8题:

    阅读下列程序,当运行函数时,输入asd af aa z67,则输出为includeincludeine

    阅读下列程序,当运行函数时,输入asd af aa z67,则输出为 #include <stdio.h> #include <ctype.h> #inelude <string.h> int fun(char *str) { int i,j=0; for(i=0;str[i]!='\0';i++) if(str[i]!='')str[j++]=str[i]; str[j]='\0'; } main() { char str[81]; int n; printf("Input a string:"); gets(str); puts(str); fun(str); printf("%s\n",str); }

    A.asdafaaz67

    B.asd af aa z67

    C.asd

    D.z67


    正确答案:A
    解析:本题题意要求删除所有空格,即除了空格以外的其他所有字符都要留下。由于C语言中没有直接删除字符的操作,所以我们对于删除字符的操作都是采用“留下”字符的算法,以前的题目亦是如此。用str[i]从串头到串尾逐一走动,每走到一个字符都判断其是否为空格,若不是空格(注意在if()的单引号之间有一个空格),则将其保存str[j]中。注意 j的下标变化、初值及最后加串结束符“\0”。

  • 第9题:

    下列给定程序中,函数proc的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCII码升序排序后输出。 例如,输入opdye,则应输出deopy。 请修改程序中的错误,使它能得到正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: include<string.h> include<stdlib.h> include<conio.h> include<stdio.h> //****found**** int proc(char str[]) { char c; unsigned i,j; for(i=0;i<strlen(str)-1;i++) for(j=i+1;j<strlen(str);j++) if(str[i]>str[j]) { c=str[j]: //****found**** str[j]=str[i++]; str[i]=c; } } void main { char str[81]; system("CLS"); printf("\nPlease enter a character string:"); gets(str); printf("\n\nBefore sorting:\n%s",str); proc(str); printf("\nAfter sorting decendingly:\n %s",str); }


    正确答案:

    (1)错误:int proc(char str[])
    正确:void proc(char、tr[])
    (2)错误:str[j]=str[++];
    正确:str[j]=str[i];
    【解析】由主函数中的函数调用可知,函数proc没有返回值。因此,“int proc char str[])”应改为“void proc (char str[])”;由函数proc可知,if语句块完成将字符串str中的第i个元素与第j个元素相交换。因此,“str[j]=str [i++];”应改为“str[j]=str[i];”。

  • 第10题:

    阅读下列程序,当运行函数时,输入asd af aa z67,则输出为

    #include <stdio.h>

    #include <ctype.h>

    #include <string.h>

    int fun (char *str)

    { int i,j=0;

    for(i=0;str[i]!=′ \0′;i++)

    if(str[i]!=′ ′)str[j++]=str[i];

    str[j]= ′\0′;

    }

    main()

    {

    char str[81];

    int n;

    printf("Input a string : ");

    gets(str);

    puts(str);

    fun(str);

    printf("%s\n",str);

    }

    A.asdafaaz67

    B.asd af aa z67

    C.asd

    D.z67


    正确答案:A
    解析:本题题意要求删除所有空格,即除了空格以外的其他所有字符都要留下。由于C语言中没有直接删除字符的操作,所以我们对于删除字符的操作都是采用"留下"字符的算法,以前的题目亦是如此。用str[i]从串头到串尾逐一走动,每走到一个字符都判断其是否为空格,若不是空格(注意在if()的单引号之间有一个空格),则将其保存str[j]中。注意j的下标变化、初值及最后加串结束符'\0'。

  • 第11题:

    当运行以下程序时,输入abcd,程序的输出结果是:( )。

    insert(char str[])

    {int i;

    i=strlen(str);

    while(i>0)

    {str[2*i]=str[i];str[2*i-1]='*';i--;}

    printf("%s\n",str);

    }

    main()

    {char str[40];

    scanf("%s",str);insert(str);

    }


    正确答案:a*b*c*d*
    a*b*c*d* 解析:字符处理函数strlen()测试字符串常量的长度,不包括‘\0’在内。因此,函数insert()实现了将字符数组中每个非‘\0’的字符后插入字符‘*’的功能。故输出结果是a*b*c*d*。

  • 第12题:

    填空题
    下列程序的输出结果是 ()。 #include  #include   main( ) {    int i=0;    char str1[10]=“1234”, str2[10]= “567”;    strcat(str1,str2);    while(str2[i++]!=‘/0’)     str2[i]=str1[i];    puts(str2);   }

    正确答案: 5234567
    解析: 暂无解析

  • 第13题:

    下列给定程序中,函数proc的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCIl码升序排序后输出。 例如,输入opdye,则应输出deopy。 请修改程序中的错误,使它能得到正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: include%string.h> include%stdlib.h> include<conio.h> include<stdio.h> //****found**** int proc(char str[]) { char C; unsigned i,j; for(i=0;i<strlen(str)-1;i++) for(j=i+1;j<strlen(str);j4-+) if(str[i]>str[j]) { c=str[j]: //****found**** str[j]=str[i++]; str[i]=C; } } void main { char st/[81]; system("CLS"); printf("\nPlease enter a character string:"); gets(str); printf("\nknBefore sorting:\n %s",str); proc(str); printf("\nAfter sorting decendingly:\n %S",str); }


    正确答案:
    (1)错误:int proc(char str[])
    正确:void proc(char str[])
    (2)错误:str[j]=str[i++];
    正确:str[j]=str[i];
    【解析】由主函数中的函数调用可知,函数proc没有返回值。因此,“int proc(char str[])”应改为“void proc(char str[])”;由函数proc可知,if语句块完成将字符串str中的第i个元素与第j个元素相交换。因此,“str[j]=str[i++];”应改为“str[j]=str[i];”。

  • 第14题:

    阅读下列程序,当运行函数时,输入asd af aa z67,则输出为

    #include

    #include

    #include

    int fun (char *str)

    { int i,j=0;

    for(i=0;str[i]!=′\0′;i++)

    if(str[i]!=′ ′)str[j++]=str[i];

    str[j]= ′\0′;

    }

    main()

    {

    char str[81];

    int n;

    clrscr();

    printf("Input a string : ");

    gets(str);

    puts(str);

    fun(str);

    printf("%s\n",str);

    }

    A.asdafaaz67

    B.asd af aa z67

    C.asd

    D.z67


    正确答案:A

  • 第15题:

    str是一个由数字和字母字符组成的字符串,由变量hum传入字符串长度。请补充函数fun( ),该函数的功能是:把字符串str中的数字字符转换成数字并存放到整型数组bb中,函数返回数组bb的长度。

    例如:str=“Bcdl23e456hui890”,结果为:123456890。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

    试题程序:

    include<stdio.h>

    define N 80

    int bb[N];

    int fun(char s[ ],int bb[ ],int num)

    {

    int i,n=0;

    for(i=0;i<num;i++)

    {

    if(【 】)

    {

    bb[n]=【 】;

    n++;

    }

    }

    return【 】;

    }

    main()

    {

    char str[N];

    int num=0,n,i;

    printf("Enter a string:\n");

    gets(str);

    while(str[num])

    num++;

    n=fun(str,bb,num);

    printf("\nbb=");

    for(i=0;i<n;i++)

    printf("%d",bb[i]);

    }


    正确答案:s[i]>=‘0’&&s[i]=‘9’ s[i]-‘0’ n
    s[i]>=‘0’&&s[i]=‘9’ s[i]-‘0’ n 解析:第一空:如果当前字符的ASCII码大于字符‘0’的ASCII码,而小于字符‘9’的ASCII码,则说明当前字符是数字字符。第二空:将数字字符转换为数字的方法是,用当前数字字符的ASCII码减去字符‘0’的ASCII码。第三空:题目要求函数返回数组bb的长度,而变量n记录了数字字符的个数,也就是数组bb的长度,所以函数应该返回n。

  • 第16题:

    如下程序段#include <stdio.h>#include <ctype.h>#include <conio.h>int fun (char *str){ int i,j=0; for(i=0;str[i]!= ’\0’;i++) if(str[i]!= ’ ’)str[j++]=str[i]; str[j]= ’\0’;}main(){ char str[81]; int n; clrscr(); printf("Input a string : "); gets(str); fun(str); printf("%s\n",str);}当运行程序时,输入asd af aa z67<回车>,则输出是A.asdafaaz67 B.asd af aa z67 C.asd D.z67


    正确答案:A
    在本题中,程序首先定义一个返回类型为整型的函数fun,该函数带有一个指针型的形参变量str,从主函数中对其调用时传递的参数我们可以知道,该指针指向的是一个数组,在该函数体中,首先定义两个整型变量,然后执行循环,循环变量i的初始值为0,循环结束的条件是str[i]!=’\0’,表示取到的数组元素是字符串结束标识,即字符串中的字符被处理完,在循环体中,首先执行条件判断语句if(str[i]!=’ ’),如果结果为真,说明取到的当前字符不是空字符,这时执行str[j++]=str[i],即将非空格字符保存到数组中;如果为假,说明取到了空格字符,此时不保存,而接着执行下次循环跳过空格字符。循环结束后执行str[j]= ’\0’;,即保存字符结束标识符,用来标识字符串结束。通过上面的这些分析,我们可以知道函数fun的作用是去掉字符数组中的空格字符。
    在主函数中,首先定义了一个大小为81的字符数组,然后调用函数clrscr()清除输入文本窗口,接着输出一条提示语句,执行gets(str);语句,该语句的作用是从键盘输入一个字符串到str数组,碰到换行符结束。然后调用函数fun,其实参为str。通过上面对函数fun作用的分析我们可以知道,调用函数后输入字符串中的空格符都被删除了,最后得到的字符串为asdafaaz67。
    程序最后执行输出语句,输出字符数组str中的字符串,因此,程序最终的输出结果是asdafaaz67,本题答案选A。

  • 第17题:

    以下程序运行后输入:3,abcde<回车>,则输出结果是【 】include move(char *str,

    以下程序运行后输入:3,abcde<回车>,则输出结果是【 】

    include <string.h>

    move(char *str, int n)

    { char temp; int i;

    temp=str[n-1];

    for(i=n-1;i>0;i--) str[i]=str[i-1];

    str[0]=temp;

    }

    main( )

    { char s[50]; int n, i, z;

    scanf("%d,%s",&n,s);

    z=strlen(s);

    for(i=1; i<=n; i++) move(s, z);

    printf("%s\n",s);

    }


    正确答案:cdeab
    cdeab 解析:本题主要考查函数move()的功能。经过分析可知,每次调用该函数时,都是把最后一个字符移到串的最前端,而原先的第一个字符至倒数第二个字符顺次后移。

  • 第18题:

    有以下程序#include "stdio.h"main() { char str[]="tomeetme",str1[]="toseeyou"; char *p=str,*p1=str1; int i; for(i=0;i if(*(p+i)==*(p1+i)) putchar(*(p+i)); printf("\n");}程序的运行结果是A.to B.tomeetC.toeeD.程序段不能通过编译


    正确答案:C
    本题属于综合性题目,考查的知识点有字符数组的指针表示,for循环与if语句的结合,初始时定义两个字符数组:str和str1,用两个指针p、p1分别指向这两个数组,每个数组中都是长度为8的字符串。定义变量i作为数组下标的增量,if语句表示如果有*(p+i)=*(p1+i),即str[i]=str1[i],则将相同的字符输出。tomeetme中与toseeyou相同位置上具有的相同字符为toee。

  • 第19题:

    阅读下列程序,写出程序的运行结果【】。 include void main() { charstr1[ ]: "Hello,

    阅读下列程序,写出程序的运行结果【 】。

    include<iostream. h>

    void main() { char str1[ ]: "Hello, World?;

    char str2[100];

    int i=0;

    do{

    if (str1[i]>= 'a'&& str1[i]<= 'z' )

    str2[i]=str1[i]-32;

    else

    str2[i]=strl [i];

    i++;

    }while(strl[i]!='\0');

    str2[i]='\0';

    cout<<str1<<end1;

    cout<<str2<<end1;

    }


    正确答案:Hello World! HELLO WORLD!
    Hello, World! HELLO, WORLD!

  • 第20题:

    下面程序的输出结果是_____。 main() { char str[10],c='a'; int i=0; for (;i<5;i++) str[i]=c++; printf("%s",str); }

    A.abcde

    B.a

    C.不确定

    D.bcdef


    正确答案:C
    解析:字符串少一个结束标志,所以输出的结果不确定。

  • 第21题:

    阅读下列程序,当运行程序时,输入asd af aa z67,则输出为()。includeint fun (char *str

    阅读下列程序,当运行程序时,输入asd af aa z67,则输出为( )。 #include <sldio.h> int fun (char *str) { int i,j=0; for(i=0;str[i]! ='\0';i++) if(str[i]! =") str[j++]=str[i]; str[j]='\0'; } main() { char str[81]; int n; printf("Input a string:"); gets(str); fun(str); printf("%s\n",str); }

    A.asdafaaz67

    B.asd af aa z67

    C.asd

    D.z67


    正确答案:A
    解析:本题题意是删除字符串中所有空格。由于C语言中没有直接删除字符的操作,所以删除字符的操作都是采用“留下”字符的算法来实现。从串头str[0]到串尾逐一比较,判断其是否为空格,若不是空格,则将其保存在str[j]中,最后加串结束符“\0”。

  • 第22题:

    下列程序的输出结果是______。 include int CalcDigital(char*str) { if(str= =NULL)

    下列程序的输出结果是______。

    include<iostream.h>

    int CalcDigital(char*str)

    {

    if(str= =NULL)

    return 0;

    int num_of_digital=0;

    for(int i=0;str{i]!=0x0;i++)

    if(str[i]<='9'&& str[i]>='0')

    num_of_digital++;

    return num_of_digital;

    }

    void main( )

    {

    char a[]="Beijing20080lympic";

    cout<<CalcDigital(a)<<endl;

    }


    正确答案:4
    4 解析:分析本题可知函数功能为计算一个字符串中包含的数字个数。字符串中包含的数字有2008,故输出为4。

  • 第23题:

    下列程序的输出结果是 ()。 #include  #include   main( ) {    int i=0;    char str1[10]=“1234”, str2[10]= “567”;    strcat(str1,str2);    while(str2[i++]!=‘/0’)     str2[i]=str1[i];    puts(str2);   }


    正确答案:5234567