c语言基础这几个该怎么搞

img

img


实在不会搞关于文件这几个
不会传,唉
要求使用最开始那个main(int argc,char*const *argv)划重点!!

第一题


```c
#include <stdio.h>

int main(int argc, char *argv[]) {
    if (argc < 2) {
        printf("请提供文件名作为参数\n");
        return 1;
    }

    // 打开文件
    FILE *file = fopen(argv[1], "w");
    if (!file) {
        printf("无法打开文件: %s\n", argv[1]);
        return 1;
    }

    // 在文件中打印九九乘法表
    for (int i = 1; i <= 9; i++) {
        for (int j = 1; j <= 9; j++) {
            fprintf(file, "%d * %d = %d\n", i, j, i * j);
        }
    }

    // 关闭文件
    fclose(file);

    return 0;
}



第二题

```c
#include <stdio.h>
#include <ctype.h>

int main()
{
    // 从键盘输入一个字符串
    printf("请输入一个字符串(以'!'结束):\n");
    char line[256];
    fgets(line, sizeof(line), stdin);

    // 把字符串中的小写字母全部转换成大写字母
    int i;
    for (i = 0; line[i] != '\0'; i++) {
        line[i] = toupper(line[i]);
    }

    // 将字符串保存到文件中
    FILE *fp = fopen("test.txt", "w");
    fputs(line, fp);
    fclose(fp);

    // 从文件中读取字符串,把其转换成小写字母并打印到屏幕上
    fp = fopen("test.txt", "r");
    fgets(line, sizeof(line), fp);
    fclose(fp);

    for (i = 0; line[i] != '\0'; i++) {
        line[i] = tolower(line[i]);
    }
    printf("读取文件中的字符串:%s\n", line);

    return 0;
}


第三题

#include <stdio.h>

#define NUM_STUDENTS 5   // 定义学生数量
#define NUM_COURSES 3    // 定义每个学生的课程数量

typedef struct {        // 定义学生信息结构体
    int id;             // 学号
    char name[20];      // 姓名
    int scores[3];      // 成绩
    float average;      // 平均分
} Student;

int main()
{
    int i, j;
    Student students[NUM_STUDENTS];   // 定义学生信息结构体数组
    
    // 从键盘输入学生数据
    for (i = 0; i < NUM_STUDENTS; i++) {
        printf("请输入第%d个学生的信息:\n", i + 1);
        printf("学号:");
        scanf("%d", &students[i].id);
        printf("姓名:");
        scanf("%s", students[i].name);
        for (j = 0; j < NUM_COURSES; j++) {
            printf("第%d门课的成绩:", j + 1);
            scanf("%d", &students[i].scores[j]);
        }
    }

    // 计算平均成绩
    for (i = 0; i < NUM_STUDENTS; i++) {
        int sum = 0;
        for (j = 0; j < NUM_COURSES; j++) {
            sum += students[i].scores[j];
        }
        students[i].average = (float)sum / NUM_COURSES;
    }

    // 将原有数据和平均成绩存放到文件中
    FILE *fp = fopen("students.txt", "w");
    for (i = 0; i < NUM_STUDENTS; i++) {
        fprintf(fp, "%d %s %d %d %d %.2f\n",
                students[i].id, students[i].name,
                students[i].scores[0], students[i].scores[1],
                students


第四题

#include <stdio.h>

int main()
{
    // 定义文件名
    char file1[] = "file1.txt";
    char file2[] = "file2.txt";

    // 打开文件,以追加模式打开 file1
    FILE *fp1 = fopen(file1, "a");
    if (fp1 == NULL) {
        printf("无法打开文件%s!\n", file1);
        return 1;
    }

    // 打开文件,以读模式打开 file2
    FILE *fp2 = fopen(file2, "r");
    if (fp2 == NULL) {
        printf("无法打开文件%s!\n", file2);
        return 1;
    }

    // 从 file2 中读取一行,追加到 file1 末尾
    char line[256];
    while (fgets(line, sizeof(line), fp2) != NULL) {
        fputs(line, fp1);
    }

    // 关闭文件
    fclose(fp1);
    fclose(fp2);

    return 0;
}


第五题
1:

#include <stdio.h>
#include <stdlib.h>

// 定义函数 Nw,对 n 个字符开辟连续的存储空间
char *Nw(int n)
{
    char *p = (char *)malloc(n);
    if (p == NULL) {
        printf("分配内存空间失败!\n");
        exit(1);
    }
    return p;
}

int main()
{
    // 调用 Nw 函数,分配内存空间
    char *p = Nw(10);

    // 向内存空间写入数据
    sprintf(p, "Hello World");

    // 打印存储在内存空间中的字符串
    printf("%s\n", p);

    // 释放内存空间
    free(p);

    return 0;
}


2:

#include <stdio.h>
#include <stdlib.h>

// 定义函数 Nw,对 n 个字符开辟连续的存储空间
char *Nw(int n)
{
    char *p = (char *)malloc(n);
    if (p == NULL) {
        printf("分配内存空间失败!\n");
        exit(1);
    }
    return p;
}

// 定义函数 Free,将指定的内存段释放
void Free(char *p)
{
    free(p);
}

int main()
{
    // 调用 Nw 函数,分配内存空间
    char *p = Nw(10);

    // 向内存空间写入数据
    sprintf(p, "Hello World");

    // 打印存储在内存空间中的字符串
    printf("%s\n", p);

    // 调用 Free 函数,释放内存空间
    Free(p);

    return 0;
}


呃~这不都是基础题吗

如有帮助,望采纳

1
#include<stdio.h>
int main()
{
    int i = 0;
    int j = 0;
    for (i = 1; i <= 9; i++)
    {
        for (j = 1; j <= i; j++)
        {
            printf("%d*%d=%-4d",j,i,j*i);//注意左对齐格式
        }
        printf("\n");
    }
    return 0;
}

2 
//导入头文件
#include<stdio.h>
#include<stdlib.h>
 
//主函数
int main(){
    FILE*fp=NULL;//定义文件指针,初始为空 
    char filename[25];//字符数组,存储字符,容量25 
    char ch;//字符变量,记录字符 
    printf("请输入文件名称:");//信息提示 
    gets(filename);//获取文件名 
    //判断文件创建是否成功 
    if((fp=fopen(filename,"w"))==NULL){
        printf("打开文件失败!\n");
        exit(0);
    }
    printf("请输入要保存的字符,以#结束:\n");
    getchar();
    while((ch=getchar())!='#'){
        fputc(ch,fp);//字符写入文件中 
    }
    fclose(fp);//关闭文件 
    return 0;
}
3
#include <stdio.h>

#include <stdlib.h>
#define ARRAY_LEN 100   /*数组长度*/

/*定义学生结构体*/

typedef struct {

int no; /*学号*/

float score1; /*成绩1*/

float score2; /*成绩2*/

float score3; /*成绩3*/

float totalScore; /*总分*/

float averageScore; /*平均分*/

} student;

/*输入学生信息*/

void inputInfo (student stu[], int stuIndex) {

int i;

printf ("第%d名学生↓\n", stuIndex+1);

printf ("学号:");

scanf ("%d",&stu[stuIndex].no);

printf ("成绩1:");

scanf ("%f",&stu[stuIndex].score1);

printf ("成绩2:");

scanf ("%f",&stu[stuIndex].score2);

printf ("成绩3:");

scanf ("%f",&stu[stuIndex].score3);

putchar ('\n');

}

/*计算平均成绩*/

void calculationScore (student stu[], int stuIndex) {

stu[stuIndex].totalScore=stu[stuIndex].score1+stu[stuIndex].score2+stu[stuIndex].score3;

stu[stuIndex].averageScore=stu[stuIndex].totalScore/3; 

} /*输出学生成绩*/
void printInfo (student stu[], int stuIndex) {

int i;

printf ("%d\t",stu[stuIndex].no);

printf ("%.2f\t",stu[stuIndex].score1);

printf ("%.2f\t",stu[stuIndex].score2);

printf ("%.2f\t",stu[stuIndex].score3);

printf ("%.2f",stu[stuIndex].averageScore);

putchar ('\n');

}

int main (void) {

int stuNum=5,i;

student stu[ARRAY_LEN];

/*输入、计算*/

puts ("请输入学生信息:");

putchar ('\n');

for (i=0; i<stuNum; i++) {

inputInfo (stu,i);

calculationScore (stu,i);

}

putchar ('\n');

printf ("%d名学生成绩输入完毕!", stuNum);

putchar ('\n');

puts ("================================================\n");

/*输出*/

puts ("学号\t成绩1\t成绩2\t成绩3\t平均成绩");

for (i=0; i<stuNum; i++)

printInfo (stu,i);

getch (); /*屏幕暂留*/

return 0;

}
4
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
 
#define FILE_NAME "demo.txt" // 文件名称
 
int main()
{
    FILE* fp = NULL; // 文件指针
    char* szAppendStr = "Text";
    errno_t eResult;
 
    // 以附加方式打开可读/写的文件, 如果没有此文件则会进行创建,然后以附加方式打开可读/写的文件
    eResult = fopen_s(&fp, FILE_NAME, "a+");
 
    // 打开文件失败
    if (eResult != 0)
        exit(-1);
 
    // 将追加内容写入文件指针当前的位置
    fputs(szAppendStr, fp);
 
    // 最后不要忘了,关闭打开的文件~~~
    fclose(fp);
    return 0;
}