📌  相关文章
📜  AKTU第一学年第一学期解题纸2015-16 | COMP。系统和C编程| C段

📅  最后修改于: 2021-05-19 19:49:25             🧑  作者: Mango

论文下载链接:论文|学期1 | 2015-16

时间: 3小时
总分数:100

注意:-

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

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

10.可以用C语言创建的文件有哪些类型?还给出了可以使用适当语法的这些文件的不同模式。用C语言编写一个程序,在现有文本文件的末尾附加更多文本。
C中的文件打开模式:

  • “ r” –搜索文件。如果文件成功打开,则fopen()将其加载到内存中并设置一个指向其中第一个字符的指针。如果无法打开文件,则fopen()返回NULL。
  • “ w” –搜索文件。如果文件存在,其内容将被覆盖。如果该文件不存在,则会创建一个新文件。如果无法打开文件,则返回NULL。
  • “ a” –搜索文件。如果文件成功打开,则fopen()将其加载到内存中并设置一个指向文件中最后一个字符的指针。如果该文件不存在,则会创建一个新文件。如果无法打开文件,则返回NULL。
  • “ r +” –搜索文件。如果成功打开,则fopen()将其加载到内存中并设置一个指向其中第一个字符的指针。如果无法打开文件,则返回NULL。
  • “ w +” –搜索文件。如果文件存在,其内容将被覆盖。如果该文件不存在,则会创建一个新文件。如果无法打开文件,则返回NULL。
  • “ a +” –搜索文件。如果文件成功打开,则fopen()将其加载到内存中并设置一个指向文件中最后一个字符的指针。如果该文件不存在,则会创建一个新文件。如果无法打开文件,则返回NULL。

11. a)编写一个C程序来检查给定的方阵是否对称

// Simple C code for check a matrix is
// symmetric or not.
  
#include 
  
const int MAX = 3;
  
// Fills transpose of mat[N][N] in tr[N][N]
void transpose(int mat[][MAX], int tr[][MAX], int N)
{
    for (int i = 0; i < N; i++)
        for (int j = 0; j < N; j++)
            tr[i][j] = mat[j][i];
}
  
// Returns true if mat[N][N] is symmetric, else false
int isSymmetric(int mat[][MAX], int N)
{
    int tr[N][MAX];
    transpose(mat, tr, N);
    for (int i = 0; i < N; i++)
        for (int j = 0; j < N; j++)
            if (mat[i][j] != tr[i][j])
                return 0;
    return 1;
}
  
// Driver code
int main()
{
    int mat[3][3] = { { 1, 3, 5 },
                      { 3, 2, 4 },
                      { 5, 4, 1 } };
  
    if (isSymmetric(mat, 3) == 1)
        printf("Yes");
    else
        printf("No");
    return 0;
}

11.(b)在C中定义数据类型。根据内存大小,格式说明符和范围讨论原始数据类型。

C中的每个变量都有一个关联的数据类型。每种数据类型需要不同数量的内存,并具有一些可以在其上执行的特定操作。让我们对它们进行一个简短的描述:

以下是C中使用的一些非常常见的数据类型的示例:

  • char: C语言中最基本的数据类型。它存储一个字符,并且几乎在所有编译器中都需要一个字节的内存。
  • int:顾名思义,int变量用于存储整数。
  • float:用于存储单精度十进制数(带浮点值的数字)。
  • double:用于存储双精度精度的十进制数字(带浮点值的数字)。

不同的数据类型还可以存储数字的范围也不同。这些范围可能因编译器而异。以下是32位gcc编译器上的范围以及内存要求和格式说明符的列表。

Data Type Memory (bytes) Range Format Specifier
short int 2 -32, 768 to 32, 767 %hd
unsigned short int 2 0 to 65, 535 %hu
unsigned int 4 0 to 4, 294, 967, 295 %u
int 4 -2, 147, 483, 648 to 2, 147, 483, 647 %d
long int 4 -2, 147, 483, 648 to 2, 147, 483, 647 %ld
unsigned long int 4 0 to 4, 294, 967, 295 %lu
long long int 8 -(2^63) to (2^63)-1 %lld
unsigned long long int 8 0 to 18, 446, 744, 073, 709, 551, 615 %llu
signed char 1 -128 to 127 %c
unsigned char 1 0 to 255 %c
float 4 %f
double 8 %lf
long double 12 %Lf

我们可以使用sizeof()运算符来检查变量的大小。

11.(c)在“ C”中列出各种文件操作。编写一个C程序来计算文件中的字符数。
到目前为止,使用C程序的操作是在提示/终端上完成的,该提示/终端没有存储在任何地方。但是在软件行业,大多数程序是编写来存储从程序中获取的信息的。一种这样的方式是将获取的信息存储在文件中。可以对文件执行的不同操作是:

  1. 创建一个新文件(属性为“ a”或“ a +”或“ w”或“ w ++”的fopen)
  2. 打开一个现有文件( fopen )
  3. 从文件读取( fscanf或fgetc )
  4. 写入文件( filePointerrintf或filePointeruts )
  5. 移至文件中的特定位置( fseek,快退)
  6. 关闭文件( fclose )

括号中的文字表示用于执行这些操作的功能。

文件操作中的功能:

12.(a)写下类型转换和类型转换之间的区别。什么是转义字符?
在C语言中,有256个数字字符的字符集。整个字符集分为两部分,即ASCII字符集和扩展的ASCII字符集。但是除此之外,还存在一些其他字符,它们不是任何字符集的一部分,称为ESCAPE字符。

转义序列列表

\a    Alarm or Beep   
\b    Backspace
\f    Form Feed
\n    New Line
\r    Carriage Return
\t    Tab (Horizontal)
\v    Vertical Tab
\\    Backslash
\'    Single Quote
\"    Double Quote
\?    Question Mark
\ooo  octal number
\xhh  hexadecimal number
\0    Null

例子:

// C program to illustrate
// \b escape sequence
#include 
int main(void)
{
    // \b - backspace character transfers
    // the cursor one character back with
    // or without deleting on different
    // compilers.
    printf("Hello Geeks\b\b\b\bF");
    return (0);
}

输出:

The output is dependent upon compiler.

12.(b)C语言中的运算符哪些不同类型,还应写下运算符的关联性和优先级之间的区别。

运算符是任何编程语言的基础。因此,如果不使用运算符,则C / C++编程语言的功能是不完整的。我们可以将运算符定义为符号,以帮助我们对操作数执行特定的数学和逻辑计算。换句话说,我们可以说运算符对操作数进行运算。
例如,考虑以下语句:

c = a + b;

这里,“+”是被称为加法运算符和“a”和“b”是操作数运算符。加法运算符告诉编译器将操作数“ a”和“ b”相加。 C / C++具有许多内置的运算符类型,它们可以分类为:

  • 算术运算符:这些运算符用于对操作数执行算术/数学运算。示例:(+,-,*,/,%,++,–)。
  • 关系运算符:关系运算符用于比较两个操作数的值。例如:检查一个操作数是否等于另一个操作数,一个操作数是否大于另一个操作数,等等。一些关系运算符是(==,> =,<=)。要详细了解这些运算符,请访问此链接。
  • 逻辑运算符:逻辑运算符用于组合两个或多个条件/约束或补充所考虑的原始条件的评估。逻辑运算符是布尔值true或false。要详细了解不同的逻辑运算符,请访问此链接。
  • 按位运算符:按位运算符用于对操作数执行位级运算。首先将运算符转换为位级别,然后对操作数进行计算。诸如加法,减法,乘法等数学运算可在位级别执行,以加快处理速度。要详细了解按位运算运算符,请访问此链接。
  • 赋值运算符:赋值运算符用于将值分配给变量。赋值运算符的左侧操作数是一个变量,而赋值运算符的右侧操作数是一个值。右侧的值必须与左侧的变量的数据类型相同。否则编译器将引发错误。
  • 其他运算符:除了上述运算符外,还有其他一些C或C++运算符可用于执行某些特定任务。这里讨论其中一些:
    • sizeof运算符:sizeof在C / C++编程语言中被大量使用。它是一个编译时一元运算运算符,可用于计算其操作数的大小。 sizeof的结果是无符号整数类型,通常用size_t表示。基本上,sizeof运算符用于计算变量的大小。要详细了解sizeof运算符,您可以访问此链接。
    • 逗号运算符:逗号运算符(用标记表示)是一个二进制运算符,它求值第一个操作数并丢弃结果,然后求值第二个操作数并返回该值(和类型)。逗号运算符的优先级是所有C运算符符中的最低。逗号既充当运算符,又充当分隔符。要详细了解逗号,请访问此链接。
    • 条件运算符:条件运算符的形式为Expression1吗? Expression2:Expression3 。此处,表达式1是要评估的条件。如果condition(Expression1)为True ,则将执行并返回Expression2的结果;否则,如果condition(Expression1)为false ,则将执行并返回Expression3的结果。我们可以替换条件运算符对if..else语句的使用。要详细了解条件运算符,请访问此链接。