以下程序可以逐行输出由language数组元素所指向的5个字符串。
#include
int main(void)
{
const char *language[] = {"BASIC", "FORTRAN", "PROLOG", "JAVA", "C++" } ;
const char 【 填空 】;
int k;
for(k = 0 ; k < 5 ; k++) {
【 填空 】;
printf ("%s\n", *q);
}
return 0;
}
第一空:
**q
第二空
q = &language[k]
完整代码:
#include<stdio.h>
int main(void)
{
const char *language[] = {"BASIC", "FORTRAN", "PROLOG", "JAVA", "C++" } ;
const char **q; // 双重指针,指向字符指针的指针
int k;
int k;
for(k = 0 ; k < 5 ; k++) {
q = &language[k];// 取地址符&获取当前语言字符串的地址赋给q
printf ("%s\n", *q);// 用间接寻址符获取q所指向的字符串并输出
}
return 0;
}
运行结果:
运行结果如下:
以下是填空后的程序:
#include<stdio.h>
int main(void)
{
const char *language[] = {"BASIC", "FORTRAN", "PROLOG", "JAVA", "C++" } ;
const char **q; // 填空处
int k;
for(k = 0 ; k < 5 ; k++) {
q = &language[k]; // 填空处
printf ("%s\n", *q);
}
return 0;
}
解释:
在这个程序中,language数组包含了5个指向字符串常量的指针。要输出这些字符串,我们需要使用指针数组和指针的指针来完成。
首先,在第一个填空处,我们需要定义一个指向指针的指针q。这是因为我们需要让q指向每个字符串的指针,而每个字符串的指针又存储在language数组中。
然后,在for循环中,我们使用q = &language[k]语句将q指向当前字符串的指针。注意,&language[k]返回的是指向指针的指针,所以q的类型应该是const char **。
最后,我们使用printf("%s\n", q)语句输出字符串。由于q是一个指向字符串的指针,因此我们可以直接将它传递给printf函数,并使用%s格式指定符打印字符串。
第一个空 **q=language;
第二个空 q+=k;
估计主要考指针的运算
它定义了一个指向字符串的指针数组 language,并且使用一个循环来逐行输出数组中的字符串。要使程序能够正常运行,需要在第 6 行填写 **q,在第 10 行填写 q = &language [k];。这样,q 指针将指向 language 数组中的每个元素,并且在循环中逐个输出。
完整的程序如下所示:
#include<stdio.h>
int main(void)
{
const char *language[] = {"BASIC", "FORTRAN", "PROLOG", "JAVA", "C++" } ;
const char **q;
int k;
for(k = 0 ; k < 5 ; k++) {
q = &language [k];
printf ("%s\n", *q);
}
return 0;
}
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
这道程序填空题需要我们使用指针数组来输出字符串。下面是具体的解答:
#include<stdio.h>
int main(void){
const char *language[] = {"BASIC", "FORTRAN", "PROLOG", "JAVA", "C++" } ;
const char **q; //使用指向指针的指针
int k;
for(k = 0 ; k < 5 ; k++) {
q = &language[k]; //将指针数组元素的地址赋值给指向指针的指针
printf ("%s\n", *q); //输出指向指针的指针所指向的字符串
}
return 0;
}
在程序中,我们定义了一个指向指针的指针 q
,用于存储指针数组元素的地址。在循环中,我们将指针数组元素的地址赋值给 q
,然后使用 *q
来输出指向指针的指针所指向的字符串。这样就可以逐行输出指针数组中存储的字符串了。
输出结果如下:
BASIC
FORTRAN
PROLOG
JAVA
C++
如果我的回答解决了您的问题,请采纳!
引用chatGPT作答,
第一空: **q
第二空:q = &language[k]
在上面的程序中,应该在第6行中填写 const char **q; 以声明一个指向指针的指针变量,这是因为 language 数组的每个元素都是一个指向 char 类型的指针,因此我们需要一个指向这些指针的指针变量来访问它们。
在第10行中,应该填写 q = &language[k]; 以将 q 指向当前 language 数组元素的地址。然后在第11行中,我们使用 *q 访问当前 language 数组元素指向的字符串,并将其作为参数传递给 printf 函数以打印它。
填空代码如下:
c
const char *language[] = {"BASIC", "FORTRAN", "PROLOG", "JAVA", "C++" } ;
const char *q;
int k;
for(k = 0 ; k < 5 ; k++) {
q = language[k];
printf ("%s\n", *q);
}
return 0;
}
解释:
答案:
指针数组的定义:const char *language[] = {"C", "C++", "Java", "Python", "JavaScript"};
逐行输出所指向的字符串:
for(int i = 0; i < 5; i++){
printf("%s\n", language[i]);
}
解释:首先,我们需要定义一个指针数组,其中每个指针指向一个字符串常量,用const char 来修饰,表示这些字符串不能被修改。所以,指针数组的定义为const char language[] = {"C", "C++", "Java", "Python", "JavaScript"};。
然后,我们需要逐行输出这些字符串,只需要使用for循环遍历指针数组,每次输出对应指针所指向的字符串即可,即printf("%s\n", language[i])。其中,%s表示输出的是一个字符串,\n表示换行,i表示循环变量,从0到4依次输出。