vc++相关程序阅读题

vc++相关的程序阅读题运行结果以及分析的过程……谢谢了……

img

img

img

img

第一张图:

(1)
程序运行结果为: d=20
分析过程:
a=0,if(a)不成立,执行 else if(!b)语句
b=1为真,!b为假,所以else if语句也不执行, 
if(!c) else语句属于else if(!b),所以这个if esle语句不会被执行
执行cout 语句,输出d的值,上面的语句都没有被执行,所以d的值没有改变,
输出结果为 d=20
(2)
输出的第一行是 10
第二行是 5
第三行是 3

分析过程:
c2/c3/c5初始值为0,for循环从1=1开始
i=1时:
        if(i%15==0)不成立
        if(i%2==0)不成立
        if(i%3==0)不成立
        if(i%5==0)不成立
执行i++,i的值变成2
i=2时:
        if (i % 15 == 0)不成立
        if (i % 2 == 0)成立,执行c2++,c2的值变为1
        if (i % 3 == 0)不成立
        if (i % 5 == 0)不成立
执行i++, i的值变成3
    if (i % 15 == 0)不成立
    if (i % 2 == 0)不成立
    if (i % 3 == 0)成立,执行c3++,c3的值变为1
    if (i % 5 == 0)不成立
依次类推,代码的功能是:
    c2统计1-20能被2整数的数,一共10个,所以c2的值是10
    c3统计的是1-20能被3整除的数,但是当i=15时,执行continue语句,次数不统计,所以c3=5
    c5统计的是1-20能被5整数的数,但是当i = 15时,执行continue语句,次数不统计,所以c5 = 3


第二张图:

1)
输出的第一行是 6
第二行是 1

分析过程:
双层for循环都没有加{},所以n++属于双层for循环,m++不属于双层for循环的语句,m++只执行1次。
所以m的值就是1.第二行输出结果就是1.
双层for循环中,n++只在j>=i成立时执行,
i=0时,j=0/1/2时执行if语句,此时n++执行3次,n=3
i=1时,j=1/2时执行if语句,n++执行2次,n=5
i=2时,j=2时执行if语句,n++执行1次,n=6
所以,第一行的结果是62)
输出的第一行是: x=16
第二行是:y=8
分析过程:
x/y初始值为0,执行for循环:
i=0时:
    x++(x=1)
    执行内层for循环,
        当j为奇数是,if(j%2)成立,j=1、3时执行,y++一共执行2次,y=2,执行continue,x++不再执行
        当j为偶数时,执行x++,从024一共执行3次,所以x = 4
i=1时:
    x++(x = 5)
    执行内层for循环,
        当j为奇数是,if(j % 2)成立,j = 13时执行,y++一共执行2次,y = 4, 执行continue,x++不再执行
        当j为偶数时,执行x++,从024一共执行3次,所以x = 8
i= 2时:
    x++(x = 9)
        执行内层for循环,
        当j为奇数是,if(j % 2)成立,j = 13时执行,y++一共执行2次,y = 6, 执行continue,x++不再执行
        当j为偶数时,执行x++,从024一共执行3次,所以x = 12
i = 3时:
    x++(x = 13)
    执行内层for循环,
        当j为奇数是,if(j % 2)成立,j = 13时执行,y++一共执行2次,y = 8, 执行continue,x++不再执行
        当j为偶数时,执行x++,从024一共执行3次,所以x = 16
i=4时,结束循环,所以最后输出的是:
x=16
y=8



第三张图:

第三张图:
(1)
执行结果:4 4 4 4 4 3 2
分析过程:
a[10] = {9,7,6,5,3,2} 一共6个数据,开始执行for循环
i=5时:
    此时num = 4, a[5] = 2if( num>a[5]) 成立,执行a[6]=a[5],a数组变为:a[10] = { 9,7,6,5,3,2,2 }
    if(i==0)不成立,执行i--,i=4
i=4时:
    此时num = 4, a[4] = 3if(num > a[5]) 成立, 执行a[5] = a[4], a数组变为:a[10] = { 9,7,6,5,3,3,2 }
    if (i == 0)不成立,执行i--,i = 3
i = 3时:
    此时num = 4, a[3] = 5if(num > a[5]) 不成立, 执行else语句
        a[4] = num=4, a数组变为:a[10] = { 9,7,6,5,4,3,2 }
    if (i == 0)不成立,执行i--,i = 2
i = 2时:
        此时num = 4, a[2] = 6if(num > a[5]) 不成立, 执行else语句
        a[3] = num = 4, a数组变为:a[10] = { 9,7,6,4,4,3,2 }
        if (i == 0)不成立,执行i--,i = 1
i = 1时:
        此时num = 4, a[1] = 7if(num > a[5]) 不成立, 执行else语句
        a[2] = num = 4, a数组变为:a[10] = { 9,7,4,4,4,3,2 }
        if (i == 0)不成立,执行i--,i = 0
i = 0时:
        此时num = 4, a[0] = 9if(num > a[5]) 不成立, 执行else语句
        a[1] = num = 4, a数组变为:a[10] = { 9,4,4,4,4,3,2 }
        if (i == 0)成立,a[0]=num,a数组变为:a[10] = { 4,4,4,4,4,3,2 }
执行i--,i = -1for循环结束
最后打印数组的前7个元素,结果就是:4 4 4 4 4 3 22)
执行结果:aabcdi后面的内容不确定

分析过程:
i=5a[7] = {'a','b','c','d','i','\0'}
执行do
a[5]=a[4],此时,a[7]变为a[7] = { 'a','b','c','d','i','i' },--i,i=4,i>0成立,继续循环
a[4] = a[3], 此时,a[7]变为a[7] = { 'a','b','c','d','d','i' }, --i, i = 3, i > 0成立,继续循环
a[3] = a[2], 此时,a[7]变为a[7] = { 'a','b','c','c','d','i' }, --i, i = 2, i > 0成立,继续循环
a[2] = a[1], 此时,a[7]变为a[7] = { 'a','b','b','c','d','i' }, --i, i = 1, i > 0成立,继续循环
a[1] = a[0], 此时,a[7]变为a[7] = { 'a','a','b','c','d','i' }, --i, i = 0, i > 0不成立,结束循环
输出a,结果为 aabcdi后面的内容不确定了,因为没有\0结束符了

第四张图:



//(1)
#include <iostream.h>
#include <string.h> //填空1
void main()
{
    char s1[20], s2[20], s3[20];
    gets(s1); //输入s1  填空2
    strcpy(s2, s1);//把s1复制给s2  填空3
    int i = 0, j = 0;
    while (s1[i]) {
        if ((s1[i] >= 'a' && s1[i] <= 'z') || (s1[i] >= 'A' && s1[i] <= 'Z')) //填空4
            s3[j++] = s1[i];
        i++;
    }
    s3[j] = '\0'; //填空5
    cout << s1 << '\n' << s2 << '\n' << s3 << '\n';
}

//(2)
#include <iostream.h>
#include <string.h>
void main()
{
    char s[] = "I am a student.";
    int i, j;
    char k; //填空1
    for (i = 0, j = strlen(s) - 1; i < j; i++, j--) //填空2 、3
    {
        k = s[i]; s[i] = s[j]; s[j] = k; //填空4
    }
    cout << s << endl;
}

程序运行后,输出的结果是:.tneduts a ma I (注意不要漏了最前面的点)


编程运行结果,你直接放编辑器执行就可以。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632