更多“printf(str);}”相关问题
  • 第1题:

    阅读以下函数说明和C语言函数,将应填入(n)处的语句写在对应栏内。

    【函数1.1说明】

    本程序可以打印出如下图形(菱形):

    *

    ***

    *****

    *******

    *****

    ***

    *

    【函数2.1】

    main()

    {

    int i,j,k;

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

    {

    for(j=0;j<=2-i;j++)

    printf(" ");

    for((1))

    printf("*");

    printf("\n");

    }

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

    {

    for((2))

    printf(" ");

    for(k=0;k<=4-2*i;k++)

    printf("*");

    printf("\n");

    }

    }

    【函数2.2说明】

    通过本程序,可以从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件“CsaiWgm”中保存,输入的字符串以“!”结束。

    【函数2.2】

    include "stdio.h"

    main()

    {

    FILE *fp;

    char str[100],filename[10];

    int i=0;

    if((fp=fopen("CsaiWgm","w"))==NULL)

    {

    printf("cannot open the file\n");

    exit(0);

    }

    printf("please input a string:\n");

    gets(str);

    while((3))

    {

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

    str[i]=(4);

    fputc(str[i],fp);

    (5);

    }

    fclose(fp);

    fp=fopen("CsaiWgm","r");

    fgets(str,stden(str)+1,fp);

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

    fclose(fp);

    }


    正确答案:(1)k=0;k=2*i;k++ (2)j=0;j=i;j++ (3)str[i]!='!' (4)str[i]-32 (5)i++
    (1)k=0;k=2*i;k++ (2)j=0;j=i;j++ (3)str[i]!='!' (4)str[i]-32 (5)i++ 解析:本题考查用C语言实现菱形的输出与大小写字母的转换。
    在函数2.1中,题目要求实现对菱形的输出,从图中可以看出每行的“*”字符个数为(2×行号-1),最长的一行其长度为8个“*”字符,最短的一行是1个“*”字符,从最短到最长一共是4行。下面来[分析]代码。
    第(1)空是第二重循环的循环条件,从程序中可以推断出这个循环的作用是用来输出一行的“*”字符,根据上面的[分析],每行的“*”字符个数为(2×行号-1)可以得到循环的上界,再结合程序可以知道此空用的变量是k,而每行的行号存放在变量i中,因此,此空答案为k=0;k=2*i;k++。
    第(2)空在第二个二重循环下面,这个二重循环用来输出图形中下半部分,此空是循环的条件。由于菱形具有对称性,我们可以对照程序上面相应的循环中的条件,很容易就可以得到结果,此空答案为j=0;j=i;j++。
    在函数2.2中,题目要求从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件CsaiWgm中保存。此题的关键在于如何将小写字母变成大写字母。
    第(3)空是循环的循环条件,从程序中可以推断出这个循环的作用是用来将字符串的小写字母全部转换成大写字母,那么可以知道循环的条件是只要取到的字符不为结束字符“!”,循环就继续,因此,此空答案为str[i]!='!'。
    第(4)空是条件判断语句下面的语句,根据程序给出的代码不难发现,如果此条件判断语句结果为真,说明当前取到的字符是小写字母,那么应该将其转换为大写字母,因此,此空答案为str[i]-32。
    第(5)空是循环的最后一条语句,从程序中不难发现,循环对字符串的位置没有移动,那么此空应该用来实现对字符串位置的往后移动。而记录当前字符串位置的是变量i,因此,此空答案为i++。

  • 第2题:

    有以下程序:includemain(){ char str[][20]={"Hello","Beijing"),*p=str[0];printf("

    有以下程序: #include<string.h> main() { char str[][20]={"Hello","Beijing"),*p=str[0]; printf("%d\n",strlen(p+20)); } 程序运行后的输出结果是( )。

    A.0

    B.5

    C.7

    D.20


    正确答案:C
    解析:主函数中定义了一个二维字符数组并初始化,初始化后的结果为str[0]="Hello"、str[1]="Beijng",然后定义一个字符指针变量p并让它指向str[0],即指向数组的首地址,而在C语言中无论是一维还是多维数组,其元素在内存中都是顺序存放的,故p+20后指针指向str[1],所以strlen(p+20);返回的是str[1]中字符串的长度,即"Beijng"的长度7,故4个选项中选项C符合题意。

  • 第3题:

    下列程序段的运行结果是()。 include void main() {char str[]="ABC",*p=str; printf("

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

    #include<stdio.h>

    void main()

    { char str[]="ABC",*p=str;

    printf("%d\n",*(p+3) );

    }

    A.67

    B.0

    C.字符'C'的地址

    D.字符'C'


    正确答案:B
    解析:先定义了一个指向字符型数组str的指针p,指针p指向数组str的首地址,p+3将指针指向str[3],又因为字符型数组在存放字符串时会自动在末尾加上'\0',所以*(p+3)=0。

  • 第4题:

    下列程序在32位linux或unix中的结果是什么?

    func(char *str)

    {

    printf("%d",sizeof(str));

    printf("%d",strlen(str));

    }

    main()

    {

    char a[]="123456789";

    printf("%d",sizeof(a));

    func(a);

    }


    正确答案:

     

    10 4 9

  • 第5题:

    下列程序在32位linux或unix中的结果是什么?

    func(char *str)

    {

    printf(" %d",sizeof(str));

    printf(" %d",strlen(str));

    }

    main()

    {

    char a[]="123456789";

    printf(" %d",sizeof(a));

    printf(" %d",strlen(a));

    func(a);

    }


    正确答案:

     

    10 9 4 9

  • 第6题:

    以下程序:includemain(){char str[10];scanf("%s",&str);printf("%s\n",str);}运

    以下程序: #include<stdio.h> main() {char str[10]; scanf("%s",&str); printf("%s\n",str); } 运行上面的程序,输入字符串how are you,则程序的执行结果是( )。

    A.how

    B.how are you

    C.h

    D.howareyou


    正确答案:A
    解析:当从键盘输入bow are you时,由于scanf输入函数的特点是遇到空格时结束读入字符,因此,该程序只将how这3个字符送到了字符数组str中,并在其后自动加上结束符“\0”。

  • 第7题:

    设有char str[10],下列语句正确的是A.scanf("%s",&str); B.printf("%c",str); C.printf("%s",str[0]); D.printf("%s",str);


    正确答案:D
    本题主要考查字符数组的引用。题目中定义了一个大小为10的字符数组str。下面分别分析每个选项。
    在选项A中,从scanf("%s",&str);语句的输入列表&str可以知道此语句不正确,因为str是数组名,本身就表示一个地址,再加一个取地址符&,使表示方法不正确。
    在选项B中,由于printf("%c",str);语句的输出格式表示输出单个字符,而输出列表中的str表示一个地址,而不是数值,表示方法不对。
    在选项C中,由于printf("%s",str[0]);语句的输出格式表示输出一个字符串,而输出列表中的str[0]表示一个字符,表示方法不对。
    在选项D中,由于printf("%s",str);语句的输出格式表示输出一个字符串,而输出列表中的str表示一个字符串的首地址,通过这个方式可以实现输出str所指向的字符串。

  • 第8题:

    void Test(void){char *str = (char *)

    malloc(100); strcpy(str, “hello”); free(str); if(str != NULL) { strcpy(str, “

    world”); printf(str);}}请问运行 Test 函数会有什么样的结果?


    正确答案:
     

  • 第9题:

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

  • 第10题:

    #include

    main()

    { char str[ ]=“The C program”,c;

    int i;

    for(i=2;(c=str[i])!=‘\0’;i++)

    { switch(c)

    { case ‘g’: ++i; break;

    case ‘o’: continue;

    default: printf(“%c”,c); continue;

    }

    printf(“*”);

    }

    printf(“\n”);

    }


    正确答案:
    4.e C pr*am

  • 第11题:

    设有char str〔10〕,下列语句正确的是()

    • A、scanf(”%s”,&str);
    • B、print[(”%c”,str);
    • C、printf(”%s”,str〔0〕);
    • D、printf(”%s”,str);

    正确答案:D

  • 第12题:

    单选题
    下面语句正确的是()
    A

    int*p;*p=20

    B

    char*s=”abcdef”;printf(“%s/n”,s)

    C

    charstr[]=”abcd”;str++

    D

    charstr[]={‘a’,’b’,’c’};printf(“%s”,str)


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

  • 第13题:

    请补充函数fun(),该函数的功能是:把从主函数中输入的字符串str2接在字符串str1的后面。

    例如:str1=“How do”,str2=“you do?”,结果输出: How do you do?

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

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

    试题程序:

    include<stdio.h>

    include<conio.h>

    define N 40

    void fun(char*str1,char *str2)

    {

    int i=0;

    char *pl=str1;

    char*p2=str2;

    while(【 】)

    i++;

    for(;【 】;i++)

    *(p1+i)=【 】;

    *(p1+i)='\0';

    }

    main()

    {

    char str1[N],str2[N);

    clrscr();

    printf("*****Input the string str1 & Str2*****\n");

    printf("\nstr1:");

    gets(str1);

    printf("\nstr2:");

    gets(str2);

    printf("**The string str1 & str2**\n");

    puts(str1);

    puts(str2);

    fun(str1,str2);

    printf("*****The new string *****\n");

    puts(str1);

    }


    正确答案:*(p1+i) *p2 *p2++
    *(p1+i) *p2 *p2++ 解析:第一空:变量i用来记录字符串str1的长度,当指针指列宁符串str1结束标志符‘\0’时,while循环结束,变量 i停止累加。第二空:指针p2指向字符串str2,通过for循环将字符中str2按在str1后面,循环结束的条件是指针p2所指的字符是字符串结束标志符‘\0’。第三空:指针p2最初指向字符串str2的首字符,通过自加1,使指针p2依次向后移动,指向str2的各个字符,实现将宁符串str2接在str1后面的功能。

  • 第14题:

    若有以下说明,则能打印出“Yu”的语句是______。 struct samp { char name[10]; int number; }kk[3]={{"WarBin",1},{"LiYu",2},{"LuHui",3}}; struct samp*str[3]; str[0]=&kk[0];str[1]=&kk[1];str[2]=&kk[2];

    A.printf("%s\n",str[1].name[2]);

    B.printf("%s\n",str[1]->name+2);

    C.printf("%s\n",str[2].name[2]);

    D.printf("%s\n",str[2]->name+2);


    正确答案:B
    解析:str是指针数组,每个元素存放的是指向结构体类型数据的地址,每个元素可看作是一个指针变量,通过结构体指针变量引用结构体变量各成员的形式有两种:一是(*指针变量名).成员名;二是指针变量名->成员名。本题可以是"(*str[1]).name+2"或"str[1]->name+2"。

  • 第15题:

    如下程序段#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。

  • 第16题:

    以下程序:includeincludemain(){char str[]="abcd\n\123\xab";printf("%d"

    以下程序: #include<stdio.h> #include<string.h> main() {char str[]="abcd\n\123\xab"; printf("%d",(str)); } 运行后的输出结果是( )。

    A.10

    B.9

    C.7

    D.14


    正确答案:C

  • 第17题:

    void setmemory(char **p, int num)

    { *p=(char *) malloc(num);}

    void test(void)

    { char *str=NULL;

    getmemory(&str,100);

    strcpy(str,"hello");

    printf(str);

    }

    运行test函数有什么结果?( )


    正确答案:
     

  • 第18题:

    以下程序的输出结果是( )。 char str[15]=”hello!”; printf(“%d\n”,strlen(str)); A.15

    以下程序的输出结果是( )。 char str[15]=”hello!”; printf(“%d\n”,strlen(str));

    A.15

    B.14

    C.7

    D.6


    正确答案:D

  • 第19题:

    void GetMemory(char *p){p = (char *)malloc(100);}void Test(void) {char *str

    = NULL;GetMemory(str); strcpy(str, "hello world");printf(str);}请问运行 Test 函数

    会有什么样的结果?


    正确答案:
     

  • 第20题:

    下面的程序各自独立,请问执行下面的四个TestMemory 函数各有什么样的结果?

    ①void GetMemory(char * p)

    {

    p = (char * )malloc(100);

    }

    void TestMemory (void)

    {

    char *str = NULL;

    GetMemory (str);

    strcpy(str, "hello world");

    prinff(str);

    }

    ② char * GetMemory (void)

    {

    char p[ ] = "hello world";

    return p;

    }

    void TestMemory (void)

    {

    char * str = NULL;

    str = GetMemory( );

    printf(str);

    }

    ③void GetMemory(char * * p, int num)

    {

    * p = (char * )malloc(num);

    }

    void TestMemory (void)

    {

    char * str = NULL;

    GetMemory(&str, 100);

    strcpy( str, "hello" );

    printf(sir);

    }

    ④void TestMemory (void)

    {

    char *str = (char * )malloe(100);

    strepy (str, "hello" );

    free ( str );

    if(str ! = NULL)

    {

    strepy( str, "world" );

    printf(str);

    }

    }


    正确答案:程序1程序崩溃。因为GetMemory并不能传递动态内存TestMemory函数中的str一直都是 NULL。strcpy(str “hello world”);将使程序崩溃。 程序2可能是乱码。因为GetMemory返回的是指向“栈内存”的指针该指针的地址不是 NULL但其原来的内容已经被清除新内容不可知。 程序3能够输出hello但是会发生内存泄漏。 程序4篡改动态内存区的内容后果难以预料非常危险。因为free(str);之后str成为野指针if(str!=NULL)语句不起作用。
    程序1程序崩溃。因为GetMemory并不能传递动态内存,TestMemory函数中的str一直都是 NULL。strcpy(str, “hello world”);将使程序崩溃。 程序2可能是乱码。因为GetMemory返回的是指向“栈内存”的指针,该指针的地址不是 NULL,但其原来的内容已经被清除,新内容不可知。 程序3能够输出hello,但是会发生内存泄漏。 程序4篡改动态内存区的内容,后果难以预料,非常危险。因为free(str);之后,str成为野指针,if(str!=NULL)语句不起作用。

  • 第21题:

    当运行以下程序时,输入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*。

  • 第22题:

    用“起泡法”对输入的10个字符排序后按从小到大的次序输出。

    #define N 10

    char str[N];

    main()

    { int i,flag;

    for(flag=1;flag==1;)

    { scanf("%s",str);

    flag=0;

    printf("\n");

    }

    sort(___(4)___);

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

    printf("%c",str[i]);

    printf("\n");

    }

    sort(char str[N])

    { int i,j;

    char t;

    for(j=1;j<N;J++)

    for(i=0;(i<N-J)&&(STR[I]!='\0');I++)

    if(str[i]>str[i+1])

    { t=str[i];

    ____(5)____;

    ____(6)____;

    }

    }


    正确答案:
    2.(4) str (5) str[i]=str[i+1] (6) str[i+1]=t

  • 第23题:

    下面语句正确的是()

    • A、int*p;*p=20
    • B、char*s=”abcdef”;printf(“%s/n”,s)
    • C、charstr[]=”abcd”;str++
    • D、charstr[]={‘a’,’b’,’c’};printf(“%s”,str)

    正确答案:B