c语言程序设计结课测验答案,c语言程序设计实验教程答案

发布时间:2022-11-29

本文目录一览:

  1. 求29.30.31答案和解释 c语言程序设计
  2. c语言答案
  3. C语言程序设计试题
  4. c语言二级考试题及答案
  5. C语言程序设计2015A卷-
  6. 《C语言程序设计》试题1 求解 请勿乱填 非常感谢

求29.30.31答案和解释 c语言程序设计

29、数组的下标值必须是整数,且不能越界,数组a的下标值范围是0--9 A
*(a+i)等价于a[i]
B
a[p-a+i]等价于a[i],因为p=a,所以p-a+i=i
C
p+i是数组中下标值为i的元素的地址
D
*(a[i])等价于a[i]
所以本题答案是:C
30、strcpy(s1,s2)字符串赋值函数,把串s2放在s1的位置上,所以s1必须有足够的存储空间来存放串s2
A
st1是一维数组可以存放字符串teacher1
B
st4是一个指针变量,但是该指针指向一个连续的存储空间teacher1
C
st3是指针变量,但是该指针没有指向任何存储空间,所以不能把串teacher1放在st3
D
st1是一维数组可以存放字符串teacher1
所以本题答案是:C
31、pq是指针变量,存放的是n的地址
A
p=q,p、q指针类型相同,可以直接赋值
B
*p=*q也可以
C
n=*p原理同B项
D
p是指针,应该存放n的地址,即p=n
所以本题答案是:D

c语言答案

C语言程序设计复习:

  1. 理解以下术语的含义:数组、函数、地址 指针 指针变量 直接访问 间接访问、结构体
  2. 用起泡法对10个数由小到大排序(P134例题)
  3. 输入10个学生的成绩,分别用函数实现下列功能:
    1)计算所有学生的平均分;
    2)计算学生成绩中最高分;
    3)计算学生成绩中最低分;
    4)统计及格学生人数;
    5)查找成绩为指定成绩(如90)记录,如果没有,请给出提示,如果有,请统计满足条件的记录数。
  4. 有一个已经排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中。(P153习题7.4)
  5. 编写一个函数,输入一个4位数字,要求输出这4个数字字符,但每两个数字字符间空一个空格。如输入1990,应输出“1 9 9 0”。(要求用函数)(P202习题8.8)
  6. 编写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度。(要求用指针,不能使用strlen()函数) (P279习题10.6)
  7. 编写一个程序,打入月份号,输出该月的英文月名。例如,输入“3”则输出“March”(要求用指针数组)。(P279习题10.18)
  8. 将一个数组中的值按逆序重新存放。例如,输入的数组顺序为8,6,5,4,1,要求改为1,4,5,6,8。(P153习题7.5)
  9. 编写一个函数用“起泡法”对输入的10个字符按由小到大顺序排序(要用函数)。(P202习题8.11)
  10. 将数组a中n个整数按相反顺序存放(要用函数)。(P237例题10.7)
  11. 输入一行文字,找出其中大写字母、小写字母、空格、数字及其他字符各有多少。(要求用指针实现)(P279习题10.8)
  12. 编写一个函数,将两个字符串连接(要用自定义函数,不能用strcat函数)。(P202习题8.6)
  13. 输入3个字符串,按照由小到大的顺序输出。(要求用指针) (P278习题10.2)
  14. 输入10整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数:1、输入10个数; 2、进行处理; 3、输出10个数(数据对换要求用指针实现)(P278习题10.3)
    参考答案:

2、用起泡法对10个数由小到大排序

#include <stdio.h>
void main()
{
    int a[10];
    int i, j, t;
    printf("input 10 numbers :\n");
    for (i = 0; i < 10; i++)
        scanf("%d", &a[i]);
    printf("\n");
    for (j = 0; j < 9; j++)
        for (i = 0; i < 10 - j; i++)
            if (a[i] > a[i + 1])
            {
                t = a[i];
                a[i] = a[i + 1];
                a[i + 1] = t;
            }
    printf("the sorted numbers :\n");
    for (i = 0; i < 10; i++)
        printf("%d ", a[i]);
}

3、用递归方法求n阶勒让德多项式的值

#include <stdio.h>
float p(int n, int x);
void main()
{
    int x, n;
    printf("input n x:");
    scanf("%d,%d", &n, &x);
    printf("n=%d,x=%d\n", n, x);
    printf("P%d(%d)=%6.2f\n", n, x, p(n, x));
}
float p(int n, int x)
{
    if (n == 0)
        return 1;
    else if (n == 1)
        return x;
    else
        return ((2 * n - 1) * x * p((n - 1), x) - (n - 1) * p((n - 2), x)) / n;
}

4、输入3个整数,按由小到大的顺序输出(要求用指针类型)

#include <stdio.h>
void sort(int *a, int *b, int *c);
void main()
{
    int a, b, c;
    scanf("%d%d%d", &a, &b, &c);
    sort(&a, &b, &c);
    printf("a=%d,b=%d,c=%d\n", a, b, c);
}
void sort(int *a, int *b, int *c)
{
    int tmp;
    if (*a > *b)
    {
        tmp = *a;
        *a = *b;
        *b = tmp;
    }
    if (*a > *c)
    {
        tmp = *a;
        *a = *c;
        *c = tmp;
    }
    if (*b > *c)
    {
        tmp = *b;
        *b = *c;
        *c = tmp;
    }
}

5、输入10个学生的成绩,分别用函数实现下列功能:

#include <stdio.h>
int average(int a[]);
int max(int a[]);
int min(int a[]);
int pass(int a[]);
int search(int a[], int g);
void main()
{
    int i, j, g;
    int score[10], aver, m1, m2, p, s;
    printf("Please input 10 scores:\n");
    for (i = 0; i < 10; i++)
        scanf("%d", &score[i]);
    printf("\n");
    aver = average(score);
    m1 = max(score);
    m2 = min(score);
    p = pass(score);
    printf("平均分为:%d\n", aver);
    printf("最高分为:%d\n", m1);
    printf("最低分为:%d\n", m2);
    printf("及格人数为:%d\n", p);
    printf("需要查找吗?\n");
    printf("输入1继续查找,输入0退出(1/0):");
    scanf("%d", &j);
    if (j == 1)
    {
        printf("请输入要查找的分数:\n");
        scanf("%d", &g);
        s = search(score, g);
        if (s == 0)
            printf("没有满足条件的记录");
        else
            printf("成绩为%d的学生共有%d名\n", g, s);
    }
}
int average(int a[])
{
    int i;
    int aver, sum = a[0];
    for (i = 1; i < 10; i++)
        sum = sum + a[i];
    aver = sum / 10;
    return aver;
}
int max(int a[])
{
    int i;
    int m = a[0];
    for (i = 1; i < 10; i++)
        if (m < a[i])
            m = a[i];
    return m;
}
int min(int a[])
{
    int i;
    int m = a[0];
    for (i = 1; i < 10; i++)
        if (m > a[i])
            m = a[i];
    return m;
}
int pass(int a[])
{
    int i;
    int s = 0;
    for (i = 0; i < 10; i++)
        if (a[i] >= 60)
            s++;
    return s;
}
int search(int a[], int g)
{
    int i;
    int s = 0;
    for (i = 0; i < 10; i++)
        if (a[i] == g)
            s++;
    return s;
}

6、已有一个已排好次序的数组,要求输入一个数后,按原先排序的规律将它插入数组中。

#include <stdio.h>
void main()
{
    int a[11] = {1, 4, 6, 9, 13, 16, 19, 28, 40, 100};
    int temp1, temp2, number, end, i, j;
    printf("初始数组如下:");
    for (i = 0; i < 10; i++)
        printf("%5d", a[i]);
    printf("\n");
    printf("输入插入数据:");
    scanf("%d", &number);
    end = a[9];
    if (number > end)
        a[10] = number;
    else
    {
        for (i = 0; i < 10; i++)
        {
            if (a[i] > number)
            {
                temp1 = a[i];
                a[i] = number;
                for (j = i + 1; j < 1; j++)
                {
                    temp2 = a[j];
                    a[j] = temp1;
                    temp1 = temp2;
                }
                break;
            }
        }
    }
    for (i = 0; i < 11; i++)
        printf("a%6d", a[i]);
}

7、编写一个函数,输入一个4位数字,要求输出这4个数字字符,但每两个数字字符间空一个空格。如输入1990,应输出“1 9 9 0”。

#include <stdio.h>
#include <string.h>
void stradd(char str[]);
void main()
{
    char str[80];
    printf("输入一串数字\n\n");
    gets(str);
    stradd(str);
    printf("\n\n加空格后的字符串\n\n");
    puts(str);
}
void stradd(char str[])
{
    char a[80];
    int i = 0, j;
    for (j = 0; str[j] != '\0'; j++)
    {
        a[i] = str[j];
        a[i + 1] = ' ';
        i += 2;
    }
    a[i] = '\0';
    for (i = 0; a[i] != '\0'; i++)
    {
        str[i] = a[i];
    }
    str[i] = '\0';
}

8、编写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度。(要求用指针实现)

#include <stdio.h>
int stringlength(char *str)
{
    int n;
    n = 0;
    while (*str != 0)
    {
        n++;
        str++;
    }
    return n;
}
int main()
{
    char str[100];
    int len;
    printf("Please input a string: ");
    scanf("%s", str);
    len = stringlength(str);
    printf("The string’s length is %d.", len);
    return 0;
}

9、编写一个程序,打入月份号,输出该月的英文月名。例如,输入“3”则输出“March”,要求用指针数组处理。

#include <stdio.h>
main()
{
    char *month_name[13] = {"illegal month", "January", "February", "March", "April",
                            "May", "June", "July", "August", "September", "October", "November", "December"};
    int n;
    printf("Input month: ");
    scanf("%d", &n);
    if ((n <= 12) && (n >= 1))
        printf("It is %s.\n", *(month_name + n));
    else
        printf("It is wrong.\n");
}

10、将一个数组中的值按逆序重新存放。例如,输入的数组顺序为8,6,5,4,1,要求改为1,4,5,6,8。

#include <stdio.h>
#define N 5
void main()
{
    int a[N], i, temp;
    printf("enter array a:\n");
    for (i = 0; i < N; i++)
        scanf("%d", &a[i]);
    printf("array a:\n");
    for (i = 0; i < N; i++)
    {
        temp = a[i];
        a[i] = a[N - i - 1];
        a[N - i - 1] = temp;
    }
    printf("\nNow, array a:\n");
    for (i = 0; i < N; i++)
        printf("%4d", a[i]);
    printf("\n");
}

11、编写一个函数用“起泡法”对输入的10个字符按由小到大顺序排序(要用函数)。

#include <stdio.h>
#include <string.h>
void sort(char str[]);
void main()
{
    char str[80];
    printf("输入一个字符串\n\n");
    gets(str);
    sort(str);
    printf("\n\n字符由小到大排序为:\n\n");
    puts(str);
}
void sort(char str[])
{
    int i, j;
    char temp;
    for (i = 0; i < strlen(str); i++)
    {
        for (j = 0; j < strlen(str) - i - 1; j++)
        {
            if (str[j] > str[j + 1])
            {
                temp = str[j];
                str[j] = str[j + 1];
                str[j + 1] = temp;
            }
        }
    }
}

12、将数组a中n个整数按相反顺序存放(要用函数)。

#include <stdio.h>
void inv(int x[], int n)
{
    int temp, i, j, m = (n - 1) / 2;
    for (i = 0; i <= m; i++)
    {
        j = n - 1 - i;
        temp = x[i];
        x[i] = x[j];
        x[j] = temp;
    }
    return;
}
void main()
{
    int i, a[10] = {3, 7, 9, 11, 0, 6, 7, 5, 4, 2};
    printf("转换前的数组为:\n");
    for (i = 0; i < 10; i++)
        printf("%d,", a[i]);
    printf("\n");
    inv(a, 10);
    printf("转换后的数组为:\n");
    for (i = 0; i < 10; i++)
        printf("%d,", a[i]);
    printf("\n");
}

13、输入一行文字,找出其中大写字母、小写字母、空格、数字及其他字符各有多少?(要求用指针实现)

#include <stdio.h>
#include <string.h>
int main()
{
    char str[40];
    int count[5] = {0, 0, 0, 0};
    printf("Please input a string .\n");
    scanf("%s", str);
    char *p = str;
    int n = strlen(str);
    for (int i = 0; i < n; i++)
    {
        if (*(p + i) >= 'A' && *(p + i) <= 'Z')
        {
            count[0]++;
        }
        else if (*(p + i) >= 'a' && *(p + i) <= 'z')
        {
            count[1]++;
        }
        else if (*(p + i) >= '0' && *(p + i) <= '9')
        {
            count[2]++;
        }
        else if (*(p + i) == ' ')
        {
            count[3]++;
        }
        else
        {
            count[4]++;
        }
    }
    printf("大写字母 小写字母 数字 空格 其他字符:\n");
    for (int i = 0; i < 5; i++)
    {
        printf("%d\t ", count[i]);
    }
    printf("\n\n");
    return 0;
}

14、编写一个函数,将两个字符串连接。

#include <stdio.h>
#include <string.h>
void concatenate(char string1[], char string2[], char string[])
{
    int i, j;
    for (i = 0; string1[i] != '\0'; i++)
        string[i] = string1[i];
    for (j = 0; string2[j] != '\0'; j++)
        string[i + j] = string2[j];
    string[i + j] = '\0';
}
void main()
{
    char s1[100], s2[100], s[100];
    printf("input string1:");
    scanf("%s", s1);
    printf("input string2:");
    scanf("%s", s2);
    concatenate(s1, s2, s);
    printf("the new string is %s", s);
}

15、输入3个字符串,按照由小到大的顺序输出。 (要求用指针实现)

#include <stdio.h>
void main()
{
    void sort(int *a, int *b, int *c);
    int a, b, c;
    scanf("%d%d%d", &a, &b, &c);
    sort(&a, &b, &c);
    printf("a=%d,b=%d,c=%d\n", a, b, c);
}
void sort(int *a, int *b, int *c)
{
    int tmp;
    if (*a > *b)
    {
        tmp = *a;
        *a = *b;
        *b = tmp;
    }
    if (*a > *c)
    {
        tmp = *a;
        *a = *c;
        *c = tmp;
    }
    if (*b > *c)
    {
        tmp = *b;
        *b = *c;
        *c = tmp;
    }
}

16、输入10整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数:1、输入10个数; 2、进行处理; 3、输出10个数(数据对换要求用指针实现)

#include <stdio.h>
void input(int number[])
{
    int i;
    printf("input 10 numbers:");
    for (i = 0; i < 10; i++)
        scanf("%d", &number[i]);
}
void max_min_value(int number[])
{
    int *max, *min, *p, temp;
    max = min = number;
    for (p = number + 1; p < number + 10; p++)
        if (*p > *max)
            max = p;
        else if (*p < *min)
            min = p;
    temp = number[0];
    number[0] = *min;
    *min = temp;
    if (max == number)
        max = min;
    temp = number[9];
    number[9] = *max;
    *max = temp;
}
void output(int number[])
{
    int *p;
    printf("Now, they are: ");
    for (p = number; p < number + 10; p++)
        printf("%d", *p);
    printf("\n");
}
void main()
{
    int number[10];
    input(number);
    max_min_value(number);
    output(number);
}

C语言程序设计试题

  1. 一条简单语句是以;字符作为结束符的,一条复合语句是分别以{字符和}字符作为开始符和结束符的。
  2. 任何一个C++程序至少且只能包含一个函数,且程序总是从这个函数开始执行,不论这个函数的位置如何。一个函数定义由函数头函数体两部分组成。
  3. C++头文件和源程序文件的扩展名分别为.h.cpp
  4. cout与操作符<<配合使用才能显示输出,cin与操作符>>配合使用才能实现输入。
  5. 数据类型intcharboolfloatdoubleint *等的类型长度分别为411484
  6. 数值常量46、0173和0x62对应的十进制值分别为4612398
  7. 字符串"It\’s\40a\40C++programe!"中包含有19个字符。
  8. x=5y=10,则计算y*=++x表达式后,xy的值分别为660
  9. x=25,则计算y=x--表达式后,xy的值分别为2425
  10. 假定xch分别为int型和char型,则sizeof(x)sizeof(ch)的值分别为41
  11. 假定x=64y=88,则x<<2y>>2的值分别为12844
  12. 假定x是一个逻辑量,则x&&true的值与x的值相同,x||false的值也与x的值相同。
  13. 假定x是一个逻辑量,则x&&!xx||!x的值分别为01
  14. 假定x=10,则表达式x=10?20:30的值为20
  15. 表达式sqrt(81)pow(6,3)的值分别为9216
  16. 数学算式(1+x)sin48°axbex+1对应的算术表达式分别为(1+x)*sin(48*3.14159/180)a*pow(x,b)*exp(x+1)
  17. 逻辑表达式:a=x||b>2*y+10的相反式为:~(a=x&&b<=2*y+10)
  18. 在嵌套的if语句中,每个else关键字与它前面最接近的if关键字相配套。
  19. for语句中,假定循环体被执行次数为n,则表达式1共被计算n次,表达式2共被计算n次,表达式3共被计算n次。
  20. 执行forwhile循环时,每次是先进行条件的判断,然后再执行循环,执行do循环时则相反。

c语言二级考试题及答案

2011年3月全国计算机等级考试二级笔试试卷
C语言程序设计
(考试时间90分钟,满分100分)

选择题

  1. A
  2. B
  3. D
  4. D
  5. B
  6. A
  7. C
  8. D
  9. A
  10. B
  11. A
  12. D
  13. A
  14. A
  15. A
  16. A
  17. D
  18. C
  19. A
  20. D
  21. B
  22. D
  23. B
  24. C
  25. D
  26. C
  27. D
  28. C
  29. C
  30. C
  31. A
  32. B
  33. C
  34. D
  35. B
  36. C
  37. D
  38. D
  39. B
  40. B

填空题

  1. 顺序
  2. DEBFCA
  3. 单元测试
  4. 主键
  5. D
  6. 3
  7. 1217
  8. 09
  9. 4
  10. 20 0
  11. i-1
  12. double avg(double a, double b)
  13. 13715
  14. e(E)moclew
  15. 123456
    2010年9月全国计算机等级考试二级C笔试试卷答案

选择题

15:BCDAA
6
10:DDCCA
1115:CBBAD
16
20:DAACB
2125:BCBDC
26
30:CBDDA
3135:ACBCD
36
40:BACBD

填空

  1. 1DCBA2345
  2. n-1
  3. 25
  4. 结构化
  5. 物理设计
  6. 2008
  7. 15
  8. 非0
  9. 1 4 13 40
  10. i
  11. 2
  12. a[row][col]
  13. 3
  14. *s
  15. FILE

C语言程序设计2015A卷-

判断题(每小题1分,共15分)

  1. 标准C中,只有数值型数据才能进行4则混合运算。
  2. 标准C中,_a是合法的自定义标识符。
  3. 有定义:float f;表达式f+=(int)3.6%2”不符合C语言语法。
  4. 标准C中,逻辑运算的结果只有是1表示满足条件,而结果是0表示不满足条件。
  5. 以下运算符排列顺序满足按照优先级从高到低的排列:‘’、‘!’、‘==’、‘-’。
  6. 语句for(;;);是非法的。
  7. 在C语言程序中可以由多个源文件构成,每个源文件都可以有自己的main()函数。
  8. while和do-while的主要区别是后者至少无条件执行一次。
  9. 数组名代表数组的首地址是常量,所以将实参数组名表示地址传给形参数组名是错误的。
  10. 当函数没有返回值类型时,表示函数类型为void。
  11. C语言中,指针变量作函数参数时,它们不是采取单向值传递的方式。
  12. 一个函数中只允许有一条return语句。
  13. 在C语言中,如果没有说明变量的存储类型是auto类型的。
  14. 由于指针中所存放的地址都是整数,所以整型指针和浮点型指针可以相互赋值。

填空题(每空1分,共15分)

  1. 若a=4;b=5,c=6;则表达式c==(b=-a); 中c的值是(1)。
  2. 计算表达式的值:
    4&&-4的值:(2);
    设int a=3,b=4,c=5,则表达式a||b+cb==c的值:(3);
    设x=2.5, a=7, y=4.7,则表达式x+a%3*(int)(x+y)%2/4的值:(4);
    设a=12,则表达式a*=a/5的值:(5);
  3. 若int x = 4,y = 6,z = 0;有循环while(x = y) {z ++;y--;}
    则循环语句执行完后,z值为(6)。
  4. 变量的指针就是指该变量的(7)。
  5. 若有定义int (*p)[4],则标识符p是(8);若有定义int *p[4],则标识符p是(9);
  6. 已有定义:char p[ ]={"France","Chinese","Russia","America"};则语句printf("%s",p[2]);printf("%c",(p[1]+2));printf("%c",((p+1)+1));
    的输出结果分别为:(10)、(11)、(12)。
  7. 已有定义: int x=65; 若格式化输出结果为"A, 65",则对应的格式化输出语句为printf("(13) ,(14) ", x, x)。
  8. 已定义:int a[][2]={1, 2, 3, 4, 2, 6, 7, 2};则a[3][0]=(15)。

简答题(每题4分,共12分)

  1. 简述选择语句if和else语句对与switch语句的区别。
  2. 简述在循环语句中,break和continue的区别。
  3. 若int a[5],p=a;简述p++和(*p)++的区别。

下列各程序中每个程序各有2个错误,指出错误语句,写出对应正确语句(每小题4分,共16分)

  1. (1)缺#include;(2)scanf("%f",a); 改为 scanf("%f",&a);
  2. (1)缺sum=0;(2)for(i=1; i=3; i++) 改为 for(i=0;i<3;i++)
  3. (1)p1=p2 改为 *p1=*p2(2)swap(a, *p) 改为 swap(a, p)
  4. (1)在if(m<0)语句后添加else if(m==0) a=1;(2)添加 return(a);

程序填空题:下列程序中缺少若干条语句,在对应的下划线上填上合适的语句,每一个下划线只填一条语句(每小题6分,共24分)

  1. (1)x=0;(2)if(n==x)(3)s++;s=s+1;
  2. (4)num[i](5)max num[i]?(6)num[i]!=0
  3. (7)n-i-1(8)a[j]>a[j+1](9)a[j+1]=temp
  4. (10)count=0;(11)n%10(12)n>0n!=0n

阅读下列程序,写出运行结果(第一小题4分,第二小题6分,共10分)

  1. #*#*#*
  2. main i=1 j=2 k=2
    sub i=1 j=2 k=1 x=2
    sub i=1 j=2 k=1 x=3

编程题(8分)

#include <stdio.h>
int strcompare(char c1, char c2);
void main()
{
    int i, j, flag = 0;
    char str1[90], str2[90];
    gets(str1);
    gets(str2);
    i = 0;
    do
    {
        flag = strcompare(str1[i], str2[i]);
        i++;
    } while (str1[i] != '\0' || str2[i] != '\0' && flag == 0);
    if (flag < 0)
        printf("%s小于%s ", str1, str2);
    else if (flag == 0)
        printf("%s 等于%s ", str1, str2);
    else
        printf("%s大于%s ", str1, str2);
    printf("两个字符串中相同的字串为:");
    j = 0;
    i--;
    while (j < i)
    {
        printf("%c", str1[j]);
        j++;
    }
}
int strcompare(char c1, char c2)
{
    int v;
    v = c1 - c2;
    return v;
}

《C语言程序设计》试题1 求解 请勿乱填 非常感谢

CCCBA,DBD9D
CDBBB,BCBAC不敢保证全对。。。
第九题我觉得答案是2。。。

推荐文章