高级语言程序设计课程第八次个人作业

这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/gjyycx
这个作业要求在哪里: https://edu.cnblogs.com/campus/fzu/gjyycx/homework/15590
学号:102500430
姓名:黄华烨
编写并运行书本第11章11.13编程练习题目中的第1~3,6,7题。
1、设计并测试一个函数,从输入中获取n个字符(包括空白、制表符、换行符),把结果存储在一个数组里,它的地址被传递作为一个参数。
11.13编程练习1
2、修改并编程练习1的函数,在n个字符后停止,或在读到第1个空白、制表符或换行符时停止,哪个先遇到哪个停止。不能只使用scanf()
11.13编程练习2
3、设计并测试一个函数,从一行输入中把一个单词读入一个数组中,并丢弃输入行中的其余字符。该函数应该跳过第1个非空白字符前面的所有空白。将一个单词定义为没有空白、制表符或换行符的字符序列。
11.13编程练习3
6.编写一个名为is_within()的函数,接受一个字符和一个指向字符串的指针作为两个函数形参。如果指定字符在字符串中,该函数返回一个非零值(即为真)。否则,返回0(即为假)。在一个完整的程序中测试该函数,使用一个循环给函数提供输入值。
11.13编程练习6
7. strncpy(s1,s2, n)函数把s2中的n个字符拷贝至s1中,截断s2,或者有必要的话在末尾添加空字符。如果s2的长度是n或多于n,目标字符串不能以空字符结尾。该函数返回s1。自己编写一个这样的函数,名为mystrncpy()。在一个完整的程序中测试该函数,使用一个循环给函数提供输入值。
11.13编程练习7
编写并运行书本第12章12.9编程练习题目中的第1~3,8,9题。
1、不使用全局变量,重写程序清单12.4

include<stdio.h>

int units=0;
void critic(void){
printf("No luck,my friend.Try again.");
scanf("%d",&units);
}
int main(){
extern int units;
printf("How many pounds to a firkin of butter?\n");
scanf("%d",&units);
while(units!=56)
critic();
printf("You must have looked it up!\n");
return 0;
}
12.9编程练习1
2、在美国,通常以英里/加仑来计算油耗:在欧洲,以升/100 公里来计算。下面是程序的一部分,提示用户选择计算模式(美制或公制),然后接收数据并计算油耗。
// pe12-2b.c
//与 pe12-2a.c 一起编译

include <stdio.h>

include "pe12-2a.h"

int main (void){
int mode;
printf("Enter 0 for metric mode, 1 for us mode:");
scanf("gd", &mode);
while (mode >= 0){
set mode (mode);
get info();
show info();
printf("Enter 0 for metric mode, 1 for Us mode");
printf(" (-1 to quit):");
scanf("gd", &mode);printf("Done. ln");
}
return 0;
}
下面是是一些输出示例:
Enter O for metric mode, 1 for US mode:0Enter distance traveled in kilometers:600Enter fuel consumed in liters:78.8
Fuel consumption is 13.13 liters per 100 km.
Enter 0 for metric mode, l for US mode (-1 to quit):1
Enter distance traveled in miles:434
Enter fuel consumed in gallons:12.7
Fuel consumption is 34.2 miles per gallon.
Enter 0 for metric mode, l for US mode (-1 to quit):3Invalid mode specified. Mode 1 (US) used.
Enter distance traveled in miles:388Enter fuel consumed in gallons:15.3
Fuel consumption is 25.4 miles per gallon.
Enter 0 for metric mode, 1 for US mode (-1 to quit):-1Done.
如果用户输入了不正确的模式,程序向用户给出提示消息并使用上一次输入的正确模式。请提供pe12-2a,h头文件和pe12-2a.c源文件。源代码文件应定义3个具有文件作用域、内部链接的变量。一个表示模式、一个表示距离、一个表示消耗的燃料。get info()函数根据用户输入的模式提示用户输入相应数据,并将其存储到文件作用域变量中。show info()函数根据设置的模式计算并显示油耗。可以假设用户输入的都是数值数据。
pe12_2a.h
12.9编程练习2(pe12_2a.h)
pe12_2a.c
12.9编程练习2(pe12_2a.c)
12.9编程练习2.cpp
12.9编程练习2
3.重新设计编程练习2,要求只使用自动变量。该程序提供的用户界面不变,即提示用户输入模式等。但是,函数调用要作相应变化。
pe12_2a.h
12.9编程练习3(pe12_2a.h)
pe12_2a.c
12.9编程练习3(pe12_2a.c)
12.9编程练习3.cpp
12.9编程练习3
8.下面是程序的一部分:
// pe12-8.C

include <stdio.h>

int * make array(int elem, int val);
void show_array (const int ar []), int n);
int main(void){
int * pa;
int size;
int value;
printf ("Enter the number of elements:");
while (scanf ("8d", &size) e= 1 && size > 0){
printf ("Enter the initialization value:");
scanf("d", &value);
pa = make_array(size, value);
if (pa){
show_array(pa, size);
free (pa);
}
printf("Enter the number of elements (<1 to quit):");
}
printf("Done.In");
return 0;
}
提供make_array()和 show array()函数的定义,完成该程序。make array()函数接受两个参数,第1个参数是 int 类型数组的元素个数,第2个参数是要赋给每个元素的值。该函数调用malloc ()创建一个大小合适的数组,将其每个元素设置为指定的值,并返回一个指向该数组的指针。show_array()函数显示数组的内容,一行显示8个数。
12.9编程练习8
9.编写一个符合以下描述的函数。首先,询问用户需要输入多少个单词。然后,接收用户输入的单词,并显示出来,使用 malloc()并回答第1个问题(即要输入多少个单词),创建一个动态数组,该数组内含相应的指向char的指针(注意,由于数组的每个元素都是指向char的指针,所以用于存储malloc()返回值的指针应该是一个指向指针的指针,且它所指向的指针指向char)。在读取字符串时,该程序应该把单词读入一个临时的char数组,使用malloc()分配足够的存储空间来存储单词,并把地址存入该指针数组(该数组中每个元素都是指向 char 的指针)。然后,从临时数组中把单词拷贝到动态分配的存储空间中。因此,有一个字符指针数组,每个指针都指向一个对象,该对象的大小正好能容纳被存储的特定单词。下面是该程序的一个运行示例:
How many words do you wish to enter?5Enter 5 words now;
I enjoyed doing this exercise Here are your words;
enjoyed
doing
this
exercise
12.9编程练习9

总结&思考
这次要学的蛮多的...主要掌握了字符串及相关函数的运用,以及分配内存函数malloc()(一定要加上free())

posted @ 2025-12-08 16:13  昏鸦Promise  阅读(0)  评论(0)    收藏  举报