📌  相关文章
📜  AKTU 1年级第一学年解题纸2016-17 | COMP。系统和C编程| C段

📅  最后修改于: 2021-05-19 19:45:22             🧑  作者: Mango

论文下载链接:论文|学期1 | 2016-17

时间: 3小时
总分数:100

注意:-

  • 共分为三个部分。 A节为20分, B节为30分, C节为50分。
  • 尝试所有问题。每个问题都带有标记。
  • 必要时假定合适的数据。

尝试本节中的任何两个问题:(2 * 15 = 30)

3. a)排序是什么意思。用C编写一个程序,对给定的n个正整数进行排序。并给出相同的流程图。使用排序算法根据上的元素运算符重新排列给定阵列或列表元素。运算符用于决定在相应的数据结构元素的新订单。

例如:以下字符列表按其ASCII值的升序排列。即,具有较小的ASCII值的字符将被首先放置比具有更高的ASCII值的字符。

排序算法

选择排序流程图:

用C编程以对N个正整数的给定数组的元素进行排序:

// C program to sort the elements
// of a given array of N positive integers
  
#include 
  
void swap(int* xp, int* yp)
{
    int temp = *xp;
    *xp = *yp;
    *yp = temp;
}
  
void selectionSort(int arr[], int n)
{
    int i, j, min_idx;
  
    // One by one move boundary of unsorted subarray
    for (i = 0; i < n - 1; i++) {
        // Find the minimum element in unsorted array
        min_idx = i;
        for (j = i + 1; j < n; j++)
            if (arr[j] < arr[min_idx])
                min_idx = j;
  
        // Swap the found minimum element with the first element
        swap(&arr[min_idx], &arr[i]);
    }
}
  
/* Function to print an array */
void printArray(int arr[], int size)
{
    int i;
    for (i = 0; i < size; i++)
        printf("%d ", arr[i]);
    printf("\n");
}
  
// Driver program to test above functions
int main()
{
    int arr[] = { 64, 25, 12, 22, 11 };
    int n = sizeof(arr) / sizeof(arr[0]);
    selectionSort(arr, n);
    printf("Sorted array: \n");
    printArray(arr, n);
    return 0;
}
输出:
Sorted array: 
11 12 22 25 64

3. b)编写一个程序,以检查给定的号码是否为Armstrong。像153 = 1 3 + 5 3 + 3 3

// C program to find Armstrong number
  
#include 
  
/* Function to calculate x raised to the power y */
int power(int x, unsigned int y)
{
    if (y == 0)
        return 1;
    if (y % 2 == 0)
        return power(x, y / 2) * power(x, y / 2);
    return x * power(x, y / 2) * power(x, y / 2);
}
  
/* Function to calculate order of the number */
int order(int x)
{
    int n = 0;
    while (x) {
        n++;
        x = x / 10;
    }
    return n;
}
  
// Function to check whether the given number is
// Armstrong number or not
int isArmstrong(int x)
{
    // Calling order function
    int n = order(x);
    int temp = x, sum = 0;
    while (temp) {
        int r = temp % 10;
        sum += power(r, n);
        temp = temp / 10;
    }
  
    // If satisfies Armstrong condition
    if (sum == x)
        return 1;
    else
        return 0;
}
  
// Driver Program
int main()
{
    int x = 153;
    if (isArmstrong(x) == 1)
        printf("True\n");
    else
        printf("False\n");
  
    x = 1253;
    if (isArmstrong(x) == 1)
        printf("True\n");
    else
        printf("False\n");
  
    return 0;
}
输出:
True
False

4. a)定义一个结构?用C语言编写一个程序,创建一个包含五十名学生的数据库,以存储个人详细信息,例如卷号,姓名和标记。打印用户输入姓名的学生的所有详细信息。结构是C / C++中用户定义的数据类型。结构创建一个数据类型,该数据类型可用于将可能不同类型的项目分组为单个类型。

如何建立结构?
‘struct’关键字用于创建结构。以下是一个示例。

struct address {
    char name[50];
    char street[100];
    char city[50];
    char state[20];
    int pin;
};

如何声明结构变量?
结构变量既可以用结构声明来声明,也可以像基本类型一样声明为单独的声明。

// A variable declaration with structure declaration.
struct Point {
    int x, y;
} p1; // The variable p1 is declared with 'Point'
  
// A variable declaration like basic data types
struct Point {
    int x, y;
};
  
int main()
{
    struct Point p1; // The variable p1 is declared like a normal variable
}

注意:在C++中,在声明变量之前,struct关键字是可选的。在C语言中,它是强制性的。

程序:

#include 
#include 
  
struct Student {
    int roll_no;
    char name[100];
    float marks;
};
  
int main()
{
    int i = 0;
    char n[100];
    struct Student student[50];
  
    for (i = 0; i < 50; i++) {
        printf("\nEnter details for Student %d", i + 1);
  
        printf("\nRoll Number: ");
        scanf("%d", &student[i].roll_no);
  
        printf("\nName: ");
        scanf("%s", student[i].name);
  
        printf("\nMarks: ");
        scanf("%f", &student[i].marks);
    }
  
    printf("\nEnter the name of the student whose details you need: ");
    scanf("%s", n);
  
    for (i = 0; i < 50; i++) {
        if (strcmp(n, student[i].name) == 0) {
  
            printf("\nRoll Number: %d", student[i].roll_no);
  
            printf("\nName: %s", student[i].name);
  
            printf("\nMarks: %f", student[i].marks);
  
            break;
        }
    }
  
    if (i == 50)
        printf("No student found with this name");
}

4. b)宏是什么意思?举例说明宏的类型。:宏是程序中具有某些名称的代码段。只要编译器遇到此名称,编译器就会用实际的代码段替换该名称。 “ #define”指令用于定义宏。现在让我们借助程序来了解宏定义:

#include 
  
// macro definition
#define LIMIT 5
int main()
{
    for (int i = 0; i < LIMIT; i++) {
        std::cout << i << "\n";
    }
  
    return 0;
}
输出:
0
1
2
3
4

输出:

0
1
2
3
4

在上述程序中,编译器执行LIMIT时,将其替换为5。宏定义中的LIMIT被称为宏模板,而5则是宏扩展。
注意:宏定义的末尾没有分号(’;’)。宏定义不需要以分号结尾。

带参数的宏:我们还可以将参数传递给宏。用参数定义的宏的作用类似于函数。让我们通过一个程序来理解这一点:

#include 
  
// macro with parameter
#define AREA(l, b) (l * b)
int main()
{
    int l1 = 10, l2 = 5, area;
  
    area = AREA(l1, l2);
  
    std::cout << "Area of rectangle is: " << area;
  
    return 0;
}
输出:
Area of rectangle is: 50

输出:

Area of rectangle is: 50

从上面的程序中我们可以看到,只要编译器在程序中找到AREA(l,b),它就会用语句(l * b)替换它。不仅如此,传递给宏模板AREA(l,b)的值还将在语句(l * b)中替换。因此,AREA(10,5)等于10 * 5。

5. a)指针是什么意思?指针变量如何初始化?编写程序以使用指针对给定的数字进行排序。

指针是地址的符号表示。它们使程序能够模拟按引用调用以及创建和操纵动态数据结构。它在C / C++中的一般声明具有以下格式:

句法:

datatype *var_name; 
int *ptr;   //ptr can point to an address which holds int data

如何使用指针?

  • 定义一个指针变量
  • 使用一元运算符(&)将变量的地址分配给指针,该运算运算符返回该变量的地址。
  • 使用一元运算符(*)访问存储在地址中的值,该运算运算符返回位于其操作数指定的地址处的变量的值。

我们将数据类型与指针关联的原因是它知道数据存储在多少字节中。当我们增加一个指针时,我们将指针增加它所指向的数据类型的大小。

c中的指针

5. b)通过键盘输入一个五位数的正整数。编写C函数以计算5位数字的数字总和

  1. 不使用递归:
    // C program to compute sum of digits in
    // number.
    #include 
      
    /* Function to get sum of digits */
    int getSum(int n)
    {
        int sum = 0;
        while (n != 0) {
            sum = sum + n % 10;
            n = n / 10;
        }
        return sum;
    }
      
    int main()
    {
        int n = 687;
        printf(" %d ", getSum(n));
        return 0;
    }
    
    输出:
    21
    
  2. 使用递归:
    // Recursive C program to find sum of digits
    // of a number
    #include 
      
    // Function to check sum of digit using recursion
    int sum_of_digit(int n)
    {
        if (n == 0)
            return 0;
        return (n % 10 + sum_of_digit(n / 10));
    }
      
    // Driven Program to check above
    int main()
    {
        int num = 12345;
        int result = sum_of_digit(num);
        printf("Sum of digits in %d is %d\n", num, result);
        return 0;
    }
    
    输出:
    Sum of digits in 12345 is 15