网络信息传输的时候少不了各种信息的加密和解密。如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
参考答案和解析
正确答案:C
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

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

阅读下列程序,当运行函数时,输入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];

A.asdafaaz67

B.asdafaa267

C.asd

D.z67


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

第2题:

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。

第3题:

当运行以下程序时,输入 abcd ,程序的输出结果是 : 【 9 】 。

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);

}


正确答案:
(9) 【 9 】 a*b*c*d*
解析 : 在子程序中 , 如果条件成立 , 则执行下面的语句 , 如果不成立 , 跳过。最后的输出结果 是a*b*c*d* 。

第4题:

下列程序的运行结果为()。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去掉,保留剩下的。由于是通过指针调用,所以改变字符串的结果。

第5题:

下列程序的运行结果为()。 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去掉,保留剩下的。由于是通过指针调用,所以改变字符串的结果。

第6题:

若输入bcdefgh、m、abcdefg,以下程序的输出结果为()。includeincludemain(){i

若输入bcdefgh、m、abcdefg,以下程序的输出结果为( )。 #include<stdio.h> #include<string.h> main() { int i; char string[20],str[3][20]; for(i=0;i<3;i++)gets(str[i]); if(strcmp(str[0],str[1])>0) strcpy(string,str[0]); else strcpy(string,str[1]); if(strcmp(str[2],string)>0) strcpy(string,str[2]); printf("%s",string); }

A.bcdefgh

B.m

C.abcdefg

D.bcdefgh或abcdefg


正确答案:B

第7题:

下列给定程序中,函数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];”。

第8题:

下面程序的功能是将一个字符串str的内容颠倒过来,请填空。includemain(){ infi,j, [13]

下面程序的功能是将一个字符串str的内容颠倒过来,请填空。

include<string.h>

main()

{ infi,j, [13] ;char str[]={"1234567"};

for(i=0,j=strlen(str) [14] ;i<j;i++,j--)

{k=str[i];str[i]=str[i];str[j]=k;}

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


正确答案:

颠倒一个字符串中的字符,就是首尾对应的元素两两交换。简单地可用两个游标变量i和j,i是前端元素的下标,j是后端元素的下标,交换以这两个变量值为下标的元素 str[i]和str[j]。开始时,i的值为0,j的值为字符串末元素的下标(字符串长度减1)。每次交换后,i增1,j减1。继续交换的条件是str[i]位于str[j]的前面,即ij字符串末元素的下标是它的长度减1,所以在第二个空框处应填入-1。程序为了交换str[i]和str[j],使用了变量k,该变量应在程序的变量定义部分中—起定义,所以在第—个空

第9题:

阅读下列程序,当运行函数时,输入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

第10题:

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。

更多相关问题