2016年807程序综合设计答案解析

如有错误请及时通知我改正,我会第一时间在博客上更新,避免误人子弟

//2019 10 11
//coded by user0914 , Visual Studio 2017
//如有错误,请通知我更正
#include <stdio.h>
//2016

//20191113更正3题4题

//1.A
//2.C
//3.B
//int a[M][N];
//定义了一个M行N列的数组,总元素个数为M*N。
//其第一维长度,也就是总的行数,在C语言中,就是定义中的M。
//类似的,第二维长度,也就是每行元素个数。在C语言中就是定义中的N。
//4.A//B没有分号
//5.A
//6.D
//int main() {
//    int a[5] = { 1,2,3,4,5 }, *p = a;
//    //a[0] = { 1,2,3,4,5 };
//    printf("&p+5 %X\n", &p + 5);
//    //printf("**a+1 %X\n", **a+1);//Error    C2100    illegal indirection
//    printf("**a+1 is illeagal!\n");
//    printf("&*a+3 %X\n", &*a+3);
//    printf("*(a+0) %X\n", *(a+0));
//    printf("*(a+1) %X\n", *(a + 1));
//    //虽然首元素地址和首地址在数值上是相同的,但是它们所表示的意义却不相同
//    //只有使用“&数组名”时,才是取数组首地址;直接打印数组名或者&数组名[0]都是取得数组首元素地址。
//    //首地址 + 1得到的是跳过整个数组的地址,首元素地址 + 1得到的是下一个元素的地址。
//    printf("test\n");
//    printf("&a %X\n", &a);
//    printf("a %X\n", a);
//    printf("&a[0] %X\n", &a[0]);
//    printf("&a+1 %X\n", &a+1);
//    printf("a+1 %X\n", a+1);
//    printf("&a[0]+1 %X\n", &a[0]+1);
//}
//7.B
//int main() {
//    int *p1, m;
//    p1 = m;
//    p1 = &m;
//    p1 = *m;
//    p1 = &*m;
//}
//8.A
//结构体占用内存大小,参考这个https://blog.csdn.net/qq_18815817/article/details/82788394
//9.D
//double fun(int x,int y){
//    double z;
//    z = x + y;
//    return z;
//}
//10.B
//11.F//20191022更正
//void main() {
//    for (;;) {
//        printf("1 ");
//    }
//    /*while () {
//
//    }
//    do {
//
//    } while ();*/
//}
//12.T
//13.F
//14.T
//15.F
//16.F//20191022更正
//比如
//struct STUDENT
//{
//    long studentID;
//    char studentName[10];
//    char studentSex;
//    int score[4];
//    struct DATE
//    {
//        int year;
//        int month;
//        int day;
//    }birthday;
//}student;
//17.T
//18.T
//19.T
//void main() {
//    char a[10] = "abc";
//    printf("%d\n",strlen(a));
//}
//20.F//是break
//21.
//int main() {
//    int a, b, result;
//    char op;
//    scanf("%d%c%d",&a,&op,&b);
//    switch (op) {
//        case '+':result = a + b; break;
//        case '-':result = a - b; break;
//        case '*':result = a * b; break;
//        case '/':if (b != 0)
//                result = a / b;
//            break;
//        default:result = 0;
//    }
//    //printf("%d %c %b =%d\n",a,op,c,result);//出题有误,c未定义,%b应为%d
//    printf("%d %c %d =%d\n", a, op, b, result);
//    return 0;
//}
//(1)输入 12+120 则输出 12 + 120 = 132
//(2)输入 60/3 则输出 60 / 3 = 20
//功能:作四则运算

//22.
//int main() {
//    int n, i, j, num[20], tmp;
//    printf("Please input n:");
//    scanf("%d",&n);
//    printf("Please input %d num:",n);
//    for (i = 0; i < n; i++) {
//        scanf("%d",&num[i]);
//    }
//    for (i = 0; i < n; i++) {
//        //for (j = 0; j < n - i; j++)//出题有误
//        for (j = 0; j < n - i-1; j++) {
//            if (num[j]>num[j+1]) {
//                tmp = num[j];
//                num[j] = num[j + 1];
//                num[j + 1] = tmp;
//            }
//        }
//    }
//    printf("Output:\n");
//    for (i = 0; i < n; i++) {
//        printf("%d ",num[i]);
//    }
//}
//输入10
//输入49 32 61 97 76 13 27 38 55 86
//则原题输出 Output:-858993460 13 27 32 38 49 55 61 76 86
//更正算法后 Output:13 27 32 38 49 55 61 76 86 97

//23.
//#include <string.h>
//int main() {
//    int i = 0;
//    char str[100];
//    printf("Please input string:");
//    gets(str);
//    while (str[i] != '\0') {
//        if (('a' <= str[i]) && (str[i] <= 'z'))
//            /*str[i++] = str[i++] - 'a' + 'A';*///出题有误
//            str[i] = str[i] - 'a' + 'A';
//        i++;
//    }
//        
//    printf("Output:");
//    puts(str);
//    return 0;
//}
//这道题我在VS2017上编译的,我调试时发现原题代码i值不会变化,程序会死循环
//所以我改了下代码
//输入Introduction of C++ Language
//则输出INTRODUCTION OF C++ LANGUAGE
//将小写字母变为大写

//24.
//void main() {
//    int score;
//    char grade;
//    scanf("%d",&score);
//    if (score < 0 || score > 100) {
//        printf("Error Input!\n");
//        return;
//    }
//    if (score >= 90) {
//        grade = 'A';
//    }
//    if (score >= 80 && score <= 89) {
//        grade = 'B';
//    }
//    if (score >= 70 && score <= 79) {
//        grade = 'C';
//    }
//    if (score >= 60 && score <= 69) {
//        grade = 'D';
//    }
//    if (score < 60) {
//        grade = 'E';
//    }
//    printf("score:%d grade:%c",score,grade);
//}

//25.
//void main() {
//    char s[64];
//    scanf("%s",s);
//    int i = 0;
//    for ( ; s[i] != '\0'; i++) {
//    }
//    int j = --i;
//    for (i = 0; ; ) {
//        if (j<0) {
//            printf("Yes\n");
//            break;
//        }
//        if (s[i] != s[j]) {
//            printf("No\n");
//            break;
//        }
//        i++;
//        j--;
//    }
//}

//26.
//按他的意思应该是求主对角线元素的和
//#define X 5
//void main() {
//    int a[X][X] = { 0 };
//    int n = 0;
//    int sum = 0;
//    scanf("%d", &n);
//    for (int i = 0; i < n; i++) {
//        for (int j = 0; j < n; j++) {
//            scanf("%d", &(a[i][j]));
//        }
//    }
//    for (int i=0;i<n;i++) {
//        sum += a[i][i];
//    }
//    if (n < 1 || n > X) {
//        printf("error input!\n");
//        return 0;
//    }
//    for (int i = 0; i < n; i++) {
//        for (int j = 0; j < n; j++) {
//            printf("%d ", a[i][j]);
//            if (j == n - 1) {
//                printf("\n");
//            }
//        }
//    }
//    printf("sum = %d\n",sum);
//}


版权声明:本文为oneshit原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。